From 4704c1cf5312b728dc090ad4d9eb61c932c29619 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 5 Jul 2021 18:21:30 +0200 Subject: [PATCH] Updated to 7.10.0 and eco 5.7.0 --- build.gradle | 2 +- .../willfp/ecoenchants/EcoEnchantsPlugin.java | 50 ++--- .../ecoenchants/command/CommandDebug.java | 149 +++++++++++++++ .../command/CommandEcoEnchants.java | 29 +++ .../command/CommandEnchantinfo.java | 179 ++++++++++++++++++ .../command/CommandGiverandombook.java | 127 +++++++++++++ .../command/CommandRandomenchant.java | 145 ++++++++++++++ .../ecoenchants/command/CommandReload.java | 25 +++ .../command/commands/CommandEcodebug.java | 148 --------------- .../command/commands/CommandEcoreload.java | 26 --- .../command/commands/CommandEnchantinfo.java | 139 -------------- .../commands/CommandGiverandombook.java | 89 --------- .../commands/CommandRandomenchant.java | 126 ------------ .../TabCompleterEnchantinfo.java | 74 -------- .../TabCompleterGiverandombook.java | 72 ------- .../TabCompleterRandomEnchant.java | 53 ------ .../display/options/DescriptionOptions.java | 2 +- .../display/options/DisplayOptions.java | 2 +- .../display/options/NumbersOptions.java | 2 +- .../display/options/ShrinkOptions.java | 2 +- .../implementations/AlphabeticSorter.java | 6 +- .../sorting/implementations/LengthSorter.java | 6 +- .../RarityAlphabeticSorter.java | 15 +- .../implementations/RarityLengthSorter.java | 15 +- .../RarityTypeAlphabeticSorter.java | 17 +- .../RarityTypeLengthSorter.java | 17 +- .../implementations/TypeAlphabeticSorter.java | 15 +- .../implementations/TypeLengthSorter.java | 15 +- .../support/merging/anvil/AnvilListeners.java | 2 +- .../grindstone/GrindstoneListeners.java | 2 +- .../obtaining/EnchantingListeners.java | 2 +- .../support/obtaining/VillagerListeners.java | 2 +- .../enchantments/util/ItemConversions.java | 2 +- .../enchantments/util/WatcherTriggers.java | 2 +- .../core-plugin/src/main/resources/plugin.yml | 58 +++--- .../ecoenchants/proxy/util/ProxyFactory.java | 2 +- gradle.properties | 2 +- 37 files changed, 766 insertions(+), 855 deletions(-) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandDebug.java create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandEcoEnchants.java create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandEnchantinfo.java create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandGiverandombook.java create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandRandomenchant.java create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandReload.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoreload.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandGiverandombook.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandRandomenchant.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterEnchantinfo.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterGiverandombook.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterRandomEnchant.java diff --git a/build.gradle b/build.gradle index f2ecf707..c9c399a3 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,7 @@ allprojects { } dependencies { - compileOnly 'com.willfp:eco:5.6.0' + compileOnly 'com.willfp:eco:5.7.0' compileOnly 'org.jetbrains:annotations:19.0.0' 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 c7066e5b..d7c5c40d 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 @@ -1,16 +1,13 @@ package com.willfp.ecoenchants; import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.command.AbstractCommand; +import com.willfp.eco.core.command.impl.PluginCommand; import com.willfp.eco.core.display.DisplayModule; import com.willfp.eco.core.integrations.IntegrationLoader; 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.command.CommandEcoEnchants; +import com.willfp.ecoenchants.command.CommandEnchantinfo; +import com.willfp.ecoenchants.command.CommandGiverandombook; import com.willfp.ecoenchants.config.RarityYml; import com.willfp.ecoenchants.config.TargetYml; import com.willfp.ecoenchants.config.VanillaEnchantsYml; @@ -81,9 +78,6 @@ public class EcoEnchantsPlugin extends EcoPlugin { vanillaEnchantsYml = new VanillaEnchantsYml(this); } - /** - * Code executed on plugin enable. - */ @Override public void enable() { this.getExtensionLoader().loadExtensions(); @@ -100,9 +94,6 @@ public class EcoEnchantsPlugin extends EcoPlugin { TelekinesisUtils.registerTest(player -> ProxyUtils.getProxy(FastGetEnchantsProxy.class).getLevelOnItem(player.getInventory().getItemInMainHand(), EcoEnchants.TELEKINESIS) > 0); } - /** - * Code executed on plugin disable. - */ @Override public void disable() { Bukkit.getServer().getWorlds().forEach(world -> { @@ -117,9 +108,6 @@ public class EcoEnchantsPlugin extends EcoPlugin { this.getExtensionLoader().unloadExtensions(); } - /** - * Code executed on /ecoreload. - */ @Override public void onReload() { targetYml.update(); @@ -140,9 +128,6 @@ public class EcoEnchantsPlugin extends EcoPlugin { })); } - /** - * Code executed after server is up. - */ @Override public void postLoad() { if (this.getConfigYml().getBool("loot.enabled")) { @@ -159,11 +144,6 @@ public class EcoEnchantsPlugin extends EcoPlugin { EssentialsManager.registerEnchantments(); } - /** - * EcoEnchants-specific integrations. - * - * @return A list of all integrations. - */ @Override public List getIntegrationLoaders() { return Arrays.asList( @@ -171,19 +151,11 @@ public class EcoEnchantsPlugin extends EcoPlugin { ); } - /** - * EcoEnchants-specific commands. - * - * @return A list of all commands. - */ @Override - public List getCommands() { + public List getPluginCommands() { return Arrays.asList( - new CommandEcodebug(this), - new CommandEcoreload(this), new CommandEnchantinfo(this), - new CommandRandomenchant(this), - new CommandGiverandombook(this) + new CommandEcoEnchants(this) ); } @@ -211,7 +183,8 @@ public class EcoEnchantsPlugin extends EcoPlugin { EnchantmentRarity.class, EnchantmentTarget.class, EcoEnchants.class, - TabCompleterEnchantinfo.class, + CommandGiverandombook.class, + CommandEnchantinfo.class, EnchantmentType.class, WatcherTriggers.class ); @@ -225,6 +198,11 @@ public class EcoEnchantsPlugin extends EcoPlugin { @Override protected String getMinimumEcoVersion() { - return "5.6.0"; + return "5.7.0"; + } + + @Override + public EnchantDisplay getDisplayModule() { + return (EnchantDisplay) super.getDisplayModule(); } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandDebug.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandDebug.java new file mode 100644 index 00000000..a04e3281 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandDebug.java @@ -0,0 +1,149 @@ +package com.willfp.ecoenchants.command; + +import com.comphenix.protocol.ProtocolLibrary; +import com.comphenix.protocol.events.ListenerPriority; +import com.willfp.eco.core.command.CommandHandler; +import com.willfp.eco.core.command.impl.Subcommand; +import com.willfp.eco.core.proxy.ProxyConstants; +import com.willfp.ecoenchants.EcoEnchantsPlugin; +import com.willfp.ecoenchants.display.EnchantmentCache; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import org.bukkit.Bukkit; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +@SuppressWarnings("unchecked") +public class CommandDebug extends Subcommand { + /** + * Instantiate a new /ecoenchants debug command handler. + * + * @param plugin The plugin for the commands to listen for. + */ + public CommandDebug(@NotNull final EcoEnchantsPlugin plugin) { + super(plugin, "debug", "ecoenchants.command.debug", false); + } + + @Override + public CommandHandler getHandler() { + return (sender, args) -> { + if (!args.isEmpty() && args.get(0).equalsIgnoreCase("full")) { + Bukkit.getLogger().info("--------------- BEGIN DEBUG ----------------"); + if (sender instanceof Player player) { + player.sendMessage("Held Item: " + player.getInventory().getItemInMainHand()); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("Held Item: " + player.getInventory().getItemInMainHand()); + Bukkit.getLogger().info(""); + } + + Bukkit.getLogger().info("Running Version: " + this.getPlugin().getDescription().getVersion()); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("Loaded Extensions: " + this.getPlugin().getExtensionLoader().getLoadedExtensions().stream() + .map(extension -> extension.getName() + " v" + extension.getVersion()) + .collect(Collectors.joining())); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("EcoEnchants.getAll(): " + EcoEnchants.values().toString()); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("Enchantment.values(): " + Arrays.toString(Enchantment.values())); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("Enchantment Cache: " + EnchantmentCache.getCache().toString()); + Bukkit.getLogger().info(""); + + try { + Field byNameField = Enchantment.class.getDeclaredField("byName"); + byNameField.setAccessible(true); + Map byName = (Map) byNameField.get(null); + Bukkit.getLogger().info("Enchantment.byName: " + byName.toString()); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } + Bukkit.getLogger().info(""); + + + List extern = Arrays.stream(Enchantment.values()).collect(Collectors.toList()); + extern.removeAll(new ArrayList<>(EcoEnchants.values())); + extern.removeIf(enchantment -> enchantment.getClass().toString().toLowerCase().contains("craftenchantment")); + String external = extern.stream().map(enchantment -> "{" + enchantment.toString() + ", Provider: " + enchantment.getClass().toString() + "}").collect(Collectors.joining(", ")); + Bukkit.getLogger().info("External Enchantments: " + external); + Bukkit.getLogger().info(""); + + List uncached = Arrays.stream(Enchantment.values()).collect(Collectors.toList()); + uncached.removeAll(EnchantmentCache.getCache().values().stream().map(EnchantmentCache.CacheEntry::getEnchantment).collect(Collectors.toList())); + Bukkit.getLogger().info("Uncached Enchantments: " + uncached); + Bukkit.getLogger().info(""); + + List brokenCache = Arrays.stream(Enchantment.values()).collect(Collectors.toList()); + brokenCache.removeIf(enchantment -> !( + EnchantmentCache.getEntry(enchantment).getName().equalsIgnoreCase("null") + || EnchantmentCache.getEntry(enchantment).getRawName().equalsIgnoreCase("null") + || EnchantmentCache.getEntry(enchantment).getStringDescription().equalsIgnoreCase("null"))); + Bukkit.getLogger().info("Enchantments with broken cache: " + brokenCache); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("Installed Plugins: " + Arrays.stream(Bukkit.getPluginManager().getPlugins()).map(Plugin::getName).collect(Collectors.toList())); + Bukkit.getLogger().info(""); + + Set withIssues = new HashSet<>(); + EcoEnchants.values().forEach(enchant -> { + if (enchant.getRarity() == null) { + withIssues.add(enchant); + } + if (enchant.getTargets().isEmpty()) { + withIssues.add(enchant); + } + }); + Bukkit.getLogger().info("Enchantments with evident issues: " + withIssues); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("Packets: " + ProtocolLibrary.getProtocolManager().getPacketListeners().stream() + .filter(packetListener -> packetListener.getSendingWhitelist().getPriority().equals(ListenerPriority.MONITOR)) + .collect(Collectors.toList())); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("Server Information: "); + Bukkit.getLogger().info("Players Online: " + Bukkit.getServer().getOnlinePlayers().size()); + Bukkit.getLogger().info("Bukkit IP: " + Bukkit.getIp()); + Bukkit.getLogger().info("Running Version: " + Bukkit.getVersion() + + ", Bukkit Version: " + Bukkit.getBukkitVersion() + + ", Alt Version: " + Bukkit.getServer().getVersion() + + ", NMS: " + ProxyConstants.NMS_VERSION); + Bukkit.getLogger().info("Motd: " + Bukkit.getServer().getMotd()); + Bukkit.getLogger().info("--------------- END DEBUG ----------------"); + } else { + if (sender instanceof Player player) { + player.sendMessage("Held Item: " + player.getInventory().getItemInMainHand()); + player.sendMessage("Lore: "); + Bukkit.getLogger().info(""); + + Bukkit.getLogger().info("Held Item: " + player.getInventory().getItemInMainHand()); + Bukkit.getLogger().info("Lore: "); + ItemMeta meta = player.getInventory().getItemInMainHand().getItemMeta(); + if (meta != null) { + for (String s : new ArrayList<>(meta.hasLore() ? meta.getLore() : new ArrayList<>())) { + Bukkit.getLogger().info(s); + player.sendMessage(s); + } + } + Bukkit.getLogger().info(""); + } + } + }; + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandEcoEnchants.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandEcoEnchants.java new file mode 100644 index 00000000..349f1540 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandEcoEnchants.java @@ -0,0 +1,29 @@ +package com.willfp.ecoenchants.command; + +import com.willfp.eco.core.command.CommandHandler; +import com.willfp.eco.core.command.impl.PluginCommand; +import com.willfp.ecoenchants.EcoEnchantsPlugin; +import org.jetbrains.annotations.NotNull; + +public class CommandEcoEnchants extends PluginCommand { + /** + * Instantiate a new /ecoenchants command handler. + * + * @param plugin The plugin for the commands to listen for. + */ + public CommandEcoEnchants(@NotNull final EcoEnchantsPlugin plugin) { + super(plugin, "ecoenchants", "ecoenchants.command.ecoenchants", false); + + this.addSubcommand(new CommandDebug(plugin)) + .addSubcommand(new CommandReload(plugin)) + .addSubcommand(new CommandGiverandombook(plugin)) + .addSubcommand(new CommandRandomenchant(plugin)); + } + + @Override + public CommandHandler getHandler() { + return (sender, args) -> { + + }; + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandEnchantinfo.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandEnchantinfo.java new file mode 100644 index 00000000..ddccb4a1 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandEnchantinfo.java @@ -0,0 +1,179 @@ +package com.willfp.ecoenchants.command; + +import com.willfp.eco.core.EcoPlugin; +import com.willfp.eco.core.command.CommandHandler; +import com.willfp.eco.core.command.TabCompleteHandler; +import com.willfp.eco.core.command.impl.PluginCommand; +import com.willfp.eco.core.config.ConfigUpdater; +import com.willfp.eco.util.StringUtils; +import com.willfp.ecoenchants.display.EnchantmentCache; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import org.apache.commons.lang.WordUtils; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.util.StringUtil; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class CommandEnchantinfo extends PluginCommand { + /** + * The cached enchantment names. + */ + private static final List ENCHANT_NAMES = EcoEnchants.values().stream().filter(EcoEnchant::isEnabled) + .map(EcoEnchant::getDisplayName).map(ChatColor::stripColor).collect(Collectors.toList()); + + /** + * Instantiate a new /enchantinfo command handler. + * + * @param plugin The plugin for the commands to listen for. + */ + public CommandEnchantinfo(@NotNull final EcoPlugin plugin) { + super(plugin, "enchantinfo", "ecoenchants.command.enchantinfo", false); + } + + /** + * Called on reload. + */ + @ConfigUpdater + public static void reload() { + ENCHANT_NAMES.clear(); + ENCHANT_NAMES.addAll(EcoEnchants.values().stream().filter(EcoEnchant::isEnabled).map(EcoEnchant::getDisplayName).map(ChatColor::stripColor).collect(Collectors.toList())); + } + + @Override + public CommandHandler getHandler() { + return (sender, args) -> { + if (args.isEmpty()) { + sender.sendMessage(this.getPlugin().getLangYml().getMessage("missing-enchant")); + return; + } + StringBuilder nameBuilder = new StringBuilder(); + + args.forEach(arg -> nameBuilder.append(arg).append(" ")); + String searchName = nameBuilder.toString(); + searchName = searchName.substring(0, searchName.length() - 1); + + EcoEnchant enchantment = EcoEnchants.getByName(searchName); + + if (enchantment == null) { + String finalSearchName = searchName; + enchantment = EcoEnchants.values().stream().filter(ecoEnchant -> ChatColor.stripColor(ecoEnchant.getDisplayName()).equalsIgnoreCase(finalSearchName)).findFirst().orElse(null); + } + + if (enchantment == null || !enchantment.isEnabled()) { + String message = this.getPlugin().getLangYml().getMessage("not-found").replace("%name%", searchName); + sender.sendMessage(message); + return; + } + + Set conflictNames = new HashSet<>(); + + Set conflicts = enchantment.getConflicts(); + + new HashSet<>(conflicts).forEach(enchantment1 -> { + EcoEnchant ecoEnchant = EcoEnchants.getFromEnchantment(enchantment1); + if (ecoEnchant != null && !ecoEnchant.isEnabled()) { + conflicts.remove(enchantment1); + } + }); + + conflicts.forEach((enchantment1 -> { + if (EcoEnchants.getFromEnchantment(enchantment1) != null) { + conflictNames.add(EcoEnchants.getFromEnchantment(enchantment1).getDisplayName()); + } else { + conflictNames.add(this.getPlugin().getLangYml().getString("enchantments." + enchantment1.getKey().getKey() + ".name")); + } + })); + + StringBuilder conflictNamesBuilder = new StringBuilder(); + conflictNames.forEach(name1 -> conflictNamesBuilder.append(name1).append(", ")); + String allConflicts = conflictNamesBuilder.toString(); + if (allConflicts.length() >= 2) { + allConflicts = allConflicts.substring(0, allConflicts.length() - 2); + } else { + allConflicts = StringUtils.translate(this.getPlugin().getLangYml().getString("no-conflicts")); + } + + Set targets = enchantment.getTargetMaterials(); + + Set applicableItemsSet = new HashSet<>(); + + if (this.getPlugin().getConfigYml().getBool("commands.enchantinfo.show-target-group")) { + enchantment.getTargets().forEach(target -> { + String targetName = target.getName(); + targetName = targetName.toLowerCase(); + targetName = targetName.replace("_", " "); + targetName = WordUtils.capitalize(targetName); + applicableItemsSet.add(targetName); + }); + } else { + targets.forEach(material -> { + String matName = material.toString(); + matName = matName.toLowerCase(); + matName = matName.replace("_", " "); + matName = WordUtils.capitalize(matName); + applicableItemsSet.add(matName); + }); + } + + StringBuilder targetNamesBuilder = new StringBuilder(); + applicableItemsSet.forEach(name1 -> targetNamesBuilder.append(name1).append(", ")); + String allTargets = targetNamesBuilder.toString(); + if (allTargets.length() >= 2) { + allTargets = allTargets.substring(0, allTargets.length() - 2); + } else { + allTargets = StringUtils.translate(this.getPlugin().getLangYml().getString("no-targets")); + } + + String maxLevel = String.valueOf(enchantment.getMaxLevel()); + + final String finalName = EnchantmentCache.getEntry(enchantment).getName(); + final String finalDescription = EnchantmentCache.getEntry(enchantment).getStringDescription(); + final String finalTargets = allTargets; + final String finalConflicts = allConflicts; + final String finalMaxLevel = maxLevel; + Arrays.asList(this.getPlugin().getLangYml().getMessage("enchantinfo").split("\\r?\\n")).forEach((string -> { + string = string.replace("%name%", finalName) + .replace("%description%", finalDescription) + .replace("%target%", finalTargets) + .replace("%conflicts%", finalConflicts) + .replace("%maxlevel%", finalMaxLevel); + sender.sendMessage(string); + })); + }; + } + + @Override + public TabCompleteHandler getTabCompleter() { + return (sender, args) -> { + List completions = new ArrayList<>(); + + if (args.isEmpty()) { + // Currently, this case is not ever reached + return ENCHANT_NAMES; + } + + StringUtil.copyPartialMatches(String.join(" ", args), ENCHANT_NAMES, completions); + + if (args.size() > 1) { // Remove all previous words from the candidate of completions + ArrayList finishedArgs = new ArrayList<>(args); + finishedArgs.remove(args.size() - 1); + + String prefix = String.join(" ", finishedArgs); + completions = completions.stream().map(enchantName -> StringUtils.removePrefix(enchantName, prefix).trim()).collect(Collectors.toList()); + } + + Collections.sort(completions); + return completions; + }; + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandGiverandombook.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandGiverandombook.java new file mode 100644 index 00000000..4cb97e0d --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandGiverandombook.java @@ -0,0 +1,127 @@ +package com.willfp.ecoenchants.command; + +import com.willfp.eco.core.EcoPlugin; +import com.willfp.eco.core.command.CommandHandler; +import com.willfp.eco.core.command.TabCompleteHandler; +import com.willfp.eco.core.command.impl.Subcommand; +import com.willfp.eco.core.config.ConfigUpdater; +import com.willfp.eco.util.NumberUtils; +import com.willfp.ecoenchants.display.EnchantmentCache; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.bukkit.util.StringUtil; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public class CommandGiverandombook extends Subcommand { + /** + * The cached enchantment names. + */ + private static final List RARITY_NAMES = EnchantmentRarity.values().stream().map(EnchantmentRarity::getName).collect(Collectors.toList()); + + /** + * Instantiate a new command handler. + * + * @param plugin The plugin for the commands to listen for. + */ + public CommandGiverandombook(@NotNull final EcoPlugin plugin) { + super(plugin, "giverandombook", "ecoenchants.command.giverandombook", false); + } + + /** + * Called on /reload. + */ + @ConfigUpdater + public static void reload() { + RARITY_NAMES.clear(); + RARITY_NAMES.addAll(EnchantmentRarity.values().stream().map(EnchantmentRarity::getName).collect(Collectors.toList())); + } + + @Override + public CommandHandler getHandler() { + return (sender, args) -> { + if (args.isEmpty()) { + sender.sendMessage(this.getPlugin().getLangYml().getMessage("requires-player")); + return; + } + Player player = Bukkit.getServer().getPlayer(args.get(0)); + + EnchantmentRarity rarity = args.size() >= 2 ? EnchantmentRarity.getByName(args.get(1).toLowerCase()) : null; + + if (player == null) { + sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-player")); + return; + } + + ItemStack itemStack = new ItemStack(Material.ENCHANTED_BOOK); + EnchantmentStorageMeta meta = (EnchantmentStorageMeta) itemStack.getItemMeta(); + + List allowed = Arrays.stream(Enchantment.values()).filter(enchantment -> { + if (enchantment instanceof EcoEnchant) { + return ((EcoEnchant) enchantment).isEnabled(); + } + return true; + }).filter(enchantment -> { + if (rarity != null) { + if (!(enchantment instanceof EcoEnchant)) { + return false; + } + return ((EcoEnchant) enchantment).getRarity().equals(rarity); + } + return true; + }).collect(Collectors.toList()); + Enchantment enchantment = allowed.get(NumberUtils.randInt(0, allowed.size() - 1)); + int level = NumberUtils.randInt(1, enchantment.getMaxLevel()); + meta.addStoredEnchant(enchantment, level, true); + itemStack.setItemMeta(meta); + + for (ItemStack stack : player.getInventory().addItem(itemStack).values()) { + player.getWorld().dropItem(player.getLocation(), stack); + } + + 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); + }; + } + + @Override + public TabCompleteHandler getTabCompleter() { + return (sender, args) -> { + List completions = new ArrayList<>(); + + List playerNames = Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()); + + if (args.isEmpty()) { + // Currently, this case is not ever reached + return playerNames; + } + + if (args.size() == 1) { + StringUtil.copyPartialMatches(String.join(" ", args.get(0)), playerNames, completions); + } + + if (args.size() == 2) { + StringUtil.copyPartialMatches(String.join(" ", args.get(1)), RARITY_NAMES, completions); + } + + Collections.sort(completions); + return completions; + }; + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandRandomenchant.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandRandomenchant.java new file mode 100644 index 00000000..a45c254a --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandRandomenchant.java @@ -0,0 +1,145 @@ +package com.willfp.ecoenchants.command; + +import com.willfp.eco.core.EcoPlugin; +import com.willfp.eco.core.command.CommandHandler; +import com.willfp.eco.core.command.TabCompleteHandler; +import com.willfp.eco.core.command.impl.Subcommand; +import com.willfp.ecoenchants.display.EnchantmentCache; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.util.StringUtil; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public class CommandRandomenchant extends Subcommand { + /** + * Instantiate a new /ecoreload command handler. + * + * @param plugin The plugin for the commands to listen for. + */ + public CommandRandomenchant(@NotNull final EcoPlugin plugin) { + super(plugin, "randomenchant", "ecoenchants.command.randomenchant", false); + } + + @Override + public CommandHandler getHandler() { + return (sender, args) -> { + Player player; + + if ((args.isEmpty() && sender instanceof Player) || !sender.hasPermission("ecoenchants.randomenchant.others")) { + player = (Player) sender; + } else { + player = Bukkit.getServer().getPlayer(args.get(0)); + } + + if (player == null) { + sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-player")); + return; + } + + ItemStack itemStack = player.getInventory().getItemInMainHand(); + ItemMeta meta = itemStack.getItemMeta(); + + if (itemStack.getType() == Material.AIR || meta == null || !EnchantmentTarget.ALL.getMaterials().contains(itemStack.getType())) { + if (player.equals(sender)) { + player.sendMessage(this.getPlugin().getLangYml().getMessage("must-hold-item")); + } else { + sender.sendMessage(this.getPlugin().getLangYml().getMessage("must-hold-item-other")); + } + return; + } + + List ecoEnchants = new ArrayList<>(EcoEnchants.values()); + Collections.shuffle(ecoEnchants); + EcoEnchant enchant = null; + + List onItem = new ArrayList<>(); + + if (meta instanceof EnchantmentStorageMeta) { + onItem.addAll(((EnchantmentStorageMeta) meta).getStoredEnchants().keySet()); + } else { + onItem.addAll(meta.getEnchants().keySet()); + } + + for (EcoEnchant ecoEnchant : ecoEnchants) { + if (ecoEnchant.canEnchantItem(itemStack)) { + if (!ecoEnchant.conflictsWithAny(onItem)) { + if (ecoEnchant.isEnabled()) { + if (onItem.stream().noneMatch(enchantment -> enchantment.conflictsWith(ecoEnchant))) { + if (!onItem.contains(ecoEnchant)) { + boolean conflicts = false; + for (Enchantment enchantment : onItem) { + if (EcoEnchants.getFromEnchantment(enchantment) != null) { + EcoEnchant ecoEnchantOnItem = EcoEnchants.getFromEnchantment(enchantment); + if (ecoEnchantOnItem.getType().equals(ecoEnchant.getType()) && ecoEnchantOnItem.getType().isSingular()) { + conflicts = true; + } + } + } + if (this.getPlugin().getConfigYml().getBool("anvil.hard-cap.enabled") + && !player.hasPermission("ecoenchants.randomenchant.bypasshardcap") + && onItem.size() >= this.getPlugin().getConfigYml().getInt("anvil.hard-cap.cap")) { + conflicts = true; + } + if (!conflicts) { + enchant = ecoEnchant; + } + } + } + } + } + } + } + + if (enchant == null) { + player.sendMessage(this.getPlugin().getLangYml().getMessage("no-enchants-available")); + return; + } + + if (meta instanceof EnchantmentStorageMeta) { + ((EnchantmentStorageMeta) meta).addStoredEnchant(enchant, enchant.getMaxLevel(), true); + } else { + meta.addEnchant(enchant, enchant.getMaxLevel(), true); + } + + itemStack.setItemMeta(meta); + String message = this.getPlugin().getLangYml().getMessage("applied-random-enchant"); + message = message.replace("%enchantment%", EnchantmentCache.getEntry(enchant).getName() + "§r"); + player.sendMessage(message); + }; + } + + @Override + public TabCompleteHandler getTabCompleter() { + return (sender, args) -> { + List completions = new ArrayList<>(); + + List playerNames = Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()); + + if (args.isEmpty() || !sender.hasPermission("ecoenchants.randomenchant.others")) { + // Currently, this case is not ever reached + return playerNames; + } + + if (args.size() == 1) { + StringUtil.copyPartialMatches(String.join(" ", args), playerNames, completions); + Collections.sort(completions); + return completions; + } + + return new ArrayList<>(); + }; + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandReload.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandReload.java new file mode 100644 index 00000000..3f019600 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/CommandReload.java @@ -0,0 +1,25 @@ +package com.willfp.ecoenchants.command; + +import com.willfp.eco.core.command.CommandHandler; +import com.willfp.eco.core.command.impl.Subcommand; +import com.willfp.ecoenchants.EcoEnchantsPlugin; +import org.jetbrains.annotations.NotNull; + +public class CommandReload extends Subcommand { + /** + * Instantiate a new command handler. + * + * @param plugin The plugin for the commands to listen for. + */ + public CommandReload(@NotNull final EcoEnchantsPlugin plugin) { + super(plugin, "reload", "ecoenchants.command.reload", false); + } + + @Override + public CommandHandler getHandler() { + return (sender, args) -> { + this.getPlugin().reload(); + sender.sendMessage(this.getPlugin().getLangYml().getMessage("reloaded")); + }; + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java deleted file mode 100644 index 1d2c8a76..00000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.willfp.ecoenchants.command.commands; - -import com.comphenix.protocol.ProtocolLibrary; -import com.comphenix.protocol.events.ListenerPriority; -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.command.AbstractCommand; -import com.willfp.eco.core.proxy.ProxyConstants; -import com.willfp.ecoenchants.display.EnchantmentCache; -import com.willfp.ecoenchants.enchantments.EcoEnchant; -import com.willfp.ecoenchants.enchantments.EcoEnchants; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.Player; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.NotNull; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -@SuppressWarnings("unchecked") -public class CommandEcodebug extends AbstractCommand { - /** - * Instantiate a new /ecodebug command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandEcodebug(@NotNull final EcoPlugin plugin) { - super(plugin, "ecodebug", "ecoenchants.ecodebug", false); - } - - @Override - public void onExecute(@NotNull final CommandSender sender, - @NotNull final List args) { - if (!args.isEmpty() && args.get(0).equalsIgnoreCase("full")) { - Bukkit.getLogger().info("--------------- BEGIN DEBUG ----------------"); - if (sender instanceof Player player) { - player.sendMessage("Held Item: " + player.getInventory().getItemInMainHand()); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("Held Item: " + player.getInventory().getItemInMainHand()); - Bukkit.getLogger().info(""); - } - - Bukkit.getLogger().info("Running Version: " + this.getPlugin().getDescription().getVersion()); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("Loaded Extensions: " + this.getPlugin().getExtensionLoader().getLoadedExtensions().stream() - .map(extension -> extension.getName() + " v" + extension.getVersion()) - .collect(Collectors.joining())); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("EcoEnchants.getAll(): " + EcoEnchants.values().toString()); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("Enchantment.values(): " + Arrays.toString(Enchantment.values())); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("Enchantment Cache: " + EnchantmentCache.getCache().toString()); - Bukkit.getLogger().info(""); - - try { - Field byNameField = Enchantment.class.getDeclaredField("byName"); - byNameField.setAccessible(true); - Map byName = (Map) byNameField.get(null); - Bukkit.getLogger().info("Enchantment.byName: " + byName.toString()); - } catch (NoSuchFieldException | IllegalAccessException e) { - e.printStackTrace(); - } - Bukkit.getLogger().info(""); - - - List extern = Arrays.stream(Enchantment.values()).collect(Collectors.toList()); - extern.removeAll(new ArrayList<>(EcoEnchants.values())); - extern.removeIf(enchantment -> enchantment.getClass().toString().toLowerCase().contains("craftenchantment")); - String external = extern.stream().map(enchantment -> "{" + enchantment.toString() + ", Provider: " + enchantment.getClass().toString() + "}").collect(Collectors.joining(", ")); - Bukkit.getLogger().info("External Enchantments: " + external); - Bukkit.getLogger().info(""); - - List uncached = Arrays.stream(Enchantment.values()).collect(Collectors.toList()); - uncached.removeAll(EnchantmentCache.getCache().values().stream().map(EnchantmentCache.CacheEntry::getEnchantment).collect(Collectors.toList())); - Bukkit.getLogger().info("Uncached Enchantments: " + uncached); - Bukkit.getLogger().info(""); - - List brokenCache = Arrays.stream(Enchantment.values()).collect(Collectors.toList()); - brokenCache.removeIf(enchantment -> !( - EnchantmentCache.getEntry(enchantment).getName().equalsIgnoreCase("null") - || EnchantmentCache.getEntry(enchantment).getRawName().equalsIgnoreCase("null") - || EnchantmentCache.getEntry(enchantment).getStringDescription().equalsIgnoreCase("null"))); - Bukkit.getLogger().info("Enchantments with broken cache: " + brokenCache); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("Installed Plugins: " + Arrays.stream(Bukkit.getPluginManager().getPlugins()).map(Plugin::getName).collect(Collectors.toList())); - Bukkit.getLogger().info(""); - - Set withIssues = new HashSet<>(); - EcoEnchants.values().forEach(enchant -> { - if (enchant.getRarity() == null) { - withIssues.add(enchant); - } - if (enchant.getTargets().isEmpty()) { - withIssues.add(enchant); - } - }); - Bukkit.getLogger().info("Enchantments with evident issues: " + withIssues); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("Packets: " + ProtocolLibrary.getProtocolManager().getPacketListeners().stream() - .filter(packetListener -> packetListener.getSendingWhitelist().getPriority().equals(ListenerPriority.MONITOR)) - .collect(Collectors.toList())); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("Server Information: "); - Bukkit.getLogger().info("Players Online: " + Bukkit.getServer().getOnlinePlayers().size()); - Bukkit.getLogger().info("Bukkit IP: " + Bukkit.getIp()); - Bukkit.getLogger().info("Running Version: " + Bukkit.getVersion() - + ", Bukkit Version: " + Bukkit.getBukkitVersion() - + ", Alt Version: " + Bukkit.getServer().getVersion() - + ", NMS: " + ProxyConstants.NMS_VERSION); - Bukkit.getLogger().info("Motd: " + Bukkit.getServer().getMotd()); - Bukkit.getLogger().info("--------------- END DEBUG ----------------"); - } else { - if (sender instanceof Player player) { - player.sendMessage("Held Item: " + player.getInventory().getItemInMainHand()); - player.sendMessage("Lore: "); - Bukkit.getLogger().info(""); - - Bukkit.getLogger().info("Held Item: " + player.getInventory().getItemInMainHand()); - Bukkit.getLogger().info("Lore: "); - ItemMeta meta = player.getInventory().getItemInMainHand().getItemMeta(); - if (meta != null) { - for (String s : new ArrayList<>(meta.hasLore() ? meta.getLore() : new ArrayList<>())) { - Bukkit.getLogger().info(s); - player.sendMessage(s); - } - } - Bukkit.getLogger().info(""); - } - } - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoreload.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoreload.java deleted file mode 100644 index 42705f5a..00000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoreload.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.willfp.ecoenchants.command.commands; - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.command.AbstractCommand; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -public class CommandEcoreload extends AbstractCommand { - /** - * Instantiate a new /ecoreload command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandEcoreload(@NotNull final EcoPlugin plugin) { - super(plugin, "ecoreload", "ecoenchants.reload", false); - } - - @Override - public void onExecute(@NotNull final CommandSender sender, - @NotNull final List args) { - this.getPlugin().reload(); - sender.sendMessage(this.getPlugin().getLangYml().getMessage("reloaded")); - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java deleted file mode 100644 index b93223cf..00000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java +++ /dev/null @@ -1,139 +0,0 @@ -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.StringUtils; -import com.willfp.ecoenchants.command.tabcompleters.TabCompleterEnchantinfo; -import com.willfp.ecoenchants.display.EnchantmentCache; -import com.willfp.ecoenchants.enchantments.EcoEnchant; -import com.willfp.ecoenchants.enchantments.EcoEnchants; -import org.apache.commons.lang.WordUtils; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.command.CommandSender; -import org.bukkit.enchantments.Enchantment; -import org.jetbrains.annotations.NotNull; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -public class CommandEnchantinfo extends AbstractCommand { - /** - * Instantiate a new /enchantinfo command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandEnchantinfo(@NotNull final EcoPlugin plugin) { - super(plugin, "enchantinfo", "ecoenchants.enchantinfo", false); - } - - @Override - public AbstractTabCompleter getTab() { - return new TabCompleterEnchantinfo(this); - } - - @Override - public void onExecute(@NotNull final CommandSender sender, - @NotNull final List args) { - if (args.isEmpty()) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("missing-enchant")); - return; - } - StringBuilder nameBuilder = new StringBuilder(); - - args.forEach(arg -> nameBuilder.append(arg).append(" ")); - String searchName = nameBuilder.toString(); - searchName = searchName.substring(0, searchName.length() - 1); - - EcoEnchant enchantment = EcoEnchants.getByName(searchName); - - if (enchantment == null) { - String finalSearchName = searchName; - enchantment = EcoEnchants.values().stream().filter(ecoEnchant -> ChatColor.stripColor(ecoEnchant.getDisplayName()).equalsIgnoreCase(finalSearchName)).findFirst().orElse(null); - } - - if (enchantment == null || !enchantment.isEnabled()) { - String message = this.getPlugin().getLangYml().getMessage("not-found").replace("%name%", searchName); - sender.sendMessage(message); - return; - } - - Set conflictNames = new HashSet<>(); - - Set conflicts = enchantment.getConflicts(); - - new HashSet<>(conflicts).forEach(enchantment1 -> { - EcoEnchant ecoEnchant = EcoEnchants.getFromEnchantment(enchantment1); - if (ecoEnchant != null && !ecoEnchant.isEnabled()) { - conflicts.remove(enchantment1); - } - }); - - conflicts.forEach((enchantment1 -> { - if (EcoEnchants.getFromEnchantment(enchantment1) != null) { - conflictNames.add(EcoEnchants.getFromEnchantment(enchantment1).getDisplayName()); - } else { - conflictNames.add(this.getPlugin().getLangYml().getString("enchantments." + enchantment1.getKey().getKey() + ".name")); - } - })); - - StringBuilder conflictNamesBuilder = new StringBuilder(); - conflictNames.forEach(name1 -> conflictNamesBuilder.append(name1).append(", ")); - String allConflicts = conflictNamesBuilder.toString(); - if (allConflicts.length() >= 2) { - allConflicts = allConflicts.substring(0, allConflicts.length() - 2); - } else { - allConflicts = StringUtils.translate(this.getPlugin().getLangYml().getString("no-conflicts")); - } - - Set targets = enchantment.getTargetMaterials(); - - Set applicableItemsSet = new HashSet<>(); - - if (this.getPlugin().getConfigYml().getBool("commands.enchantinfo.show-target-group")) { - enchantment.getTargets().forEach(target -> { - String targetName = target.getName(); - targetName = targetName.toLowerCase(); - targetName = targetName.replace("_", " "); - targetName = WordUtils.capitalize(targetName); - applicableItemsSet.add(targetName); - }); - } else { - targets.forEach(material -> { - String matName = material.toString(); - matName = matName.toLowerCase(); - matName = matName.replace("_", " "); - matName = WordUtils.capitalize(matName); - applicableItemsSet.add(matName); - }); - } - - StringBuilder targetNamesBuilder = new StringBuilder(); - applicableItemsSet.forEach(name1 -> targetNamesBuilder.append(name1).append(", ")); - String allTargets = targetNamesBuilder.toString(); - if (allTargets.length() >= 2) { - allTargets = allTargets.substring(0, allTargets.length() - 2); - } else { - allTargets = StringUtils.translate(this.getPlugin().getLangYml().getString("no-targets")); - } - - String maxLevel = String.valueOf(enchantment.getMaxLevel()); - - final String finalName = EnchantmentCache.getEntry(enchantment).getName(); - final String finalDescription = EnchantmentCache.getEntry(enchantment).getStringDescription(); - final String finalTargets = allTargets; - final String finalConflicts = allConflicts; - final String finalMaxLevel = maxLevel; - Arrays.asList(this.getPlugin().getLangYml().getMessage("enchantinfo").split("\\r?\\n")).forEach((string -> { - string = string.replace("%name%", finalName) - .replace("%description%", finalDescription) - .replace("%target%", finalTargets) - .replace("%conflicts%", finalConflicts) - .replace("%maxlevel%", finalMaxLevel); - sender.sendMessage(string); - })); - } -} 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 deleted file mode 100644 index 69430fbf..00000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandGiverandombook.java +++ /dev/null @@ -1,89 +0,0 @@ -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.TabCompleterGiverandombook; -import com.willfp.ecoenchants.display.EnchantmentCache; -import com.willfp.ecoenchants.enchantments.EcoEnchant; -import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity; -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.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -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 TabCompleterGiverandombook(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)); - - EnchantmentRarity rarity = args.size() >= 2 ? EnchantmentRarity.getByName(args.get(1).toLowerCase()) : null; - - if (player == null) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-player")); - return; - } - - ItemStack itemStack = new ItemStack(Material.ENCHANTED_BOOK); - EnchantmentStorageMeta meta = (EnchantmentStorageMeta) itemStack.getItemMeta(); - - List allowed = Arrays.stream(Enchantment.values()).filter(enchantment -> { - if (enchantment instanceof EcoEnchant) { - return ((EcoEnchant) enchantment).isEnabled(); - } - return true; - }).filter(enchantment -> { - if (rarity != null) { - if (!(enchantment instanceof EcoEnchant)) { - return false; - } - return ((EcoEnchant) enchantment).getRarity().equals(rarity); - } - return true; - }).collect(Collectors.toList()); - Enchantment enchantment = allowed.get(NumberUtils.randInt(0, allowed.size() - 1)); - int level = NumberUtils.randInt(1, enchantment.getMaxLevel()); - meta.addStoredEnchant(enchantment, level, true); - itemStack.setItemMeta(meta); - - for (ItemStack stack : player.getInventory().addItem(itemStack).values()) { - player.getWorld().dropItem(player.getLocation(), stack); - } - - 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/java/com/willfp/ecoenchants/command/commands/CommandRandomenchant.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandRandomenchant.java deleted file mode 100644 index 239ec95c..00000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandRandomenchant.java +++ /dev/null @@ -1,126 +0,0 @@ -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.ecoenchants.command.tabcompleters.TabCompleterRandomEnchant; -import com.willfp.ecoenchants.display.EnchantmentCache; -import com.willfp.ecoenchants.enchantments.EcoEnchant; -import com.willfp.ecoenchants.enchantments.EcoEnchants; -import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget; -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.bukkit.inventory.meta.ItemMeta; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class CommandRandomenchant extends AbstractCommand { - /** - * Instantiate a new /ecoreload command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandRandomenchant(@NotNull final EcoPlugin plugin) { - super(plugin, "randomenchant", "ecoenchants.randomenchant", false); - } - - @Override - public AbstractTabCompleter getTab() { - return new TabCompleterRandomEnchant(this); - } - - @Override - public void onExecute(@NotNull final CommandSender sender, - @NotNull final List args) { - Player player; - - if ((args.isEmpty() && sender instanceof Player) || !sender.hasPermission("ecoenchants.randomenchant.others")) { - player = (Player) sender; - } else { - player = Bukkit.getServer().getPlayer(args.get(0)); - } - - if (player == null) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-player")); - return; - } - - ItemStack itemStack = player.getInventory().getItemInMainHand(); - ItemMeta meta = itemStack.getItemMeta(); - - if (itemStack.getType() == Material.AIR || meta == null || !EnchantmentTarget.ALL.getMaterials().contains(itemStack.getType())) { - if (player.equals(sender)) { - player.sendMessage(this.getPlugin().getLangYml().getMessage("must-hold-item")); - } else { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("must-hold-item-other")); - } - return; - } - - List ecoEnchants = new ArrayList<>(EcoEnchants.values()); - Collections.shuffle(ecoEnchants); - EcoEnchant enchant = null; - - List onItem = new ArrayList<>(); - - if (meta instanceof EnchantmentStorageMeta) { - onItem.addAll(((EnchantmentStorageMeta) meta).getStoredEnchants().keySet()); - } else { - onItem.addAll(meta.getEnchants().keySet()); - } - - for (EcoEnchant ecoEnchant : ecoEnchants) { - if (ecoEnchant.canEnchantItem(itemStack)) { - if (!ecoEnchant.conflictsWithAny(onItem)) { - if (ecoEnchant.isEnabled()) { - if (onItem.stream().noneMatch(enchantment -> enchantment.conflictsWith(ecoEnchant))) { - if (!onItem.contains(ecoEnchant)) { - boolean conflicts = false; - for (Enchantment enchantment : onItem) { - if (EcoEnchants.getFromEnchantment(enchantment) != null) { - EcoEnchant ecoEnchantOnItem = EcoEnchants.getFromEnchantment(enchantment); - if (ecoEnchantOnItem.getType().equals(ecoEnchant.getType()) && ecoEnchantOnItem.getType().isSingular()) { - conflicts = true; - } - } - } - if (this.getPlugin().getConfigYml().getBool("anvil.hard-cap.enabled") - && !player.hasPermission("ecoenchants.randomenchant.bypasshardcap") - && onItem.size() >= this.getPlugin().getConfigYml().getInt("anvil.hard-cap.cap")) { - conflicts = true; - } - if (!conflicts) { - enchant = ecoEnchant; - } - } - } - } - } - } - } - - if (enchant == null) { - player.sendMessage(this.getPlugin().getLangYml().getMessage("no-enchants-available")); - return; - } - - if (meta instanceof EnchantmentStorageMeta) { - ((EnchantmentStorageMeta) meta).addStoredEnchant(enchant, enchant.getMaxLevel(), true); - } else { - meta.addEnchant(enchant, enchant.getMaxLevel(), true); - } - - itemStack.setItemMeta(meta); - String message = this.getPlugin().getLangYml().getMessage("applied-random-enchant"); - message = message.replace("%enchantment%", EnchantmentCache.getEntry(enchant).getName() + "§r"); - player.sendMessage(message); - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterEnchantinfo.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterEnchantinfo.java deleted file mode 100644 index ab94a5b9..00000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterEnchantinfo.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.willfp.ecoenchants.command.tabcompleters; - -import com.willfp.eco.core.command.AbstractCommand; -import com.willfp.eco.core.command.AbstractTabCompleter; -import com.willfp.eco.core.config.ConfigUpdater; -import com.willfp.eco.util.StringUtils; -import com.willfp.ecoenchants.enchantments.EcoEnchant; -import com.willfp.ecoenchants.enchantments.EcoEnchants; -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; -import org.bukkit.util.StringUtil; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -public class TabCompleterEnchantinfo extends AbstractTabCompleter { - /** - * The cached enchantment names. - */ - private static final List ENCHANT_NAMES = EcoEnchants.values().stream().filter(EcoEnchant::isEnabled) - .map(EcoEnchant::getDisplayName).map(ChatColor::stripColor).collect(Collectors.toList()); - - /** - * Instantiate a new tab-completer for /enchantinfo. - * - * @param command /enchantinfo. - */ - public TabCompleterEnchantinfo(@NotNull final AbstractCommand command) { - super(command); - } - - /** - * Called on /ecoreload. - */ - @ConfigUpdater - public static void reload() { - ENCHANT_NAMES.clear(); - ENCHANT_NAMES.addAll(EcoEnchants.values().stream().filter(EcoEnchant::isEnabled).map(EcoEnchant::getDisplayName).map(ChatColor::stripColor).collect(Collectors.toList())); - } - - /** - * The execution of the tabcompleter. - * - * @param sender The sender of the command. - * @param args The arguments of the command. - * @return A list of tab-completions. - */ - @Override - public List onTab(@NotNull final CommandSender sender, - @NotNull final List args) { - List completions = new ArrayList<>(); - - if (args.isEmpty()) { - // Currently, this case is not ever reached - return ENCHANT_NAMES; - } - - StringUtil.copyPartialMatches(String.join(" ", args), ENCHANT_NAMES, completions); - - if (args.size() > 1) { // Remove all previous words from the candidate of completions - ArrayList finishedArgs = new ArrayList<>(args); - finishedArgs.remove(args.size() - 1); - - String prefix = String.join(" ", finishedArgs); - completions = completions.stream().map(enchantName -> StringUtils.removePrefix(enchantName, prefix).trim()).collect(Collectors.toList()); - } - - Collections.sort(completions); - return completions; - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterGiverandombook.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterGiverandombook.java deleted file mode 100644 index b0b1b0de..00000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterGiverandombook.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.willfp.ecoenchants.command.tabcompleters; - -import com.willfp.eco.core.command.AbstractCommand; -import com.willfp.eco.core.command.AbstractTabCompleter; -import com.willfp.eco.core.config.ConfigUpdater; -import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.util.StringUtil; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -public class TabCompleterGiverandombook extends AbstractTabCompleter { - /** - * The cached enchantment names. - */ - private static final List RARITY_NAMES = EnchantmentRarity.values().stream().map(EnchantmentRarity::getName).collect(Collectors.toList()); - - /** - * Instantiate a new tab-completer for /enchantinfo. - * - * @param command /enchantinfo. - */ - public TabCompleterGiverandombook(@NotNull final AbstractCommand command) { - super(command); - } - - /** - * Called on /ecoreload. - */ - @ConfigUpdater - public static void reload() { - RARITY_NAMES.clear(); - RARITY_NAMES.addAll(EnchantmentRarity.values().stream().map(EnchantmentRarity::getName).collect(Collectors.toList())); - } - - /** - * The execution of the tabcompleter. - * - * @param sender The sender of the command. - * @param args The arguments of the command. - * @return A list of tab-completions. - */ - @Override - public List onTab(@NotNull final CommandSender sender, - @NotNull final List args) { - List completions = new ArrayList<>(); - - List playerNames = Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()); - - if (args.isEmpty()) { - // Currently, this case is not ever reached - return playerNames; - } - - if (args.size() == 1) { - StringUtil.copyPartialMatches(String.join(" ", args.get(0)), playerNames, completions); - } - - if (args.size() == 2) { - StringUtil.copyPartialMatches(String.join(" ", args.get(1)), RARITY_NAMES, completions); - } - - Collections.sort(completions); - return completions; - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterRandomEnchant.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterRandomEnchant.java deleted file mode 100644 index 4f32c00b..00000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/command/tabcompleters/TabCompleterRandomEnchant.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.willfp.ecoenchants.command.tabcompleters; - -import com.willfp.eco.core.command.AbstractCommand; -import com.willfp.eco.core.command.AbstractTabCompleter; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.util.StringUtil; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -public class TabCompleterRandomEnchant extends AbstractTabCompleter { - /** - * Instantiate a new tab-completer for /randomenchant. - * - * @param command /randomenchant. - */ - public TabCompleterRandomEnchant(@NotNull final AbstractCommand command) { - super(command); - } - - /** - * The execution of the tabcompleter. - * - * @param sender The sender of the command. - * @param args The arguments of the command. - * @return A list of tab-completions. - */ - @Override - public List onTab(@NotNull final CommandSender sender, - @NotNull final List args) { - List completions = new ArrayList<>(); - - List playerNames = Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()); - - if (args.isEmpty() || !sender.hasPermission("ecoenchants.randomenchant.others")) { - // Currently, this case is not ever reached - return playerNames; - } - - if (args.size() == 1) { - StringUtil.copyPartialMatches(String.join(" ", args), playerNames, completions); - Collections.sort(completions); - return completions; - } - - return new ArrayList<>(); - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DescriptionOptions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DescriptionOptions.java index 48d20cfd..c3dbe7cc 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DescriptionOptions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DescriptionOptions.java @@ -6,7 +6,7 @@ import com.willfp.eco.util.StringUtils; import lombok.Getter; import org.jetbrains.annotations.NotNull; -public class DescriptionOptions extends PluginDependent { +public class DescriptionOptions extends PluginDependent { /** * The threshold below which to describe enchantments. */ diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DisplayOptions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DisplayOptions.java index 7574a820..182a8e70 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DisplayOptions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DisplayOptions.java @@ -18,7 +18,7 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -public class DisplayOptions extends PluginDependent { +public class DisplayOptions extends PluginDependent { /** * The description options being used. */ diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/NumbersOptions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/NumbersOptions.java index 227681f1..cef528ba 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/NumbersOptions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/NumbersOptions.java @@ -5,7 +5,7 @@ import com.willfp.eco.core.PluginDependent; import lombok.Getter; import org.jetbrains.annotations.NotNull; -public class NumbersOptions extends PluginDependent { +public class NumbersOptions extends PluginDependent { /** * If numerals should be used. *

diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/ShrinkOptions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/ShrinkOptions.java index 879b9e83..c6139d10 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/ShrinkOptions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/ShrinkOptions.java @@ -5,7 +5,7 @@ import com.willfp.eco.core.PluginDependent; import lombok.Getter; import org.jetbrains.annotations.NotNull; -public class ShrinkOptions extends PluginDependent { +public class ShrinkOptions extends PluginDependent { /** * The threshold above which enchantments will be shrunk. */ diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/AlphabeticSorter.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/AlphabeticSorter.java index 7e912849..17d053c4 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/AlphabeticSorter.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/AlphabeticSorter.java @@ -1,7 +1,7 @@ package com.willfp.ecoenchants.display.options.sorting.implementations; -import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; +import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.display.options.sorting.EnchantmentSorter; import com.willfp.ecoenchants.display.options.sorting.SortParameters; @@ -10,13 +10,13 @@ import org.jetbrains.annotations.NotNull; import java.util.List; -public class AlphabeticSorter extends PluginDependent implements EnchantmentSorter { +public class AlphabeticSorter extends PluginDependent implements EnchantmentSorter { /** * Instantiate sorter. * * @param plugin Instance of EcoEnchants. */ - public AlphabeticSorter(@NotNull final EcoPlugin plugin) { + public AlphabeticSorter(@NotNull final EcoEnchantsPlugin plugin) { super(plugin); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/LengthSorter.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/LengthSorter.java index 16578b3d..635c97d8 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/LengthSorter.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/LengthSorter.java @@ -1,7 +1,7 @@ package com.willfp.ecoenchants.display.options.sorting.implementations; -import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; +import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.display.options.sorting.EnchantmentSorter; import com.willfp.ecoenchants.display.options.sorting.SortParameters; @@ -11,13 +11,13 @@ import org.jetbrains.annotations.NotNull; import java.util.Comparator; import java.util.List; -public class LengthSorter extends PluginDependent implements EnchantmentSorter { +public class LengthSorter extends PluginDependent implements EnchantmentSorter { /** * Instantiate sorter. * * @param plugin Instance of EcoEnchants. */ - public LengthSorter(@NotNull final EcoPlugin plugin) { + public LengthSorter(@NotNull final EcoEnchantsPlugin plugin) { super(plugin); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityAlphabeticSorter.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityAlphabeticSorter.java index 2d42e66a..f91b8396 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityAlphabeticSorter.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityAlphabeticSorter.java @@ -1,8 +1,7 @@ package com.willfp.ecoenchants.display.options.sorting.implementations; -import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; -import com.willfp.ecoenchants.display.EnchantDisplay; +import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.display.options.sorting.EnchantmentSorter; import com.willfp.ecoenchants.display.options.sorting.SortParameters; @@ -12,26 +11,26 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -public class RarityAlphabeticSorter extends PluginDependent implements EnchantmentSorter { +public class RarityAlphabeticSorter extends PluginDependent implements EnchantmentSorter { /** * Instantiate sorter. * * @param plugin Instance of EcoEnchants. */ - public RarityAlphabeticSorter(@NotNull final EcoPlugin plugin) { + public RarityAlphabeticSorter(@NotNull final EcoEnchantsPlugin plugin) { super(plugin); } @Override public void sortEnchantments(@NotNull final List toSort) { - if (((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().isEmpty() - || ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().isEmpty()) { - ((EnchantDisplay) this.getPlugin().getDisplayModule()).update(); + if (this.getPlugin().getDisplayModule().getOptions().getSortedRarities().isEmpty() + || this.getPlugin().getDisplayModule().getOptions().getSortedTypes().isEmpty()) { + this.getPlugin().getDisplayModule().update(); } List sorted = new ArrayList<>(); - ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().forEach(enchantmentRarity -> { + this.getPlugin().getDisplayModule().getOptions().getSortedRarities().forEach(enchantmentRarity -> { List rarityEnchants = new ArrayList<>(); for (Enchantment enchantment : toSort) { if (EnchantmentCache.getEntry(enchantment).getRarity().equals(enchantmentRarity)) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityLengthSorter.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityLengthSorter.java index 91d411fd..bb7d4311 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityLengthSorter.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityLengthSorter.java @@ -1,8 +1,7 @@ package com.willfp.ecoenchants.display.options.sorting.implementations; -import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; -import com.willfp.ecoenchants.display.EnchantDisplay; +import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.display.options.sorting.EnchantmentSorter; import com.willfp.ecoenchants.display.options.sorting.SortParameters; @@ -13,25 +12,25 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; -public class RarityLengthSorter extends PluginDependent implements EnchantmentSorter { +public class RarityLengthSorter extends PluginDependent implements EnchantmentSorter { /** * Instantiate sorter. * * @param plugin Instance of EcoEnchants. */ - public RarityLengthSorter(@NotNull final EcoPlugin plugin) { + public RarityLengthSorter(@NotNull final EcoEnchantsPlugin plugin) { super(plugin); } @Override public void sortEnchantments(@NotNull final List toSort) { - if (((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().isEmpty() - || ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().isEmpty()) { - ((EnchantDisplay) this.getPlugin().getDisplayModule()).update(); + if (this.getPlugin().getDisplayModule().getOptions().getSortedRarities().isEmpty() + || this.getPlugin().getDisplayModule().getOptions().getSortedTypes().isEmpty()) { + this.getPlugin().getDisplayModule().update(); } List sorted = new ArrayList<>(); - ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().forEach(enchantmentRarity -> { + this.getPlugin().getDisplayModule().getOptions().getSortedRarities().forEach(enchantmentRarity -> { List rarityEnchants = new ArrayList<>(); for (Enchantment enchantment : toSort) { if (EnchantmentCache.getEntry(enchantment).getRarity().equals(enchantmentRarity)) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityTypeAlphabeticSorter.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityTypeAlphabeticSorter.java index 0fcd6f98..249f229c 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityTypeAlphabeticSorter.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityTypeAlphabeticSorter.java @@ -1,8 +1,7 @@ package com.willfp.ecoenchants.display.options.sorting.implementations; -import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; -import com.willfp.ecoenchants.display.EnchantDisplay; +import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.display.options.sorting.EnchantmentSorter; import com.willfp.ecoenchants.display.options.sorting.SortParameters; @@ -12,25 +11,25 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -public class RarityTypeAlphabeticSorter extends PluginDependent implements EnchantmentSorter { +public class RarityTypeAlphabeticSorter extends PluginDependent implements EnchantmentSorter { /** * Instantiate sorter. * * @param plugin Instance of EcoEnchants. */ - public RarityTypeAlphabeticSorter(@NotNull final EcoPlugin plugin) { + public RarityTypeAlphabeticSorter(@NotNull final EcoEnchantsPlugin plugin) { super(plugin); } @Override public void sortEnchantments(@NotNull final List toSort) { - if (((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().isEmpty() - || ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().isEmpty()) { - ((EnchantDisplay) this.getPlugin().getDisplayModule()).update(); + if (this.getPlugin().getDisplayModule().getOptions().getSortedRarities().isEmpty() + || this.getPlugin().getDisplayModule().getOptions().getSortedTypes().isEmpty()) { + this.getPlugin().getDisplayModule().update(); } List sorted = new ArrayList<>(); - ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().forEach(enchantmentType -> { + this.getPlugin().getDisplayModule().getOptions().getSortedTypes().forEach(enchantmentType -> { List typeEnchants = new ArrayList<>(); for (Enchantment enchantment : toSort) { if (EnchantmentCache.getEntry(enchantment).getType().equals(enchantmentType)) { @@ -39,7 +38,7 @@ public class RarityTypeAlphabeticSorter extends PluginDependent implements Encha } typeEnchants.sort((enchantment1, enchantment2) -> EnchantmentCache.getEntry(enchantment1).getRawName().compareToIgnoreCase(EnchantmentCache.getEntry(enchantment2).getRawName())); - ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().forEach(enchantmentRarity -> { + this.getPlugin().getDisplayModule().getOptions().getSortedRarities().forEach(enchantmentRarity -> { List rarityEnchants = new ArrayList<>(); for (Enchantment enchantment : typeEnchants) { if (EnchantmentCache.getEntry(enchantment).getRarity().equals(enchantmentRarity)) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityTypeLengthSorter.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityTypeLengthSorter.java index 256e1562..bfa0089b 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityTypeLengthSorter.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/RarityTypeLengthSorter.java @@ -1,8 +1,7 @@ package com.willfp.ecoenchants.display.options.sorting.implementations; -import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; -import com.willfp.ecoenchants.display.EnchantDisplay; +import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.display.options.sorting.EnchantmentSorter; import com.willfp.ecoenchants.display.options.sorting.SortParameters; @@ -13,25 +12,25 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; -public class RarityTypeLengthSorter extends PluginDependent implements EnchantmentSorter { +public class RarityTypeLengthSorter extends PluginDependent implements EnchantmentSorter { /** * Instantiate sorter. * * @param plugin Instance of EcoEnchants. */ - public RarityTypeLengthSorter(@NotNull final EcoPlugin plugin) { + public RarityTypeLengthSorter(@NotNull final EcoEnchantsPlugin plugin) { super(plugin); } @Override public void sortEnchantments(@NotNull final List toSort) { - if (((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().isEmpty() - || ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().isEmpty()) { - ((EnchantDisplay) this.getPlugin().getDisplayModule()).update(); + if (this.getPlugin().getDisplayModule().getOptions().getSortedRarities().isEmpty() + || this.getPlugin().getDisplayModule().getOptions().getSortedTypes().isEmpty()) { + this.getPlugin().getDisplayModule().update(); } List sorted = new ArrayList<>(); - ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().forEach(enchantmentType -> { + this.getPlugin().getDisplayModule().getOptions().getSortedTypes().forEach(enchantmentType -> { List typeEnchants = new ArrayList<>(); for (Enchantment enchantment : toSort) { if (EnchantmentCache.getEntry(enchantment).getType().equals(enchantmentType)) { @@ -41,7 +40,7 @@ public class RarityTypeLengthSorter extends PluginDependent implements Enchantme typeEnchants.sort(Comparator.comparingInt(enchantment -> EnchantmentCache.getEntry(enchantment).getRawName().length())); - ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().forEach(enchantmentRarity -> { + this.getPlugin().getDisplayModule().getOptions().getSortedRarities().forEach(enchantmentRarity -> { List rarityEnchants = new ArrayList<>(); for (Enchantment enchantment : typeEnchants) { if (EnchantmentCache.getEntry(enchantment).getRarity().equals(enchantmentRarity)) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/TypeAlphabeticSorter.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/TypeAlphabeticSorter.java index 08d9ba21..c8cfe183 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/TypeAlphabeticSorter.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/TypeAlphabeticSorter.java @@ -1,8 +1,7 @@ package com.willfp.ecoenchants.display.options.sorting.implementations; -import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; -import com.willfp.ecoenchants.display.EnchantDisplay; +import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.display.options.sorting.EnchantmentSorter; import com.willfp.ecoenchants.display.options.sorting.SortParameters; @@ -12,25 +11,25 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -public class TypeAlphabeticSorter extends PluginDependent implements EnchantmentSorter { +public class TypeAlphabeticSorter extends PluginDependent implements EnchantmentSorter { /** * Instantiate sorter. * * @param plugin Instance of EcoEnchants. */ - public TypeAlphabeticSorter(@NotNull final EcoPlugin plugin) { + public TypeAlphabeticSorter(@NotNull final EcoEnchantsPlugin plugin) { super(plugin); } @Override public void sortEnchantments(@NotNull final List toSort) { - if (((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().isEmpty() - || ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().isEmpty()) { - ((EnchantDisplay) this.getPlugin().getDisplayModule()).update(); + if (this.getPlugin().getDisplayModule().getOptions().getSortedRarities().isEmpty() + || this.getPlugin().getDisplayModule().getOptions().getSortedTypes().isEmpty()) { + this.getPlugin().getDisplayModule().update(); } List sorted = new ArrayList<>(); - ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().forEach(enchantmentType -> { + this.getPlugin().getDisplayModule().getOptions().getSortedTypes().forEach(enchantmentType -> { List typeEnchants = new ArrayList<>(); for (Enchantment enchantment : toSort) { if (EnchantmentCache.getEntry(enchantment).getType().equals(enchantmentType)) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/TypeLengthSorter.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/TypeLengthSorter.java index 126c87e2..608049ea 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/TypeLengthSorter.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/sorting/implementations/TypeLengthSorter.java @@ -1,8 +1,7 @@ package com.willfp.ecoenchants.display.options.sorting.implementations; -import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; -import com.willfp.ecoenchants.display.EnchantDisplay; +import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.display.options.sorting.EnchantmentSorter; import com.willfp.ecoenchants.display.options.sorting.SortParameters; @@ -12,25 +11,25 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -public class TypeLengthSorter extends PluginDependent implements EnchantmentSorter { +public class TypeLengthSorter extends PluginDependent implements EnchantmentSorter { /** * Instantiate sorter. * * @param plugin Instance of EcoEnchants. */ - public TypeLengthSorter(@NotNull final EcoPlugin plugin) { + public TypeLengthSorter(@NotNull final EcoEnchantsPlugin plugin) { super(plugin); } @Override public void sortEnchantments(@NotNull final List toSort) { - if (((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedRarities().isEmpty() - || ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().isEmpty()) { - ((EnchantDisplay) this.getPlugin().getDisplayModule()).update(); + if (this.getPlugin().getDisplayModule().getOptions().getSortedRarities().isEmpty() + || this.getPlugin().getDisplayModule().getOptions().getSortedTypes().isEmpty()) { + this.getPlugin().getDisplayModule().update(); } List sorted = new ArrayList<>(); - ((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().getSortedTypes().forEach(enchantmentType -> { + this.getPlugin().getDisplayModule().getOptions().getSortedTypes().forEach(enchantmentType -> { List typeEnchants = new ArrayList<>(); for (Enchantment enchantment : toSort) { if (EnchantmentCache.getEntry(enchantment).getType().equals(enchantmentType)) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/anvil/AnvilListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/anvil/AnvilListeners.java index 4e6afb0e..89a9ea54 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/anvil/AnvilListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/anvil/AnvilListeners.java @@ -21,7 +21,7 @@ import java.util.HashMap; import java.util.Objects; import java.util.UUID; -public class AnvilListeners extends PluginDependent implements Listener { +public class AnvilListeners extends PluginDependent implements Listener { /** * Map to prevent incrementing cost several times as inventory events are fired 3 times. */ diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java index 490798ba..283c02a2 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java @@ -18,7 +18,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Map; -public class GrindstoneListeners extends PluginDependent implements Listener { +public class GrindstoneListeners extends PluginDependent implements Listener { /** * Instantiate grindstone listeners and link them to a specific plugin. * diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/EnchantingListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/EnchantingListeners.java index d1ff97be..12c17e58 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/EnchantingListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/EnchantingListeners.java @@ -29,7 +29,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; -public class EnchantingListeners extends PluginDependent implements Listener { +public class EnchantingListeners extends PluginDependent implements Listener { /** * All players currently enchanting a secondary item. */ diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/VillagerListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/VillagerListeners.java index 0ae1d756..e29e9473 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/VillagerListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/VillagerListeners.java @@ -24,7 +24,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; -public class VillagerListeners extends PluginDependent implements Listener { +public class VillagerListeners extends PluginDependent implements Listener { /** * Create new villager listeners. * diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversions.java index 2e6761a0..a4a335cf 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversions.java @@ -28,7 +28,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class ItemConversions extends PluginDependent implements Listener { +public class ItemConversions extends PluginDependent implements Listener { /** * Instantiate item conversions. * diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/WatcherTriggers.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/WatcherTriggers.java index 8e5c4c43..f9c9fb2e 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/WatcherTriggers.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/WatcherTriggers.java @@ -34,7 +34,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Map; -public class WatcherTriggers extends PluginDependent implements Listener { +public class WatcherTriggers extends PluginDependent implements Listener { /** * If watchers should be triggered against npcs. */ diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml index c80a8791..3ed078ba 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -26,19 +26,22 @@ softdepend: commands: ecoreload: description: Reloads config - permission: ecoenchants.reload + permission: ecoenchants.command.reload ecodebug: description: Debug information - permission: ecoenchants.ecodebug + permission: ecoenchants.command.debug enchantinfo: description: Show information about an enchantment - permission: ecoenchants.enchantinfo + permission: ecoenchants.command.enchantinfo randomenchant: description: Adds a random enchantment to an item - permission: ecoenchants.randomenchant + permission: ecoenchants.command.randomenchant giverandombook: description: Gives a book containing a random enchantment - permission: ecoenchants.randombook + permission: ecoenchants.command.giverandombook + ecoenchants: + description: Master command for other subcommands. + permission: ecoenchants.command.ecoenchants permissions: ecoenchants.*: @@ -46,21 +49,27 @@ permissions: default: op children: ecoenchants.fromtable.*: true - ecoenchants.reload: true ecoenchants.updateannounce: true - ecoenchants.enchantinfo: true - ecoenchants.ecodebug: true - ecoenchants.randomenchant: true - ecoenchants.randomenchant.bypasshardcap: true - ecoenchants.randombook: true ecoenchants.bypasslevelclamp: true ecoenchants.anvil.*: true + ecoenchants.command.*: true ecoenchants.anvil.*: description: Allows all anvil permissions default: op children: ecoenchants.anvil.bypasshardcap: true ecoenchants.anvil.color: true + ecoenchants.command.*: + description: Allows all commands + default: op + children: + ecoenchants.command.reload: true + ecoenchants.command.debug: true + ecoenchants.command.enchantinfo: true + ecoenchants.command.randomenchant: true + ecoenchants.command.randomenchant.bypasshardcap: true + ecoenchants.command.giverandombook: true + ecoenchants.command.ecoenchants: true ecoenchants.fromtable.*: description: Allows getting all enchantments from an enchanting table default: true @@ -68,27 +77,30 @@ permissions: ecoenchants.updateannounce: description: Informs admins of a new update default: op - ecoenchants.reload: + ecoenchants.command.reload: description: Allows reloading the config default: op - ecoenchants.ecodebug: - description: Allows the use of /ecodebug to print verbose debug information to console + ecoenchants.command.debug: + description: Allows the use of /ecoenchants debug to print verbose debug information to console default: op - ecoenchants.enchantinfo: + ecoenchants.command.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 + ecoenchants.command.giverandombook: + description: Allows the use of /ecoenchants 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 + ecoenchants.command.randomenchant: + description: Allows the use of /ecoenchants randomenchant to apply a random enchantment to an item default: op - ecoenchants.randomenchant.others: - description: Allows the use of /randomenchant to apply a random enchantment to an item for another player + ecoenchants.command.randomenchant.others: + description: Allows the use of /ecoenchants randomenchant to apply a random enchantment to an item for another player default: op - ecoenchants.randomenchant.bypasshardcap: - description: Allows /randomenchant bypassing the anvil hard cap + ecoenchants.command.randomenchant.bypasshardcap: + description: Allows /ecoenchants randomenchant bypassing the anvil hard cap default: op + ecoenchants.command.ecoenchants: + description: Allows the use of /ecoenchants + default: true ecoenchants.anvil.bypasshardcap: description: Allows bypassing the anvil hard cap default: op diff --git a/eco-core/core-proxy/src/main/java/com/willfp/ecoenchants/proxy/util/ProxyFactory.java b/eco-core/core-proxy/src/main/java/com/willfp/ecoenchants/proxy/util/ProxyFactory.java index d8434e99..eb665a09 100644 --- a/eco-core/core-proxy/src/main/java/com/willfp/ecoenchants/proxy/util/ProxyFactory.java +++ b/eco-core/core-proxy/src/main/java/com/willfp/ecoenchants/proxy/util/ProxyFactory.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; import java.util.IdentityHashMap; import java.util.Map; -public class ProxyFactory extends PluginDependent { +public class ProxyFactory extends PluginDependent { /** * Cached proxy implementations in order to not perform expensive reflective class-finding. */ diff --git a/gradle.properties b/gradle.properties index aedd613b..e9a87bb8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 7.9.3 +version = 7.10.0 plugin-name = EcoEnchants \ No newline at end of file