From 514c1e36a01892545aadfc66e83e5c9474fa7a12 Mon Sep 17 00:00:00 2001 From: Exanthiax <107284021+Exanthiax@users.noreply.github.com> Date: Sun, 27 Sep 2026 13:54:25 +0100 Subject: [PATCH 1/2] feat: component stat tracker lore --- .../display/StatTrackersDisplay.kt | 57 +++++++------------ 1 file changed, 20 insertions(+), 37 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/stattrackers/display/StatTrackersDisplay.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/stattrackers/display/StatTrackersDisplay.kt index 1162823..1eddd20 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/stattrackers/display/StatTrackersDisplay.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/stattrackers/display/StatTrackersDisplay.kt @@ -1,11 +1,14 @@ package com.willfp.stattrackers.display import com.willfp.eco.core.display.Display +import com.willfp.eco.core.display.DisplayContext +import com.willfp.eco.core.display.DisplayLore import com.willfp.eco.core.display.DisplayModule import com.willfp.eco.core.display.DisplayPriority import com.willfp.eco.core.fast.FastItemStack import com.willfp.eco.core.fast.fast import com.willfp.eco.util.NumberUtils +import com.willfp.eco.util.toComponent import com.willfp.stattrackers.plugin import com.willfp.stattrackers.stats.statTracker import com.willfp.stattrackers.stats.trackedStats @@ -16,75 +19,55 @@ import org.bukkit.inventory.ItemStack @Suppress("DEPRECATION") object StatTrackersDisplay : DisplayModule(plugin, DisplayPriority.HIGH) { - override fun display( - itemStack: ItemStack, - vararg args: Any - ) { - val fis = itemStack.fast() + override fun display(context: DisplayContext) { + val fis = context.itemStack.fast() - if (!displayRegularItem(fis)) { - displayTracker(itemStack, fis) + if (!displayRegularItem(fis, context.lore)) { + displayTracker(context.itemStack, fis, context.lore) } } private fun displayTracker( itemStack: ItemStack, - fis: FastItemStack + fis: FastItemStack, + lore: DisplayLore ) { val stat = fis.persistentDataContainer.statTracker ?: return - val trackerMeta = stat.tracker.itemMeta ?: return val meta = itemStack.itemMeta ?: return meta.setDisplayName(trackerMeta.displayName) - if (trackerMeta.hasCustomModelData()) { meta.setCustomModelData(trackerMeta.customModelData) } - val lore = mutableListOf() - - lore.addAll(stat.tracker.fast().lore) - meta.addEnchant(Registry.ENCHANTMENT.get(NamespacedKey.minecraft("smite"))!!, 1, true) meta.addItemFlags(ItemFlag.HIDE_ENCHANTS) - - val itemLore = meta.lore ?: mutableListOf() - - lore.addAll(itemLore) - - meta.lore = lore - itemStack.itemMeta = meta + + lore.prepend(stat.tracker.fast().loreComponents.map { Display.stripDisplayMarker(it) }) } - private fun displayRegularItem(fis: FastItemStack): Boolean { - val pdc = fis.persistentDataContainer + private fun displayRegularItem( + fis: FastItemStack, + lore: DisplayLore + ): Boolean { + val stats = fis.persistentDataContainer.trackedStats - val stats = pdc.trackedStats if (stats.isEmpty()) { return false } - val itemLore = fis.lore - - val statLore = mutableListOf() - - for (stat in stats) { - statLore.add( - Display.PREFIX + stat.stat.display - .replace("%value%", NumberUtils.format(stat.value)) - ) + val statLore = stats.map { + it.stat.display.replace("%value%", NumberUtils.format(it.value)).toComponent() } if (plugin.configYml.getBool("display-at-top")) { - itemLore.addAll(0, statLore) + lore.prepend(statLore) } else { - itemLore.addAll(statLore) + lore.append(statLore) } - fis.lore = itemLore - return true } } From ebd3f4da0994a097b6de61e2bd8b418763969a53 Mon Sep 17 00:00:00 2001 From: Exanthiax <107284021+Exanthiax@users.noreply.github.com> Date: Sun, 27 Sep 2026 14:38:15 +0100 Subject: [PATCH 2/2] chore: bump eco api version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 78b7f17..679a9f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ #libreforge-updater #Tue Jun 23 15:48:31 BST 2026 eco-version=2026.38 -eco-api-version=2026.35 +eco-api-version=2026.39 kotlin.code.style=official libreforge-version=2026.38 version=2026.38