mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
Update disenchantment
also version up
This commit is contained in:
parent
335bca0335
commit
393653bac6
5 changed files with 10 additions and 57 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue