From f46a48a21357418e5c22e4c964353a8a5fe2de50 Mon Sep 17 00:00:00 2001 From: HeroBrineGoat <76707404+MasterOfTheFish@users.noreply.github.com> Date: Mon, 15 Nov 2021 00:16:07 -0500 Subject: [PATCH] Added tab completions to dye command --- .../fisher2911/hmccosmetics/HMCCosmetics.java | 10 ++++++++ .../command/CosmeticsCommand.java | 23 ++++++++++++------- .../hmccosmetics/message/Messages.java | 2 ++ src/main/resources/messages.yml | 3 ++- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/HMCCosmetics.java b/src/main/java/io/github/fisher2911/hmccosmetics/HMCCosmetics.java index 3822aa8c..a01e93c6 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/HMCCosmetics.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/HMCCosmetics.java @@ -4,6 +4,7 @@ import com.comphenix.protocol.ProtocolLib; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolManager; import io.github.fisher2911.hmccosmetics.command.CosmeticsCommand; +import io.github.fisher2911.hmccosmetics.gui.ArmorItem; import io.github.fisher2911.hmccosmetics.gui.CosmeticsMenu; import io.github.fisher2911.hmccosmetics.listener.ClickListener; import io.github.fisher2911.hmccosmetics.listener.JoinListener; @@ -14,7 +15,9 @@ import io.github.fisher2911.hmccosmetics.user.UserManager; import me.mattstudios.mf.base.CommandManager; import org.bukkit.plugin.java.JavaPlugin; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class HMCCosmetics extends JavaPlugin { @@ -64,6 +67,13 @@ public class HMCCosmetics extends JavaPlugin { ) ); + this.commandManager.getCompletionHandler().register("#types", + resolver -> + Arrays.stream(ArmorItem.Type. + values()). + map(ArmorItem.Type::toString). + collect(Collectors.toList()) + ); this.commandManager.register(new CosmeticsCommand(this)); } 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 c6d7d5ef..e94a7800 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/command/CosmeticsCommand.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/command/CosmeticsCommand.java @@ -9,6 +9,7 @@ import io.github.fisher2911.hmccosmetics.message.Messages; import io.github.fisher2911.hmccosmetics.user.User; import io.github.fisher2911.hmccosmetics.user.UserManager; import me.mattstudios.mf.annotations.Command; +import me.mattstudios.mf.annotations.Completion; import me.mattstudios.mf.annotations.Default; import me.mattstudios.mf.annotations.Permission; import me.mattstudios.mf.annotations.SubCommand; @@ -59,7 +60,7 @@ public class CosmeticsCommand extends CommandBase { @SubCommand("dye") @Permission(io.github.fisher2911.hmccosmetics.message.Permission.DYE_COMMAND) - public void dyeArmor(final Player player, String typeString) { + public void dyeArmor(final Player player, @Completion("#types") String typeString) { final Optional optionalUser = this.userManager.get(player.getUniqueId()); @@ -67,16 +68,22 @@ public class CosmeticsCommand extends CommandBase { return; } - final ArmorItem.Type type = ArmorItem.Type.valueOf(typeString); + try { + final ArmorItem.Type type = ArmorItem.Type.valueOf(typeString.toUpperCase()); - final User user = optionalUser.get(); + final User user = optionalUser.get(); - final ArmorItem armorItem = switch (type) { - case HAT -> user.getPlayerArmor().getHat(); - case BACKPACK -> user.getPlayerArmor().getBackpack(); - }; + final ArmorItem armorItem = switch (type) { + case HAT -> user.getPlayerArmor().getHat(); + case BACKPACK -> user.getPlayerArmor().getBackpack(); + }; - this.cosmeticsMenu.openDyeSelectorGui(user, armorItem); + this.cosmeticsMenu.openDyeSelectorGui(user, armorItem); + } catch (final IllegalArgumentException exception) { + this.messageHandler.sendMessage( + player, + Messages.INVALID_TYPE); + } } } diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/message/Messages.java b/src/main/java/io/github/fisher2911/hmccosmetics/message/Messages.java index c493981c..b2e0f083 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/message/Messages.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/message/Messages.java @@ -16,4 +16,6 @@ public class Messages { new Message("must-be-player", "You must be a player to do this!"); public static final Message RELOADED = new Message("reloaded", "Config reloaded"); + public static final Message INVALID_TYPE = + new Message("invalid-type", "Invalid type"); } diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index 26c5b58a..20e15636 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -4,4 +4,5 @@ removed-hat: "Removed Hat" set-backpack: "Set Backpack!" removed-backpack: "Removed Backpack" must-be-player: "You must be a player to do this!" -reloaded: "Config files reloaded" \ No newline at end of file +reloaded: "Config files reloaded" +invalid-type: "Invalid cosmetic type, please use hat or backpack" \ No newline at end of file