Merge branch 'v2.x.x' into feature/v2/itemType_group

# Conflicts:
#	build.gradle.kts
#	src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CABukkitEnchantment.java
#	src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt
#	src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt
This commit is contained in:
alexcrea 2025-08-16 16:05:47 +02:00
commit 147d5887e5
Signed by: alexcrea
GPG key ID: E346CD16413450E3
7 changed files with 32 additions and 37 deletions

View file

@ -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"))

Binary file not shown.

Binary file not shown.

View file

@ -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<EnchantmentTarget, String> 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());
}

View file

@ -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
}

View file

@ -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 {

View file

@ -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}]