From 4a1eb8a85f430e4405b5a9c56495fbe277b4bff8 Mon Sep 17 00:00:00 2001 From: HeroBrineGoat <76707404+MasterOfTheFish@users.noreply.github.com> Date: Sun, 16 Jan 2022 16:06:10 -0500 Subject: [PATCH] Added remove cosmetic command --- .../command/CosmeticsCommand.java | 62 ++++++++++++++++++- .../hmccosmetics/gui/ArmorItem.java | 11 ++++ .../fisher2911/hmccosmetics/user/User.java | 25 +++----- 3 files changed, 80 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/command/CosmeticsCommand.java b/src/main/java/io/github/fisher2911/hmccosmetics/command/CosmeticsCommand.java index d0f7e7e2..cb36113a 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/command/CosmeticsCommand.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/command/CosmeticsCommand.java @@ -18,6 +18,7 @@ import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Map; import java.util.Optional; @Command("cosmetics") @@ -99,7 +100,7 @@ public class CosmeticsCommand extends CommandBase { @SubCommand("add") @Permission(io.github.fisher2911.hmccosmetics.message.Permission.SET_COSMETIC_COMMAND) - public void setCommand(final CommandSender sender, final Player player, @Completion("#ids") final String id) { + public void setCommand(final CommandSender sender, @Completion("#players") final Player player, @Completion("#ids") final String id) { final Optional userOptional = this.userManager.get(player.getUniqueId()); if (userOptional.isEmpty()) { @@ -133,7 +134,7 @@ public class CosmeticsCommand extends CommandBase { sender, Messages.SET_OTHER_BACKPACK, Map.of(Placeholder.PLAYER, player.getName(), - Placeholder.ITEM, id) + Placeholder.TYPE, id) ); } case HAT -> { @@ -146,10 +147,65 @@ public class CosmeticsCommand extends CommandBase { sender, Messages.SET_OTHER_HAT, Map.of(Placeholder.PLAYER, player.getName(), - Placeholder.ITEM, id) + Placeholder.TYPE, id) ); } } } + @SubCommand("remove") + @Permission(io.github.fisher2911.hmccosmetics.message.Permission.SET_COSMETIC_COMMAND) + public void removeCommand(final CommandSender sender, @Completion("#players") final Player player, @Completion("#types") String typeString) { + final Optional userOptional = this.userManager.get(player.getUniqueId()); + + if (userOptional.isEmpty()) { + this.messageHandler.sendMessage( + sender, + Messages.INVALID_USER + ); + return; + } + + final User user = userOptional.get(); + + try { + final ArmorItem.Type type = ArmorItem.Type.valueOf(typeString.toUpperCase()); + + switch (type) { + case HAT -> { + user.removeHat(this.userManager); + this.messageHandler.sendMessage( + player, + Messages.REMOVED_HAT + ); + this.messageHandler.sendMessage( + sender, + Messages.SET_OTHER_HAT, + Map.of(Placeholder.PLAYER, player.getName(), + Placeholder.TYPE, "none") + ); + } + case BACKPACK -> { + user.removeBackpack(); + this.messageHandler.sendMessage( + player, + Messages.REMOVED_BACKPACK + ); + this.messageHandler.sendMessage( + sender, + Messages.SET_OTHER_BACKPACK, + Map.of(Placeholder.PLAYER, player.getName(), + Placeholder.TYPE, "none") + ); + } + } + } catch (final IllegalArgumentException exception) { + this.messageHandler.sendMessage( + player, + Messages.INVALID_TYPE); + } + + + } + } diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/gui/ArmorItem.java b/src/main/java/io/github/fisher2911/hmccosmetics/gui/ArmorItem.java index 6f5078a3..3c5c2daa 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/gui/ArmorItem.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/gui/ArmorItem.java @@ -9,6 +9,7 @@ import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.List; public class ArmorItem extends GuiItem { @@ -144,6 +145,16 @@ public class ArmorItem extends GuiItem { this.dyeable = dyeable; } + public static ArmorItem empty(final Type type) { + return new ArmorItem( + new ItemStack(Material.AIR), + "", + new ArrayList<>(), + "", + type + ); + } + public String getId() { return id; } diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/user/User.java b/src/main/java/io/github/fisher2911/hmccosmetics/user/User.java index 0ec8ff89..77200bda 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/user/User.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/user/User.java @@ -64,6 +64,14 @@ public class User { this.setPlayerArmor(PlayerArmor.empty()); } + public void removeHat(final UserManager userManager) { + this.setHat(ArmorItem.empty(ArmorItem.Type.HAT), userManager); + } + + public void removeBackpack() { + this.setBackpack(ArmorItem.empty(ArmorItem.Type.BACKPACK)); + } + public int getArmorStandId() { return armorStandId; } @@ -85,13 +93,7 @@ public class User { } if (backpack.getId().equals(this.playerArmor.getBackpack().getId())) { - this.setBackpack(new ArmorItem( - new ItemStack(Material.AIR), - "", - new ArrayList<>(), - "", - ArmorItem.Type.BACKPACK - )); + this.setBackpack(ArmorItem.empty(ArmorItem.Type.BACKPACK)); messageHandler.sendMessage( player, @@ -130,14 +132,7 @@ public class User { } if (hat.getId().equals(this.playerArmor.getHat().getId())) { - this.setHat(new ArmorItem( - new ItemStack(Material.AIR), - "", - new ArrayList<>(), - "", - ArmorItem.Type.HAT - ), - userManager); + this.setHat(ArmorItem.empty(ArmorItem.Type.BACKPACK), userManager); messageHandler.sendMessage( player,