summaryrefslogtreecommitdiff
path: root/src/main/java/net/cflems/mc/sandbox/commands/Enchant.java
diff options
context:
space:
mode:
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.java55
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;
+ }
+}