Fix enchantments avoiding custom anvil rules when an ExcellentEnchants enchantment is present. fix #36

Also version up
This commit is contained in:
alexcrea 2024-10-18 17:43:33 +02:00
parent 1066508233
commit c0af35fa0b
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F
5 changed files with 25 additions and 11 deletions

View file

@ -15,7 +15,7 @@ plugins {
} }
group = "xyz.alexcrea" group = "xyz.alexcrea"
version = "1.6.5" version = "1.6.6"
repositories { repositories {
// EcoEnchants // EcoEnchants

View file

@ -28,7 +28,7 @@ import java.util.logging.Level
/** /**
* Bukkit/Spigot/Paper plugin to alter anvil feature * Bukkit/Spigot/Paper plugin to alter anvil feature
*/ */
class CustomAnvil : JavaPlugin() { open class CustomAnvil : JavaPlugin() {
companion object { companion object {
// bstats plugin id // bstats plugin id

View file

@ -5,6 +5,7 @@ import org.bukkit.Bukkit
import org.bukkit.event.inventory.InventoryClickEvent 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 xyz.alexcrea.cuanvil.config.ConfigHolder import xyz.alexcrea.cuanvil.config.ConfigHolder
import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester
import xyz.alexcrea.cuanvil.dependency.gui.GuiTesterSelector import xyz.alexcrea.cuanvil.dependency.gui.GuiTesterSelector
@ -105,6 +106,10 @@ object DependencyManager {
return bypass return bypass
} }
fun treatAnvilResult(event: PrepareAnvilEvent, result: ItemStack) {
excellentEnchantsCompatibility?.treatAnvilResult(event, result)
}
fun tryClickAnvilResultBypass(event: InventoryClickEvent, inventory: AnvilInventory): Boolean { fun tryClickAnvilResultBypass(event: InventoryClickEvent, inventory: AnvilInventory): Boolean {
var bypass = false var bypass = false

View file

@ -82,16 +82,17 @@ class ExcellentEnchantsDependency {
if(event.result == null) return true if(event.result == null) return true
} }
var first: ItemStack? = event.inventory.getItem(0) val first: ItemStack = treatInput(event.inventory.getItem(0))
var second: ItemStack? = event.inventory.getItem(1) val second: ItemStack = treatInput(event.inventory.getItem(1))
var result = event.result
if (first == null) first = ItemStack(Material.AIR) return handleRechargeMethod.invoke(this.anvilListener, event, first, second) as Boolean
if (second == null) second = ItemStack(Material.AIR) }
if (result == null) result = ItemStack(Material.AIR)
if(handleRechargeMethod.invoke(this.anvilListener, event, first, second) as Boolean) return true fun treatAnvilResult(event: PrepareAnvilEvent, result: ItemStack) {
return handleCombineMethod.invoke(this.anvilListener, event, first, second, result) as Boolean val first: ItemStack = treatInput(event.inventory.getItem(0))
val second: ItemStack = treatInput(event.inventory.getItem(1))
handleCombineMethod.invoke(this.anvilListener, event, first, second, result)
} }
fun testAnvilResult(event: InventoryClickEvent): Any { fun testAnvilResult(event: InventoryClickEvent): Any {
@ -100,8 +101,12 @@ class ExcellentEnchantsDependency {
return event.inventory.getItem(2) == null return event.inventory.getItem(2) == null
} }
return false; return false;
} }
fun treatInput(item: ItemStack?): ItemStack {
if(item == null) return ItemStack(Material.AIR)
return item
}
} }

View file

@ -86,6 +86,7 @@ class PrepareAnvilListener : Listener {
resultItem.amount *= amount resultItem.amount *= amount
event.result = resultItem event.result = resultItem
DependencyManager.treatAnvilResult(event, resultItem)
AnvilXpUtil.setAnvilInvXp(inventory, event.view, recipe.xpCostPerCraft * amount, true) AnvilXpUtil.setAnvilInvXp(inventory, event.view, recipe.xpCostPerCraft * amount, true)
return true return true
@ -104,6 +105,7 @@ class PrepareAnvilListener : Listener {
} }
event.result = resultItem event.result = resultItem
DependencyManager.treatAnvilResult(event, resultItem)
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem) anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem)
@ -173,6 +175,7 @@ class PrepareAnvilListener : Listener {
// Finally, we set result // Finally, we set result
event.result = resultItem event.result = resultItem
DependencyManager.treatAnvilResult(event, resultItem)
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost) AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
} }
@ -198,6 +201,7 @@ class PrepareAnvilListener : Listener {
return true return true
} }
event.result = resultItem event.result = resultItem
DependencyManager.treatAnvilResult(event, resultItem)
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost) AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
return true return true