diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java index 21150194..249493be 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java @@ -9,6 +9,7 @@ import com.willfp.eco.util.TelekinesisUtils; import com.willfp.ecoenchants.command.commands.CommandEcodebug; import com.willfp.ecoenchants.command.commands.CommandEcoreload; import com.willfp.ecoenchants.command.commands.CommandEnchantinfo; +import com.willfp.ecoenchants.command.commands.CommandGiverandombook; import com.willfp.ecoenchants.command.commands.CommandRandomenchant; import com.willfp.ecoenchants.command.tabcompleters.TabCompleterEnchantinfo; import com.willfp.ecoenchants.config.RarityYml; @@ -182,7 +183,8 @@ public class EcoEnchantsPlugin extends EcoPlugin { new CommandEcodebug(this), new CommandEcoreload(this), new CommandEnchantinfo(this), - new CommandRandomenchant(this) + new CommandRandomenchant(this), + new CommandGiverandombook(this) ); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandGiverandombook.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandGiverandombook.java new file mode 100644 index 00000000..eaeb9316 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandGiverandombook.java @@ -0,0 +1,64 @@ +package com.willfp.ecoenchants.command.commands; + +import com.willfp.eco.core.EcoPlugin; +import com.willfp.eco.core.command.AbstractCommand; +import com.willfp.eco.core.command.AbstractTabCompleter; +import com.willfp.eco.util.NumberUtils; +import com.willfp.ecoenchants.command.tabcompleters.TabCompleterRandomEnchant; +import com.willfp.ecoenchants.display.EnchantmentCache; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class CommandGiverandombook extends AbstractCommand { + /** + * Instantiate a new /ecoreload command handler. + * + * @param plugin The plugin for the commands to listen for. + */ + public CommandGiverandombook(@NotNull final EcoPlugin plugin) { + super(plugin, "giverandombook", "ecoenchants.randombook", false); + } + + @Override + public AbstractTabCompleter getTab() { + return new TabCompleterRandomEnchant(this); + } + + @Override + public void onExecute(@NotNull final CommandSender sender, + @NotNull final List args) { + if (args.isEmpty()) { + sender.sendMessage(this.getPlugin().getLangYml().getMessage("requires-player")); + return; + } + Player player = Bukkit.getServer().getPlayer(args.get(0)); + + if (player == null) { + sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-player")); + return; + } + + ItemStack itemStack = new ItemStack(Material.ENCHANTED_BOOK); + EnchantmentStorageMeta meta = (EnchantmentStorageMeta) itemStack.getItemMeta(); + Enchantment enchantment = Enchantment.values()[NumberUtils.randInt(0, Enchantment.values().length - 1)]; + int level = NumberUtils.randInt(1, enchantment.getMaxLevel()); + meta.addStoredEnchant(enchantment, level, true); + itemStack.setItemMeta(meta); + + String message = this.getPlugin().getLangYml().getMessage("gave-random-book"); + message = message.replace("%enchantment%", EnchantmentCache.getEntry(enchantment).getName() + " " + NumberUtils.toNumeral(level) + "§r"); + sender.sendMessage(message); + + String message2 = this.getPlugin().getLangYml().getMessage("received-random-book"); + message2 = message2.replace("%enchantment%", EnchantmentCache.getEntry(enchantment).getName() + " " + NumberUtils.toNumeral(level) + "§r"); + player.sendMessage(message2); + } +} diff --git a/eco-core/core-plugin/src/main/resources/lang.yml b/eco-core/core-plugin/src/main/resources/lang.yml index c37f2f44..f6a43416 100644 --- a/eco-core/core-plugin/src/main/resources/lang.yml +++ b/eco-core/core-plugin/src/main/resources/lang.yml @@ -20,7 +20,10 @@ messages: must-hold-item: "&cYou must be holding an enchantable item!" no-enchants-available: "&fNo available enchantments found for this item!" applied-random-enchant: "&fAdded %enchantment% to your item!" + gave-random-book: "&fGave %enchantment% book!" + received-random-book: "&fYou have received a %enchantment% book!" invalid-player: "&cInvalid Player!" + requires-player: "&cRequires a Player!" must-hold-item-other: "&cPlayer is not holding an enchantable item!" no-targets: "&cCannot be applied" diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml index b8107d4f..f77ed52e 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -36,6 +36,9 @@ commands: randomenchant: description: Adds a random enchantment to an item permission: ecoenchants.randomenchant + giverandombook: + description: Gives a book containing a random enchantment + permission: ecoenchants.randombook permissions: ecoenchants.*: @@ -49,6 +52,7 @@ permissions: ecoenchants.ecodebug: true ecoenchants.randomenchant: true ecoenchants.randomenchant.bypasshardcap: true + ecoenchants.randombook: true ecoenchants.anvil.*: true ecoenchants.anvil.*: description: Allows all anvil permissions @@ -72,6 +76,9 @@ permissions: ecoenchants.enchantinfo: description: Allows the use of /enchantinfo to show enchant info default: true + ecoenchants.randombook: + description: Allows the use of /giverandombook to give a book with a random enchantment + default: op ecoenchants.randomenchant: description: Allows the use of /randomenchant to apply a random enchantment to an item default: op