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 // Calculate placeholders
Placeholders placeholders = new 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_name", data.getProfess().getManaDisplay().getName());
placeholders.register("mana_color", data.getProfess().getManaDisplay().getFull().toString()); 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.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.text.DecimalFormat;
import java.util.*; import java.util.*;
public class RegisteredSkill { public class RegisteredSkill {
private final SkillHandler<?> handler; private final SkillHandler<?> handler;
private final String name; private final String name;
private final Map<String, LinearValue> defaultParameters = new HashMap<>(); private final Map<String, LinearValue> defaultParameters = new HashMap<>();
private final Map<String, DecimalFormat> parameterDecimalFormats = new HashMap<>();
private final ItemStack icon; private final ItemStack icon;
private final List<String> lore; private final List<String> lore;
private final List<String> categories; private final List<String> categories;
@ -42,10 +46,15 @@ public class RegisteredSkill {
else else
categories.add("ACTIVE"); categories.add("ACTIVE");
// Load default modifier formulas // 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); 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 * This is so that SkillAPI skill level matches the MMOCore skill level
* https://gitlab.com/phoenix-dvpmt/mmocore/-/issues/531 * https://gitlab.com/phoenix-dvpmt/mmocore/-/issues/531
@ -111,6 +120,10 @@ public class RegisteredSkill {
defaultParameters.put(parameter, linear); defaultParameters.put(parameter, linear);
} }
public DecimalFormat getDecimalFormat(String parameter) {
return parameterDecimalFormats.getOrDefault(parameter, MythicLib.plugin.getMMOConfig().decimal);
}
@Deprecated @Deprecated
public void addModifierIfNone(String mod, LinearValue defaultValue) { public void addModifierIfNone(String mod, LinearValue defaultValue) {