diff --git a/api/src/main/java/kr/toxicity/damage/api/manager/ConfigManager.java b/api/src/main/java/kr/toxicity/damage/api/manager/ConfigManager.java index 99621fb..6f579ad 100644 --- a/api/src/main/java/kr/toxicity/damage/api/manager/ConfigManager.java +++ b/api/src/main/java/kr/toxicity/damage/api/manager/ConfigManager.java @@ -54,7 +54,12 @@ public interface ConfigManager extends DamageManager { * @return auto save time */ long autoSaveTime(); - + /** + * Checks if decimal damage display is enabled + * Default: false + * @return decimal damage + */ + boolean showDecimalDamage(); /** * Gets default damage effect * @return default damage effect diff --git a/core/src/main/kotlin/kr/toxicity/damage/effect/DamageEffectImpl.kt b/core/src/main/kotlin/kr/toxicity/damage/effect/DamageEffectImpl.kt index a1c9696..b71bd12 100644 --- a/core/src/main/kotlin/kr/toxicity/damage/effect/DamageEffectImpl.kt +++ b/core/src/main/kotlin/kr/toxicity/damage/effect/DamageEffectImpl.kt @@ -1,5 +1,6 @@ package kr.toxicity.damage.effect +import kr.toxicity.damage.api.BetterDamage import kr.toxicity.damage.api.effect.DamageEffect import kr.toxicity.damage.api.effect.DamageEffectCounter import kr.toxicity.damage.api.equation.TEquation @@ -38,8 +39,12 @@ class DamageEffectImpl(section: ConfigurationSection) : DamageEffect { private val opacity = section.getAsEquation("opacity") ?: TEquation.FULL_OPACITY private val counter = DamageEffectCounter() private val numberFormat = runCatching { - DecimalFormat(section.getString("number-format", "#")) - }.getOrNull() ?: DecimalFormat("#") + if (section.isSet("number-format")) { + DecimalFormat(section.getString("number-format", "#")) + } else { + null + } + }.getOrNull() override fun image(): DamageImage = image override fun duration(): Int = duration @@ -53,5 +58,9 @@ class DamageEffectImpl(section: ConfigurationSection) : DamageEffect { override fun skyLight(): TEquation = skyLight override fun counter(): DamageEffectCounter = counter override fun opacity(): TEquation = opacity - override fun numberFormat(): NumberFormat = numberFormat -} \ No newline at end of file + override fun numberFormat(): NumberFormat = numberFormat ?: if (BetterDamage.inst().configManager().showDecimalDamage()) { + DecimalFormat("#.#") // Format avec une décimale si l'option est activée + } else { + DecimalFormat("#") // Format entier par défaut + } +} diff --git a/core/src/main/kotlin/kr/toxicity/damage/manager/ConfigManagerImpl.kt b/core/src/main/kotlin/kr/toxicity/damage/manager/ConfigManagerImpl.kt index f59219d..850072c 100644 --- a/core/src/main/kotlin/kr/toxicity/damage/manager/ConfigManagerImpl.kt +++ b/core/src/main/kotlin/kr/toxicity/damage/manager/ConfigManagerImpl.kt @@ -25,6 +25,7 @@ object ConfigManagerImpl : ConfigManager { private var packType = "zip" private var createMcmeta = false private var autoSaveTime = 300L * 20 + private var showDecimalDamage = false private var effectSupplier: () -> DamageEffect? = { null } @@ -46,6 +47,7 @@ object ConfigManagerImpl : ConfigManager { packType = getString("pack-type") ?: "zip" createMcmeta = getBoolean("create-mcmeta") autoSaveTime = getLong("auto-save-time", 300) * 20 + showDecimalDamage = getBoolean("show-decimal-damage", false) effectSupplier = (getString("default-effect") ?: "default_effect").let { { EffectManagerImpl.effect(it) @@ -84,6 +86,7 @@ object ConfigManagerImpl : ConfigManager { override fun createMcmeta(): Boolean = createMcmeta override fun autoSaveTime(): Long = autoSaveTime override fun metrics(): Boolean = metrics != null + override fun showDecimalDamage(): Boolean = showDecimalDamage override fun defaultEffect(): DamageEffect? = effectSupplier() override fun defaultSkin(): DamageSkin? = skinSupplier() -} \ No newline at end of file +} diff --git a/core/src/main/resources/config.yml b/core/src/main/resources/config.yml index bbe876c..357fa46 100644 --- a/core/src/main/resources/config.yml +++ b/core/src/main/resources/config.yml @@ -6,4 +6,5 @@ pack-type: zip #folder, zip create-mcmeta: false auto-save-time: 300 default-effect: "null" #Default effect -default-skin: "default_skin" \ No newline at end of file +default-skin: "default_skin" +show-decimal-damage: false diff --git a/core/src/main/resources/default/effects/default_effect.yml b/core/src/main/resources/default/effects/default_effect.yml index 6a480de..c58f265 100644 --- a/core/src/main/resources/default/effects/default_effect.yml +++ b/core/src/main/resources/default/effects/default_effect.yml @@ -36,4 +36,23 @@ default_effect_crit: scale: #1.5 to 0 x: 1.5cos(t / 40 * pi) y: 1.5cos(t / 40 * pi) - z: 1.5cos(t / 40 * pi) \ No newline at end of file + z: 1.5cos(t / 40 * pi) +default_effect_decimal: + image: default_image + duration: 20 + interval: 2 + number-format: "#.#" + color: "#FFD800" + transformation: + position: + x: 0 + y: 1.5sin(t / 40 * pi) + z: 0 + rotation: + x: 60(r - 0.5) + z: 0 + y: 60(r - 0.5) + scale: + x: cos(t / 40 * pi) + y: cos(t / 40 * pi) + z: cos(t / 40 * pi) diff --git a/core/src/main/resources/default/images/default_image.yml b/core/src/main/resources/default/images/default_image.yml index 89b03f7..4c4004b 100644 --- a/core/src/main/resources/default/images/default_image.yml +++ b/core/src/main/resources/default/images/default_image.yml @@ -1,3 +1,4 @@ default_image: file: "default.png" - space: -2 \ No newline at end of file + codepoints: "0123456789." + space: -2