Update disenchantment

also version up
This commit is contained in:
alexcrea 2025-03-10 23:17:37 +01:00
parent 335bca0335
commit 393653bac6
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F
5 changed files with 10 additions and 57 deletions

View file

@ -1,5 +1,6 @@
package xyz.alexcrea.cuanvil.dependency
import com.jankominek.disenchantment.Disenchantment
import com.jankominek.disenchantment.events.DisenchantClickEvent
import com.jankominek.disenchantment.events.DisenchantEvent
import com.jankominek.disenchantment.events.ShatterClickEvent
@ -10,7 +11,6 @@ import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.event.inventory.PrepareAnvilEvent
import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.ItemStack
import org.bukkit.plugin.RegisteredListener
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
import xyz.alexcrea.cuanvil.util.AnvilXpUtil
@ -20,55 +20,9 @@ class DisenchantmentDependency {
CustomAnvil.instance.logger.info("Disenchantment Detected !")
}
private lateinit var splitEvent: ShatterEvent
private lateinit var itemEvent: DisenchantEvent
private lateinit var splitBookClickEvent: ShatterClickEvent
private lateinit var itemClickEvent: DisenchantClickEvent
fun redirectListeners() {
val toUnregister = ArrayList<RegisteredListener>()
// get required PrepareAnvilEvent listener
for (registeredListener in PrepareAnvilEvent.getHandlerList().registeredListeners) {
val listener = registeredListener.listener
if(listener is ShatterEvent){
this.splitEvent = listener
toUnregister.add(registeredListener)
}
if(listener is DisenchantEvent){
itemEvent = listener
toUnregister.add(registeredListener)
}
}
for (listener in toUnregister) {
PrepareAnvilEvent.getHandlerList().unregister(listener)
}
toUnregister.clear()
// get required InventoryClickEvent listener
for (registeredListener in InventoryClickEvent.getHandlerList().registeredListeners) {
val listener = registeredListener.listener
if(listener is ShatterClickEvent){
splitBookClickEvent = listener
toUnregister.add(registeredListener)
}
if(listener is DisenchantClickEvent){
itemClickEvent = listener
toUnregister.add(registeredListener)
}
}
for (listener in toUnregister) {
InventoryClickEvent.getHandlerList().unregister(listener)
}
PrepareAnvilEvent.getHandlerList().unregister(Disenchantment.plugin)
InventoryClickEvent.getHandlerList().unregister(Disenchantment.plugin)
}
fun testPrepareAnvil(event: PrepareAnvilEvent, player: HumanEntity): Boolean {
@ -76,15 +30,14 @@ class DisenchantmentDependency {
event.result = null
// Test if event change the result
itemEvent.onDisenchantmentEvent(event)
DisenchantEvent.onEvent(event)
if(event.result != null) {
CustomAnvil.log("Detected pre anvil item extract bypass.")
AnvilXpUtil.setAnvilInvXp(event.inventory, event.view, player, event.inventory.repairCost)
return true
}
splitEvent.onDisenchantmentEvent(event)
ShatterEvent.onEvent(event)
if(event.result != null) {
CustomAnvil.log("Detected pre anvil split enchant bypass.")
AnvilXpUtil.setAnvilInvXp(event.inventory, event.view, player, event.inventory.repairCost)
@ -99,13 +52,13 @@ class DisenchantmentDependency {
val previousResultSlot = inventory.getItem(PrepareAnvilListener.ANVIL_OUTPUT_SLOT)?.clone()
// Test event if change the result
itemClickEvent.onDisenchantmentClickEvent(event)
DisenchantClickEvent.onEvent(event)
if(!testAnvilInventoryChange(inventory, previousResultSlot) || event.isCancelled) {
CustomAnvil.log("Detected anvil click item extract bypass.")
return true
}
splitBookClickEvent.onDisenchantmentClickEvent(event)
ShatterClickEvent.onEvent(event)
if(!testAnvilInventoryChange(inventory, previousResultSlot) || event.isCancelled) {
CustomAnvil.log("Detected anvil click split enchant bypass.")
return true