9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-02 13:56:38 +00:00

Fixed descriptions

This commit is contained in:
Auxilor
2023-05-11 19:00:46 +01:00
parent 5cee22e810
commit 03ff928d82
2 changed files with 28 additions and 20 deletions

View File

@@ -10,7 +10,9 @@ import com.willfp.eco.core.placeholder.PlayerStaticPlaceholder
import com.willfp.eco.core.placeholder.PlayerlessPlaceholder
import com.willfp.eco.core.placeholder.context.placeholderContext
import com.willfp.eco.core.registry.KRegistrable
import com.willfp.eco.util.NumberUtils
import com.willfp.eco.util.formatEco
import com.willfp.eco.util.toNiceString
import com.willfp.eco.util.toNumeral
import com.willfp.ecoskills.EcoSkillsPlugin
import com.willfp.ecoskills.util.DescriptionPlaceholder
@@ -45,12 +47,7 @@ abstract class Levellable(
}.map { it.uniqueId }
}
// Lazy init so config placeholders can inject
private val unformattedDescription by lazy {
loadDescriptionPlaceholders(config).fold(config.getString("description")) { desc, it ->
desc.replace("%${it.id}%", it.expr)
}
}
private val unformattedDescription = config.getString("description")
val name = config.getFormattedString("name")
@@ -92,11 +89,20 @@ abstract class Levellable(
}
fun getDescription(player: Player): String {
return unformattedDescription.formatEco(
placeholderContext(
player = player,
injectable = LevelInjectable(getActualLevel(player))
)
var desc = unformattedDescription
val context = placeholderContext(
player = player,
injectable = LevelInjectable(getActualLevel(player))
)
for (placeholder in loadDescriptionPlaceholders(config)) {
val id = placeholder.id
val value = NumberUtils.evaluateExpression(placeholder.expr, context)
desc = desc.replace("%$id%", value.toNiceString())
}
return desc.formatEco(context)
}
}

View File

@@ -12,7 +12,6 @@ import com.willfp.eco.util.toNiceString
import com.willfp.eco.util.toNumeral
import com.willfp.ecoskills.EcoSkillsPlugin
import com.willfp.ecoskills.api.getFormattedRequiredXP
import com.willfp.ecoskills.api.getRequiredXP
import com.willfp.ecoskills.api.getSkillLevel
import com.willfp.ecoskills.api.getSkillProgress
import com.willfp.ecoskills.api.getSkillXP
@@ -193,17 +192,20 @@ class Skill(
.filter { it <= level } // Only consider levels not greater than the provided level
.maxOrNull() ?: 1 // Get the maximum level, default to 1 if no suitable level was found
val rawMessages = config.getStrings("reward-messages.$highestConfiguredLevel")
val messages = config.getStrings("reward-messages.$highestConfiguredLevel").toMutableList()
val messages = loadDescriptionPlaceholders(config).fold(rawMessages) { desc, placeholder ->
desc.map { s -> s.replace("%${placeholder.id}%", placeholder.expr) }
val context = placeholderContext(
injectable = LevelInjectable(level)
)
for (placeholder in loadDescriptionPlaceholders(config)) {
val id = placeholder.id
val value = NumberUtils.evaluateExpression(placeholder.expr, context)
messages.replaceAll { s -> s.replace("%$id%", value.toNiceString()) }
}
return messages.formatEco(
placeholderContext(
injectable = LevelInjectable(level)
)
)
return messages.formatEco(context)
}
internal fun handleLevelUp(player: OfflinePlayer, level: Int) {