Rewrote how scroll uses are tracked

This commit is contained in:
Auxilor
2024-07-08 18:45:58 +01:00
parent 776abef5e2
commit 8919ab0d2a
2 changed files with 20 additions and 19 deletions

View File

@@ -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--
}
}

View File

@@ -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()
}
}