mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-08-28 08:25:56 +02:00
add more debug & fix price not displaying after fail
This commit is contained in:
parent
8447233b1e
commit
fcbe6ba3fb
4 changed files with 46 additions and 13 deletions
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue