diff --git a/build.gradle.kts b/build.gradle.kts index cda35e8..11dfb97 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -27,13 +27,16 @@ repositories { // EcoEnchants maven(url = "https://repo.auxilor.io/repository/maven-public/") + // ExcellentEnchants + maven(url = "https://repo.nightexpressdev.com/releases") + // ProtocoLib maven(url = "https://repo.dmulloy2.net/repository/public/") } dependencies { // Paper - paperweight.paperDevBundle("1.21.1-R0.1-SNAPSHOT") + paperweight.paperDevBundle("1.21.8-R0.1-SNAPSHOT") // Gui library val inventoryFramework = "xyz.alexcrea.cuanvil.inventoryframework:IF-CustomAnvil:0.10.18.2" @@ -48,8 +51,9 @@ dependencies { compileOnly("com.willfp:eco:6.74.5") // ExcellentEnchants - compileOnly(files("libs/nightcore-2.7.3.jar")) - compileOnly(files("libs/ExcellentEnchants-5.0.0.jar")) + compileOnly("su.nightexpress.excellentenchants:Core:5.1.0") { + exclude("org.spigotmc") + } // Disenchantment compileOnly(files("libs/Disenchantment-6.1.5.jar")) diff --git a/libs/ExcellentEnchants-4.3.3-striped.jar b/libs/ExcellentEnchants-4.3.3-striped.jar new file mode 100644 index 0000000..ff0656b Binary files /dev/null and b/libs/ExcellentEnchants-4.3.3-striped.jar differ diff --git a/libs/ExcellentEnchants-5.0.0.jar b/libs/ExcellentEnchants-5.0.0.jar deleted file mode 100644 index cd96e5d..0000000 Binary files a/libs/ExcellentEnchants-5.0.0.jar and /dev/null differ diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CABukkitEnchantment.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CABukkitEnchantment.java index 6b87d7d..3fa9efb 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CABukkitEnchantment.java +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CABukkitEnchantment.java @@ -1,10 +1,8 @@ package xyz.alexcrea.cuanvil.enchant.wrapped; -import io.delilaheve.CustomAnvil; import io.delilaheve.util.ConfigOptions; import io.delilaheve.util.ItemUtil; import org.bukkit.enchantments.Enchantment; -import org.bukkit.enchantments.EnchantmentTarget; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.ItemMeta; @@ -14,13 +12,8 @@ import xyz.alexcrea.cuanvil.enchant.CAEnchantmentBase; import xyz.alexcrea.cuanvil.enchant.EnchantmentProperties; import xyz.alexcrea.cuanvil.enchant.EnchantmentRarity; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; import java.util.Locale; -import java.util.Map; import java.util.Objects; -import java.util.logging.Level; /** * Custom Anvil enchantment implementation for vanilla registered enchantment. @@ -114,25 +107,6 @@ public class CABukkitEnchantment extends CAEnchantmentBase { return this.bukkit; } - private static final Map targetToGroup = new HashMap<>(); - - static { - targetToGroup.put(EnchantmentTarget.ARMOR, "armors"); - targetToGroup.put(EnchantmentTarget.ARMOR_HEAD, "helmets"); - targetToGroup.put(EnchantmentTarget.ARMOR_TORSO, "chestplate"); - targetToGroup.put(EnchantmentTarget.ARMOR_LEGS, "leggings"); - targetToGroup.put(EnchantmentTarget.ARMOR_FEET, "boots"); - targetToGroup.put(EnchantmentTarget.BOW, "bow"); - targetToGroup.put(EnchantmentTarget.BREAKABLE, "can_unbreak"); - targetToGroup.put(EnchantmentTarget.CROSSBOW, "crossbow"); - targetToGroup.put(EnchantmentTarget.FISHING_ROD, "fishing_rod"); - targetToGroup.put(EnchantmentTarget.TOOL, "tools"); - targetToGroup.put(EnchantmentTarget.TRIDENT, "trident"); - targetToGroup.put(EnchantmentTarget.VANISHABLE, "can_vanish"); - targetToGroup.put(EnchantmentTarget.WEAPON, "swords"); - targetToGroup.put(EnchantmentTarget.WEARABLE, "wearable"); - } - private static EnchantmentRarity findRarity(Enchantment enchantment) { return EnchantmentRarity.getRarity(enchantment.getAnvilCost()); } diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt index 038c5db..0f18e44 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt @@ -11,11 +11,7 @@ object GuiTesterSelector { return when (versionParts[1]) { 21 -> when (versionParts[2]) { - 0, 1 -> "1_21_R1" - 2, 3 -> "1_21_R2" - 4 -> "1_21_R3" - 5 -> "1_21_R4" - 6, 7, 8 -> "1_21_R5" + 8 -> "1_21_R5" else -> null } diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt index 9280de1..3d02cd3 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt @@ -5,15 +5,18 @@ import com.jankominek.disenchantment.events.DisenchantClickEvent import com.jankominek.disenchantment.events.DisenchantEvent import com.jankominek.disenchantment.events.ShatterClickEvent import com.jankominek.disenchantment.events.ShatterEvent +import com.jankominek.disenchantment.listeners.ShatterClickListener import io.delilaheve.CustomAnvil import org.bukkit.entity.HumanEntity +import org.bukkit.event.Listener import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.inventory.ItemStack import org.bukkit.inventory.view.AnvilView import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener import xyz.alexcrea.cuanvil.util.AnvilXpUtil - +import java.util.logging.Level +import kotlin.reflect.KClass @Suppress("unstableApiUsage") class DisenchantmentDependency { @@ -24,7 +27,25 @@ class DisenchantmentDependency { fun redirectListeners() { PrepareAnvilEvent.getHandlerList().unregister(Disenchantment.plugin) - InventoryClickEvent.getHandlerList().unregister(Disenchantment.plugin) + + // unregister only the feature click event and not all + // This is to avoid the disenchantment gui breaking + try { + unregisterStaticDisenchantmentListener(ShatterClickListener::class) + unregisterStaticDisenchantmentListener(InventoryClickEvent::class) + } catch (e: Exception) { + CustomAnvil.instance.logger.log( + Level.SEVERE, "Could not initialize disenchantment support" + + "please report this bug to the developer", e + ) + } + } + + private fun unregisterStaticDisenchantmentListener(clazz: KClass<*>) { + val field = clazz.java.getDeclaredField("listener") + field.isAccessible = true + val listener: Listener = field.get(null) as Listener + InventoryClickEvent.getHandlerList().unregister(listener) } fun testPrepareAnvil(event: PrepareAnvilEvent, player: HumanEntity): Boolean { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0e58169..fc083a6 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,7 +4,7 @@ prefix: "Custom Anvil" version: ${version} folia-supported: true description: Allow to customise anvil mechanics -api-version: 1.16 +api-version: 1.21.8 load: POSTWORLD authors: [ DelilahEve, alexcrea ] libraries: [${libraries}]