From 8919ab0d2aedf6e584776bcc647671c63e723b5a Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 8 Jul 2024 18:45:58 +0100 Subject: [PATCH] Rewrote how scroll uses are tracked --- .../com/willfp/ecoscrolls/scrolls/Items.kt | 30 ++++++++++--------- .../com/willfp/ecoscrolls/scrolls/Scroll.kt | 9 +++--- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoscrolls/scrolls/Items.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoscrolls/scrolls/Items.kt index 5beca41..301d18f 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoscrolls/scrolls/Items.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoscrolls/scrolls/Items.kt @@ -9,7 +9,7 @@ import org.bukkit.persistence.PersistentDataContainer import org.bukkit.persistence.PersistentDataType private val SCROLL_KEY = plugin.createNamespacedKey("scroll") -private val SCROLL_USES_KEY = plugin.createNamespacedKey("scroll_uses") +private val SCROLL_USES_LEFT_KEY = plugin.createNamespacedKey("scroll_uses_left") private val SCROLLS_KEY = plugin.createNamespacedKey("scrolls") private val SCROLL_ID_KEY = plugin.createNamespacedKey("scroll") private val SCROLL_LEVEL_KEY = plugin.createNamespacedKey("level") @@ -40,37 +40,39 @@ var PersistentDataContainer.scroll: Scroll? this.set(SCROLL_KEY, PersistentDataType.STRING, value.id) } -var ItemStack.scrollUses: Int - get() = this.fast().scrollUses +var ItemStack.scrollUsesLeft: Int + get() = this.fast().scrollUsesLeft set(value) { - this.fast().scrollUses = value + this.fast().scrollUsesLeft = value } -var FastItemStack.scrollUses: Int - get() = this.persistentDataContainer.scrollUses +var FastItemStack.scrollUsesLeft: Int + get() = this.persistentDataContainer.scrollUsesLeft set(value) { - this.persistentDataContainer.scrollUses = value + this.persistentDataContainer.scrollUsesLeft = value } -var PersistentDataContainer.scrollUses: Int +var PersistentDataContainer.scrollUsesLeft: Int get() { - return this.get(SCROLL_USES_KEY, PersistentDataType.INTEGER) ?: 0 + return this.get(SCROLL_USES_LEFT_KEY, PersistentDataType.INTEGER) ?: 0 } set(value) { if (value == 0) { - this.remove(SCROLL_USES_KEY) + this.remove(SCROLL_USES_LEFT_KEY) return } - this.set(SCROLL_USES_KEY, PersistentDataType.INTEGER, value) + this.set(SCROLL_USES_LEFT_KEY, PersistentDataType.INTEGER, value) } fun ItemStack.useScroll() { - val scroll = this.scroll ?: return + if (this.scroll == null) { + return + } - this.scrollUses++ + this.scrollUsesLeft-- - if (this.scrollUses >= scroll.maxUses) { + if (this.scrollUsesLeft <= 0) { this.amount-- } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoscrolls/scrolls/Scroll.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoscrolls/scrolls/Scroll.kt index 9edbbbf..ec92d4f 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoscrolls/scrolls/Scroll.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoscrolls/scrolls/Scroll.kt @@ -13,7 +13,6 @@ import com.willfp.eco.core.placeholder.templates.DynamicInjectablePlaceholder import com.willfp.eco.core.price.ConfiguredPrice import com.willfp.eco.core.recipe.Recipes import com.willfp.eco.core.registry.KRegistrable -import com.willfp.eco.util.evaluateExpression import com.willfp.eco.util.evaluateExpressionOrNull import com.willfp.eco.util.formatEco import com.willfp.eco.util.toNumeral @@ -29,7 +28,6 @@ import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack import java.util.Objects import java.util.regex.Pattern -import kotlin.math.max class Scroll( plugin: EcoScrollsPlugin, @@ -65,6 +63,7 @@ class Scroll( fis.scroll = this fis.displayName = itemName.formatEco() fis.lore = itemLore.formatEco().map { Display.PREFIX + it } + fis.lore + fis.scrollUsesLeft = maxUses fis.unwrap() } @@ -131,15 +130,15 @@ class Scroll( private val usesLeftPlaceholder = object : DynamicInjectablePlaceholder(Pattern.compile("uses_left")) { override fun getValue(p0: String, p1: PlaceholderContext): String? { val item = p1.itemStack ?: return null - val scroll = item.scroll ?: return null - return (scroll.maxUses - item.scrollUses).toString() + return item.scrollUsesLeft.toString() } } private val usesPlaceholder = object : DynamicInjectablePlaceholder(Pattern.compile("uses")) { override fun getValue(p0: String, p1: PlaceholderContext): String? { val item = p1.itemStack ?: return null - return item.scrollUses.toString() + val scroll = item.scroll ?: return null + return (scroll.maxUses - item.scrollUsesLeft).toString() } }