diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/WrappedEnchantment.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/WrappedEnchantment.java index a452dce..55c8b01 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/enchant/WrappedEnchantment.java +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/WrappedEnchantment.java @@ -10,7 +10,7 @@ import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.alexcrea.cuanvil.dependency.DependencyManager; -import xyz.alexcrea.cuanvil.enchant.wrapped.VanillaEnchant; +import xyz.alexcrea.cuanvil.enchant.wrapped.VanillaEnchantment; import java.util.*; import java.util.logging.Level; @@ -230,7 +230,7 @@ public abstract class WrappedEnchantment { */ public static void registerEnchantments(){ for (Enchantment enchantment : Enchantment.values()) { - register(new VanillaEnchant(enchantment)); + register(new VanillaEnchantment(enchantment)); } if(DependencyManager.INSTANCE.getEnchantmentSquaredCompatibility() != null){ diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/EnchantSquaredEnchantment.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/EnchantSquaredEnchantment.java new file mode 100644 index 0000000..3683487 --- /dev/null +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/EnchantSquaredEnchantment.java @@ -0,0 +1,47 @@ +package xyz.alexcrea.cuanvil.enchant.wrapped; + +import me.athlaeos.enchantssquared.enchantments.CustomEnchant; +import me.athlaeos.enchantssquared.managers.CustomEnchantManager; +import org.bukkit.NamespacedKey; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; +import xyz.alexcrea.cuanvil.enchant.WrappedEnchantment; + +import java.util.Map; +import java.util.Objects; + +public class EnchantSquaredEnchantment extends WrappedEnchantment { + + private final @NotNull CustomEnchant enchant; + public EnchantSquaredEnchantment(@NotNull CustomEnchant enchant, @NotNull Plugin enchantSquared) { + super(Objects.requireNonNull(NamespacedKey.fromString(enchant.getType().toLowerCase(), enchantSquared)), null, enchant.getMaxLevel()); + this.enchant = enchant; + + } + + //TODO optimise for bulk operation + + @Override + public int getLevel(@NotNull ItemStack item, @NotNull ItemMeta meta) { + return CustomEnchantManager.getInstance().getEnchantStrength(item, this.enchant.getType()); + } + + @Override + public boolean isEnchantmentPresent(@NotNull ItemStack item, @NotNull ItemMeta meta) { + Map enchants = CustomEnchantManager.getInstance().getItemsEnchantsFromPDC(item); + return enchants.containsKey(this.enchant); + } + + @Override + public void addEnchantmentUnsafe(@NotNull ItemStack item, int level) { + CustomEnchantManager.getInstance().addEnchant(item, this.enchant.getType(), level); + } + + @Override + public void removeFrom(@NotNull ItemStack item) { + CustomEnchantManager.getInstance().removeEnchant(item, this.enchant.getType()); + } + +} diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/VanillaEnchant.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/VanillaEnchantment.java similarity index 95% rename from src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/VanillaEnchant.java rename to src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/VanillaEnchantment.java index 3347d0e..17b0201 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/VanillaEnchant.java +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/VanillaEnchantment.java @@ -12,11 +12,11 @@ import xyz.alexcrea.cuanvil.enchant.WrappedEnchantment; import java.util.Locale; -public class VanillaEnchant extends WrappedEnchantment { +public class VanillaEnchantment extends WrappedEnchantment { private final @NotNull Enchantment enchantment; - public VanillaEnchant(@NotNull Enchantment enchantment){ + public VanillaEnchantment(@NotNull Enchantment enchantment){ super(enchantment.getKey(), getRarity(enchantment), enchantment.getMaxLevel()); diff --git a/src/main/kotlin/io/delilaheve/CustomAnvil.kt b/src/main/kotlin/io/delilaheve/CustomAnvil.kt index 64c2926..f2fd784 100644 --- a/src/main/kotlin/io/delilaheve/CustomAnvil.kt +++ b/src/main/kotlin/io/delilaheve/CustomAnvil.kt @@ -91,12 +91,12 @@ class CustomAnvil : JavaPlugin() { logger.warning("Please note CustomAnvil is a more recent version of UnsafeEnchantsPlus") } - // Register enchantments - WrappedEnchantment.registerEnchantments() - // Load dependency DependencyManager.loadDependency() + // Register enchantments + WrappedEnchantment.registerEnchantments() + // Load chat listener chatListener = ChatEventListener() pluginManager.registerEvents(chatListener, this) diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt index 6a460cc..fa9c994 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt @@ -20,10 +20,9 @@ object DependencyManager { // Enchantment Squared dependency enchantmentSquaredCompatibility = - if(pluginManager.isPluginEnabled("EnchantsSquared")) EnchantmentSquaredDependency() + if(pluginManager.isPluginEnabled("EnchantsSquared")) EnchantmentSquaredDependency(pluginManager.getPlugin("EnchantsSquared")!!) else null - } } diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/EnchantmentSquaredDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/EnchantmentSquaredDependency.kt index e641e5a..2ecdbb9 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/EnchantmentSquaredDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/EnchantmentSquaredDependency.kt @@ -1,9 +1,17 @@ package xyz.alexcrea.cuanvil.dependency -class EnchantmentSquaredDependency { +import me.athlaeos.enchantssquared.managers.CustomEnchantManager +import org.bukkit.plugin.Plugin +import xyz.alexcrea.cuanvil.enchant.WrappedEnchantment +import xyz.alexcrea.cuanvil.enchant.wrapped.EnchantSquaredEnchantment + +class EnchantmentSquaredDependency(private val enchantmentSquaredPlugin: Plugin) { fun registerEnchantements(){ - //TODO + for (enchant in CustomEnchantManager.getInstance().allEnchants.values) { + WrappedEnchantment.register(EnchantSquaredEnchantment(enchant, enchantmentSquaredPlugin)) + } + } }