Added possibility to specify decimal format for each skill parameter regarding issue #866.

This commit is contained in:
Ka0rX 2023-06-25 15:13:04 +01:00
parent 892b04cd3a
commit 49b699b54b
2 changed files with 18 additions and 2 deletions

View File

@ -149,7 +149,10 @@ public class ClassSkill implements CooldownObject, Unlockable {
// Calculate placeholders
Placeholders placeholders = new Placeholders();
parameters.keySet().forEach(modifier -> placeholders.register(modifier, MythicLib.plugin.getMMOConfig().decimal.format(data.getMMOPlayerData().getSkillModifierMap().getInstance(skill.getHandler(), modifier).getTotal(parameters.get(modifier).calculate(x)))));
parameters.keySet()
.forEach(param -> {
placeholders.register(param, skill.getDecimalFormat(param).format(data.getMMOPlayerData().getSkillModifierMap().getInstance(skill.getHandler(), param).getTotal(parameters.get(param).calculate(x))));
});
placeholders.register("mana_name", data.getProfess().getManaDisplay().getName());
placeholders.register("mana_color", data.getProfess().getManaDisplay().getFull().toString());

View File

@ -13,12 +13,16 @@ import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.text.DecimalFormat;
import java.util.*;
public class RegisteredSkill {
private final SkillHandler<?> handler;
private final String name;
private final Map<String, LinearValue> defaultParameters = new HashMap<>();
private final Map<String, DecimalFormat> parameterDecimalFormats = new HashMap<>();
private final ItemStack icon;
private final List<String> lore;
private final List<String> categories;
@ -42,10 +46,15 @@ public class RegisteredSkill {
else
categories.add("ACTIVE");
// Load default modifier formulas
for (String param : handler.getParameters())
for (String param : handler.getParameters()) {
if (config.contains(param + ".decimal-format"))
parameterDecimalFormats.put(param, new DecimalFormat(config.getString(param + ".decimal-format")));
defaultParameters.put(param, config.contains(param) ? new LinearValue(config.getConfigurationSection(param)) : LinearValue.ZERO);
}
/*
* This is so that SkillAPI skill level matches the MMOCore skill level
* https://gitlab.com/phoenix-dvpmt/mmocore/-/issues/531
@ -111,6 +120,10 @@ public class RegisteredSkill {
defaultParameters.put(parameter, linear);
}
public DecimalFormat getDecimalFormat(String parameter) {
return parameterDecimalFormats.getOrDefault(parameter, MythicLib.plugin.getMMOConfig().decimal);
}
@Deprecated
public void addModifierIfNone(String mod, LinearValue defaultValue) {