From f6bcbc732293d0c182dfc0345be6fdfd7300fe7d Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 29 Aug 2020 16:19:35 +0100 Subject: [PATCH] Updated Essentials Integration --- .../willfp/ecoenchants/EcoEnchantsPlugin.java | 5 ---- .../ecoenchants/enchantments/EcoEnchant.java | 4 --- .../ecoenchants/enchantments/EcoEnchants.java | 2 ++ .../essentials/EssentialsManager.java | 16 ++++++++++++ .../essentials/EssentialsWrapper.java | 7 +++++ .../plugins/IntegrationEssentials.java | 26 +++++++++++++++++++ .../com/willfp/ecoenchants/loader/Loader.java | 11 +++++--- 7 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/EssentialsManager.java create mode 100644 Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/EssentialsWrapper.java create mode 100644 Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/plugins/IntegrationEssentials.java diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java b/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java index da6e60b2..0a37b578 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java @@ -30,11 +30,6 @@ public class EcoEnchantsPlugin extends JavaPlugin { */ public static String newVersion; - /** - * Has Essentials? - */ - public static boolean hasEssentials; - /** * ProtocolLib */ diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java index dba851ad..c1401e07 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java @@ -100,10 +100,6 @@ public abstract class EcoEnchant extends Enchantment implements Listener { f.setAccessible(false); Enchantment.registerEnchantment(this); - - if(EcoEnchantsPlugin.hasEssentials) { - ((Map) FieldUtils.readDeclaredStaticField(Enchantments.class, "ENCHANTMENTS", true)).put(this.getKey().getKey(), this); - } } catch (NoSuchFieldException | IllegalAccessException ignored) {} } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java index 8aff214e..9b629b6e 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchants.java @@ -4,6 +4,7 @@ import com.willfp.ecoenchants.enchantments.ecoenchants.artifact.*; import com.willfp.ecoenchants.enchantments.ecoenchants.curse.*; import com.willfp.ecoenchants.enchantments.ecoenchants.normal.*; import com.willfp.ecoenchants.enchantments.ecoenchants.special.*; +import com.willfp.ecoenchants.integrations.essentials.EssentialsManager; import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; @@ -289,6 +290,7 @@ public class EcoEnchants { for (EcoEnchant ecoEnchant : new HashSet<>(getAll())) { ecoEnchant.update(); } + EssentialsManager.registerEnchantments(); } /** diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/EssentialsManager.java b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/EssentialsManager.java new file mode 100644 index 00000000..202af2dd --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/EssentialsManager.java @@ -0,0 +1,16 @@ +package com.willfp.ecoenchants.integrations.essentials; + +import java.util.HashSet; +import java.util.Set; + +public class EssentialsManager { + private static final Set registered = new HashSet<>(); + + public static void registerAntigrief(EssentialsWrapper essentials) { + registered.add(essentials); + } + + public static void registerEnchantments() { + registered.forEach((EssentialsWrapper::registerAllEnchantments)); + } +} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/EssentialsWrapper.java b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/EssentialsWrapper.java new file mode 100644 index 00000000..ed8a095e --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/EssentialsWrapper.java @@ -0,0 +1,7 @@ +package com.willfp.ecoenchants.integrations.essentials; + +import com.willfp.ecoenchants.integrations.Integration; + +public interface EssentialsWrapper extends Integration { + void registerAllEnchantments(); +} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/plugins/IntegrationEssentials.java b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/plugins/IntegrationEssentials.java new file mode 100644 index 00000000..0d291918 --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/essentials/plugins/IntegrationEssentials.java @@ -0,0 +1,26 @@ +package com.willfp.ecoenchants.integrations.essentials.plugins; + +import com.earth2me.essentials.Enchantments; +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.integrations.essentials.EssentialsWrapper; +import org.apache.commons.lang.reflect.FieldUtils; +import org.bukkit.enchantments.Enchantment; + +import java.util.Map; + +@SuppressWarnings("unchecked") +public class IntegrationEssentials implements EssentialsWrapper { + @Override + public void registerAllEnchantments() { + try { + for (Enchantment enchantment : EcoEnchants.getAll()) { + ((Map) FieldUtils.readDeclaredStaticField(Enchantments.class, "ENCHANTMENTS", true)).put(enchantment.getKey().getKey(), enchantment); + } + } catch (IllegalAccessException ignored) {} + } + + @Override + public String getPluginName() { + return "Essentials"; + } +} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java b/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java index bb06c6a2..1601be5b 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java @@ -25,6 +25,8 @@ import com.willfp.ecoenchants.integrations.anticheat.plugins.AnticheatAAC; import com.willfp.ecoenchants.integrations.anticheat.plugins.AnticheatMatrix; import com.willfp.ecoenchants.integrations.antigrief.AntigriefManager; import com.willfp.ecoenchants.integrations.antigrief.plugins.*; +import com.willfp.ecoenchants.integrations.essentials.EssentialsManager; +import com.willfp.ecoenchants.integrations.essentials.plugins.IntegrationEssentials; import com.willfp.ecoenchants.listeners.EnchantingListeners; import com.willfp.ecoenchants.listeners.PlayerJoinListener; import com.willfp.ecoenchants.listeners.VillagerListeners; @@ -143,9 +145,12 @@ public class Loader { Bukkit.getLogger().info("Lands: §9DISABLED"); } - EcoEnchantsPlugin.hasEssentials = Bukkit.getPluginManager().isPluginEnabled("Essentials"); - if(EcoEnchantsPlugin.hasEssentials) Bukkit.getLogger().info("Essentials: §aENABLED"); - else Bukkit.getLogger().info("Essentials: §9DISABLED"); + if(Bukkit.getPluginManager().isPluginEnabled("Essentials")) { + EssentialsManager.registerAntigrief(new IntegrationEssentials()); + Bukkit.getLogger().info("Essentials: §aENABLED"); + } else { + Bukkit.getLogger().info("Essentials: §9DISABLED"); + } if(Bukkit.getPluginManager().isPluginEnabled("AAC")) { AnticheatManager.registerAnticheat(new AnticheatAAC());