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

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

View file

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

View file

@ -82,16 +82,17 @@ class ExcellentEnchantsDependency {
if(event.result == null) return true
}
var first: ItemStack? = event.inventory.getItem(0)
var second: ItemStack? = event.inventory.getItem(1)
var result = event.result
val first: ItemStack = treatInput(event.inventory.getItem(0))
val second: ItemStack = treatInput(event.inventory.getItem(1))
if (first == null) first = ItemStack(Material.AIR)
if (second == null) second = ItemStack(Material.AIR)
if (result == null) result = ItemStack(Material.AIR)
return handleRechargeMethod.invoke(this.anvilListener, event, first, second) as Boolean
}
if(handleRechargeMethod.invoke(this.anvilListener, event, first, second) as Boolean) return true
return handleCombineMethod.invoke(this.anvilListener, event, first, second, result) as Boolean
fun treatAnvilResult(event: PrepareAnvilEvent, result: ItemStack) {
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 {
@ -100,8 +101,12 @@ class ExcellentEnchantsDependency {
return event.inventory.getItem(2) == null
}
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
event.result = resultItem
DependencyManager.treatAnvilResult(event, resultItem)
AnvilXpUtil.setAnvilInvXp(inventory, event.view, recipe.xpCostPerCraft * amount, true)
return true
@ -104,6 +105,7 @@ class PrepareAnvilListener : Listener {
}
event.result = resultItem
DependencyManager.treatAnvilResult(event, resultItem)
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem)
@ -173,6 +175,7 @@ class PrepareAnvilListener : Listener {
// Finally, we set result
event.result = resultItem
DependencyManager.treatAnvilResult(event, resultItem)
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
}
@ -198,6 +201,7 @@ class PrepareAnvilListener : Listener {
return true
}
event.result = resultItem
DependencyManager.treatAnvilResult(event, resultItem)
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
return true