diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/ClassSkill.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/ClassSkill.java index 45e0c86a..b9aeb4ff 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/ClassSkill.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/ClassSkill.java @@ -9,6 +9,7 @@ import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.util.math.formula.IntegerLinearValue; import net.Indyuce.mmocore.api.util.math.formula.LinearValue; +import net.Indyuce.mmocore.gui.api.item.Placeholders; import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; @@ -96,37 +97,20 @@ public class ClassSkill implements CooldownObject { } public List calculateLore(PlayerData data, int x) { - List list = new ArrayList<>(); - Map placeholders = calculateModifiers(x); - placeholders.put("mana_name", data.getProfess().getManaDisplay().getName()); - placeholders.put("mana_color", data.getProfess().getManaDisplay().getFull().toString()); - skill.getLore().forEach(str -> list.add(applyPlaceholders(data.getPlayer(), placeholders, str))); + // Calculate placeholders + Placeholders placeholders = new Placeholders(); + modifiers.keySet().forEach(modifier -> placeholders.register(modifier, modifiers.get(modifier).getDisplay(x))); + placeholders.register("mana_name", data.getProfess().getManaDisplay().getName()); + placeholders.register("mana_color", data.getProfess().getManaDisplay().getFull().toString()); + + // Build string arraylist + List list = new ArrayList<>(); + skill.getLore().forEach(str -> list.add(placeholders.apply(data.getPlayer(), str))); return list; } - private String applyPlaceholders(Player player, Map placeholders, String str) { - String explored = str; - while (explored.contains("{") && explored.substring(explored.indexOf("{")).contains("}")) { - final int begin = explored.indexOf("{"), end = explored.indexOf("}"); - String holder = explored.substring(begin + 1, end); - - if (placeholders.containsKey(holder)) - str = str.replace("{" + holder + "}", placeholders.get(holder)); - - // Increase counter - explored = explored.substring(end + 1); - } - return MMOCore.plugin.placeholderParser.parse(player, str); - } - - private Map calculateModifiers(int x) { - Map map = new HashMap<>(); - modifiers.keySet().forEach(modifier -> map.put(modifier, modifiers.get(modifier).getDisplay(x))); - return map; - } - private LinearValue readLinearValue(LinearValue current, ConfigurationSection config) { return current instanceof IntegerLinearValue ? new IntegerLinearValue(config) : new LinearValue(config); }