diff options
Diffstat (limited to 'src/main/java/net/cflems/mc/sandbox/commands/Enchant.java')
| -rw-r--r-- | src/main/java/net/cflems/mc/sandbox/commands/Enchant.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/main/java/net/cflems/mc/sandbox/commands/Enchant.java b/src/main/java/net/cflems/mc/sandbox/commands/Enchant.java new file mode 100644 index 0000000..66ea806 --- /dev/null +++ b/src/main/java/net/cflems/mc/sandbox/commands/Enchant.java @@ -0,0 +1,55 @@ +package net.cflems.mc.sandbox.commands; + +import java.util.Locale; +import java.util.function.Consumer; +import net.cflems.mc.sandbox.PlayerTargetedCommand; +import net.cflems.mc.sandbox.Sandbox; +import org.bukkit.NamespacedKey; +import org.bukkit.Registry; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +public final class Enchant extends PlayerTargetedCommand { + private static final int MIN_ARGS = 1; + private static final int MAX_ARGS = 2; + private static final String PERMISSION = Sandbox.PERMISSION_NAMESPACE + ".enchant"; + private static final String PERMISSION_MESSAGE = "You do not have permission to enchant items."; + private static final String OTHERS_PERMISSION_MESSAGE = + "You do not have permission to enchant other people's items."; + + public Enchant() { + super(MIN_ARGS, MAX_ARGS, PERMISSION, PERMISSION_MESSAGE, OTHERS_PERMISSION_MESSAGE); + } + + @Override + protected boolean execute(Player player, String _label, String[] args, Consumer<String> respond) { + NamespacedKey enchantmentKey = NamespacedKey.fromString(args[0].toLowerCase(Locale.ROOT)); + Enchantment enchantment = + enchantmentKey != null ? Registry.ENCHANTMENT.get(enchantmentKey) : null; + if (enchantment == null) { + respond.accept("No such enchantment was found."); + return true; + } + + int level; + if (args.length < 2) level = 1; + else { + try { + level = Integer.parseInt(args[1]); + } catch (NumberFormatException _e) { + level = -1; + } + if (level < 0 || level > 255) { + respond.accept("Level must be a valid integer between 0 and 255."); + return true; + } + } + + ItemStack mhItem = player.getInventory().getItemInMainHand(); + if (level > 0) mhItem.addUnsafeEnchantment(enchantment, level); + else mhItem.removeEnchantment(enchantment); + respond.accept("Item enchanted successfully."); + return true; + } +} |
