mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 08:14:00 +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
|
|
@ -64,7 +64,7 @@ Officially supported but still experimental. use ExcellentEnchants item type.
|
||||||
|
|
||||||
Here is a list of supported anvil mechanic plugins with support status:
|
Here is a list of supported anvil mechanic plugins with support status:
|
||||||
- [Disenchantment](https://www.spigotmc.org/resources/disenchantment-1-21-1-1-20-6-new-book-splitting-mechanics.110741/)
|
- [Disenchantment](https://www.spigotmc.org/resources/disenchantment-1-21-1-1-20-6-new-book-splitting-mechanics.110741/)
|
||||||
Officially supported by Custom Anvil but still experimental. Mostly use Custom Anvil basic XP settings. (version >= 6.1.0)
|
Officially supported by Custom Anvil but still experimental. Mostly use Custom Anvil basic XP settings. (version >= 6.1.5)
|
||||||
|
|
||||||
- [HavenBags](https://www.spigotmc.org/resources/havenbags-shulker-like-player-bound-bags-1-17-1-21-4.110420/)
|
- [HavenBags](https://www.spigotmc.org/resources/havenbags-shulker-like-player-bound-bags-1-17-1-21-4.110420/)
|
||||||
Officially supported by Custom Anvil. Not really enchantment related but CustomAnvil should not impact bag upgrade and skin via anvil. (version >= 1.31.0)
|
Officially supported by Custom Anvil. Not really enchantment related but CustomAnvil should not impact bag upgrade and skin via anvil. (version >= 1.31.0)
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "xyz.alexcrea"
|
group = "xyz.alexcrea"
|
||||||
version = "1.8.3"
|
version = "1.9.0"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
// EcoEnchants
|
// EcoEnchants
|
||||||
|
|
@ -47,7 +47,7 @@ dependencies {
|
||||||
compileOnly(files("libs/ExcellentEnchants 4.1.0-striped.jar")) // For legacy excellent enchants
|
compileOnly(files("libs/ExcellentEnchants 4.1.0-striped.jar")) // For legacy excellent enchants
|
||||||
|
|
||||||
// Disenchantment
|
// Disenchantment
|
||||||
compileOnly(files("libs/Disenchantment-6.1.0.jar"))
|
compileOnly(files("libs/Disenchantment-6.1.5.jar"))
|
||||||
|
|
||||||
// HavenBags
|
// HavenBags
|
||||||
compileOnly(files("libs/HavenBags-1.31.0.1760.jar"))
|
compileOnly(files("libs/HavenBags-1.31.0.1760.jar"))
|
||||||
|
|
|
||||||
Binary file not shown.
BIN
libs/Disenchantment-6.1.5.jar
Normal file
BIN
libs/Disenchantment-6.1.5.jar
Normal file
Binary file not shown.
|
|
@ -1,5 +1,6 @@
|
||||||
package xyz.alexcrea.cuanvil.dependency
|
package xyz.alexcrea.cuanvil.dependency
|
||||||
|
|
||||||
|
import com.jankominek.disenchantment.Disenchantment
|
||||||
import com.jankominek.disenchantment.events.DisenchantClickEvent
|
import com.jankominek.disenchantment.events.DisenchantClickEvent
|
||||||
import com.jankominek.disenchantment.events.DisenchantEvent
|
import com.jankominek.disenchantment.events.DisenchantEvent
|
||||||
import com.jankominek.disenchantment.events.ShatterClickEvent
|
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.event.inventory.PrepareAnvilEvent
|
||||||
import org.bukkit.inventory.AnvilInventory
|
import org.bukkit.inventory.AnvilInventory
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
import org.bukkit.plugin.RegisteredListener
|
|
||||||
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
|
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
|
||||||
import xyz.alexcrea.cuanvil.util.AnvilXpUtil
|
import xyz.alexcrea.cuanvil.util.AnvilXpUtil
|
||||||
|
|
||||||
|
|
@ -20,55 +20,9 @@ class DisenchantmentDependency {
|
||||||
CustomAnvil.instance.logger.info("Disenchantment Detected !")
|
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() {
|
fun redirectListeners() {
|
||||||
val toUnregister = ArrayList<RegisteredListener>()
|
PrepareAnvilEvent.getHandlerList().unregister(Disenchantment.plugin)
|
||||||
// get required PrepareAnvilEvent listener
|
InventoryClickEvent.getHandlerList().unregister(Disenchantment.plugin)
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testPrepareAnvil(event: PrepareAnvilEvent, player: HumanEntity): Boolean {
|
fun testPrepareAnvil(event: PrepareAnvilEvent, player: HumanEntity): Boolean {
|
||||||
|
|
@ -76,15 +30,14 @@ class DisenchantmentDependency {
|
||||||
event.result = null
|
event.result = null
|
||||||
|
|
||||||
// Test if event change the result
|
// Test if event change the result
|
||||||
itemEvent.onDisenchantmentEvent(event)
|
DisenchantEvent.onEvent(event)
|
||||||
|
|
||||||
if(event.result != null) {
|
if(event.result != null) {
|
||||||
CustomAnvil.log("Detected pre anvil item extract bypass.")
|
CustomAnvil.log("Detected pre anvil item extract bypass.")
|
||||||
AnvilXpUtil.setAnvilInvXp(event.inventory, event.view, player, event.inventory.repairCost)
|
AnvilXpUtil.setAnvilInvXp(event.inventory, event.view, player, event.inventory.repairCost)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
splitEvent.onDisenchantmentEvent(event)
|
ShatterEvent.onEvent(event)
|
||||||
if(event.result != null) {
|
if(event.result != null) {
|
||||||
CustomAnvil.log("Detected pre anvil split enchant bypass.")
|
CustomAnvil.log("Detected pre anvil split enchant bypass.")
|
||||||
AnvilXpUtil.setAnvilInvXp(event.inventory, event.view, player, event.inventory.repairCost)
|
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()
|
val previousResultSlot = inventory.getItem(PrepareAnvilListener.ANVIL_OUTPUT_SLOT)?.clone()
|
||||||
|
|
||||||
// Test event if change the result
|
// Test event if change the result
|
||||||
itemClickEvent.onDisenchantmentClickEvent(event)
|
DisenchantClickEvent.onEvent(event)
|
||||||
if(!testAnvilInventoryChange(inventory, previousResultSlot) || event.isCancelled) {
|
if(!testAnvilInventoryChange(inventory, previousResultSlot) || event.isCancelled) {
|
||||||
CustomAnvil.log("Detected anvil click item extract bypass.")
|
CustomAnvil.log("Detected anvil click item extract bypass.")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
splitBookClickEvent.onDisenchantmentClickEvent(event)
|
ShatterClickEvent.onEvent(event)
|
||||||
if(!testAnvilInventoryChange(inventory, previousResultSlot) || event.isCancelled) {
|
if(!testAnvilInventoryChange(inventory, previousResultSlot) || event.isCancelled) {
|
||||||
CustomAnvil.log("Detected anvil click split enchant bypass.")
|
CustomAnvil.log("Detected anvil click split enchant bypass.")
|
||||||
return true
|
return true
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue