add more debug & fix price not displaying after fail

This commit is contained in:
alexcrea 2026-06-28 23:29:49 +02:00
parent 8447233b1e
commit fcbe6ba3fb
Signed by: alexcrea
GPG key ID: E346CD16413450E3
4 changed files with 46 additions and 13 deletions

View file

@ -22,7 +22,7 @@ plugins {
} }
group = "xyz.alexcrea" group = "xyz.alexcrea"
version = "1.17.5" version = "1.17.6"
val isDevBuild = System.getenv("SMALL_COMMIT_HASH") != null val isDevBuild = System.getenv("SMALL_COMMIT_HASH") != null
val isPreRelease = System.getenv("IS_GITHUB_PRERELEASE") == "true" val isPreRelease = System.getenv("IS_GITHUB_PRERELEASE") == "true"

View file

@ -107,12 +107,17 @@ class AnvilResultListener : Listener {
if (canMerge) { if (canMerge) {
val result = AnvilMergeLogic.doMerge(view, inventory, player, leftItem, rightItem) val result = AnvilMergeLogic.doMerge(view, inventory, player, leftItem, rightItem)
extractAnvilResult( val worked = extractAnvilResult(
event, player, inventory, event, player, inventory,
null, 0, null, 0,
null, 0, null, 0,
result result
) )
if(!worked) {
CustomAnvil.verboseLog("Merge extract failed. reset the displayed price")
// Reset the price
AnvilXpUtil.setAnvilResult(inventory, view, player, result)
}
return return
} }
@ -276,11 +281,20 @@ class AnvilResultListener : Listener {
val cost = result.cost val cost = result.cost
if (cost.isMonetary) { if (cost.isMonetary) {
val result = EconomyManager.economy!!.remove(player, cost.asMonetaryCost()) val result = EconomyManager.economy!!.remove(player, cost.asMonetaryCost())
if (!result) return false if (!result) {
CustomAnvil.verboseLog("Could not remove monetary cost ${cost.asMonetaryCost()}")
return false
}
} else { } else {
val xpCost = cost.filteredXpCost() val xpCost = cost.filteredXpCost()
if (xpCost > AnvilXpUtil.maximumXpCost(result.ignoreXpRules)) return false if (xpCost > AnvilXpUtil.maximumXpCost(result.ignoreXpRules)) {
if (player.level < xpCost) return false CustomAnvil.verboseLog("Cost above maximum $xpCost > ${AnvilXpUtil.maximumXpCost(result.ignoreXpRules)}")
return false
}
if (player.level < xpCost) {
CustomAnvil.verboseLog("Player do not have enough xp ${player.level} < $xpCost")
return false
}
player.level -= xpCost player.level -= xpCost
} }
@ -298,7 +312,10 @@ class AnvilResultListener : Listener {
rightRemoveCount: Int, rightRemoveCount: Int,
result: AnvilResult result: AnvilResult
): Boolean { ): Boolean {
if (result.isEmpty()) return false if (result.isEmpty()) {
CustomAnvil.verboseLog("Merge result is empty")
return false
}
// To avoid vanilla, we cancel the event // To avoid vanilla, we cancel the event
event.result = Event.Result.DENY event.result = Event.Result.DENY
@ -306,7 +323,10 @@ class AnvilResultListener : Listener {
val cost = result.cost val cost = result.cost
processCost(inventory, player, cost) processCost(inventory, player, cost)
if (!cost.valid && player.gameMode != GameMode.CREATIVE) return false if (!cost.valid && player.gameMode != GameMode.CREATIVE) {
CustomAnvil.verboseLog("Player cannot afford the cost")
return false
}
// Where should we get the item // Where should we get the item
val slotDestination = getActionSlot(event, player) val slotDestination = getActionSlot(event, player)

View file

@ -171,11 +171,7 @@ class PrepareAnvilListener : Listener {
private fun applyResult(event: PrepareAnvilEvent, player: Player, result: AnvilResult) { private fun applyResult(event: PrepareAnvilEvent, player: Player, result: AnvilResult) {
event.result = result.item event.result = result.item
if(result.item == null) { AnvilXpUtil.setAnvilResult(event.inventory, event.view, player, result)
AnvilXpUtil.onNoResult(player, event.view)
return
}
AnvilXpUtil.setAnvilInvCost(event.inventory, event.view, player, result.cost, result.ignoreXpRules)
} }
} }

View file

@ -15,6 +15,7 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.Repairable import org.bukkit.inventory.meta.Repairable
import org.bukkit.persistence.PersistentDataType import org.bukkit.persistence.PersistentDataType
import xyz.alexcrea.cuanvil.anvil.AnvilCost import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.AnvilResult
import xyz.alexcrea.cuanvil.anvil.AnvilUseType import xyz.alexcrea.cuanvil.anvil.AnvilUseType
import xyz.alexcrea.cuanvil.config.ConfigHolder import xyz.alexcrea.cuanvil.config.ConfigHolder
import xyz.alexcrea.cuanvil.dependency.DependencyManager import xyz.alexcrea.cuanvil.dependency.DependencyManager
@ -28,7 +29,23 @@ object AnvilXpUtil {
const val EXCLUSIVE_PENALTY_PREFIX = "repair_cost" const val EXCLUSIVE_PENALTY_PREFIX = "repair_cost"
/** /**
* Display the required cost (either as xp or as ) * Display the required cost (either as xp or as money) or reset anvil price depending on result
*/
fun setAnvilResult(
inventory: AnvilInventory,
view: InventoryView,
player: Player,
result: AnvilResult) {
if(result.item == null) {
onNoResult(player, view)
return
}
setAnvilInvCost(inventory, view, player, result.cost, result.ignoreXpRules)
}
/**
* Display the required cost (either as xp or as money)
*/ */
fun setAnvilInvCost( fun setAnvilInvCost(
inventory: AnvilInventory, inventory: AnvilInventory,