diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/EcoBoss.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/EcoBoss.java index 3c62132..b5094f1 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/EcoBoss.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/EcoBoss.java @@ -13,6 +13,7 @@ import com.willfp.ecobosses.bosses.effects.Effect; import com.willfp.ecobosses.bosses.effects.Effects; import com.willfp.ecobosses.bosses.util.bosstype.BossEntityUtils; import com.willfp.ecobosses.bosses.util.bosstype.BossType; +import com.willfp.ecobosses.bosses.util.obj.ArgumentedEffectName; import com.willfp.ecobosses.bosses.util.obj.BossbarProperties; import com.willfp.ecobosses.bosses.util.obj.ExperienceOptions; import com.willfp.ecobosses.bosses.util.obj.ImmunityOptions; @@ -231,7 +232,7 @@ public class EcoBoss extends PluginDependent { /** * The effect names and arguments. */ - private final Map> effectNames; + private final List effectNames; /** * The target distance. @@ -460,19 +461,19 @@ public class EcoBoss extends PluginDependent { } // Effects - this.effectNames = new HashMap<>(); + this.effectNames = new ArrayList<>(); for (String string : this.getConfig().getStrings("effects")) { String effectName = string.split(":")[0]; List args = Arrays.asList(string.replace(effectName + ":", "").split(":")); - this.effectNames.put(effectName, args); + this.effectNames.add(new ArgumentedEffectName(effectName, args)); } - new HashMap<>(this.effectNames).forEach((string, args) -> { - if (Effects.getEffect(string, args) == null) { - this.effectNames.remove(string); - Bukkit.getLogger().warning("Invalid effect specified in " + this.name); + for (ArgumentedEffectName effectName : new ArrayList<>(this.effectNames)) { + if (Effects.getEffect(effectName.name(), effectName.args()) == null) { + this.effectNames.remove(effectName); + Bukkit.getLogger().warning("Invalid effect " + effectName.name() + " specified in " + this.name); } - }); + } // Targeting this.targetDistance = this.getConfig().getDouble("attacks.target.range"); @@ -533,9 +534,9 @@ public class EcoBoss extends PluginDependent { */ public List createEffects() { List effects = new ArrayList<>(); - this.effectNames.forEach((string, args) -> { - effects.add(Effects.getEffect(string, args)); - }); + for (ArgumentedEffectName effectName : this.effectNames) { + effects.add(Effects.getEffect(effectName.name(), effectName.args())); + } return effects; } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/ArgumentedEffectName.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/ArgumentedEffectName.java new file mode 100644 index 0000000..9fbb1b7 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/ArgumentedEffectName.java @@ -0,0 +1,8 @@ +package com.willfp.ecobosses.bosses.util.obj; + +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public record ArgumentedEffectName(@NotNull String name, @NotNull List args) { +}