diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Gem_Sockets.java b/src/main/java/net/Indyuce/mmoitems/stat/Gem_Sockets.java index 93b6f007..50d64b46 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Gem_Sockets.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Gem_Sockets.java @@ -25,7 +25,6 @@ import net.Indyuce.mmoitems.api.util.AltChar; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.GemSocketsData; import net.Indyuce.mmoitems.stat.data.StatData; -import net.Indyuce.mmoitems.stat.data.StringListData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; import net.mmogroup.mmolib.api.item.NBTItem; @@ -37,7 +36,7 @@ public class Gem_Sockets extends ItemStat { @Override public void whenLoaded(MMOItem item, ConfigurationSection config) { - item.setData(this, new GemSocketsData(new StringListData(config.getStringList("gem-sockets")))); + item.setData(this, new GemSocketsData(config.getStringList("gem-sockets"))); } @Override diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/ColorData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/ColorData.java index c4ab16f7..575a3fe5 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/ColorData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/ColorData.java @@ -6,11 +6,12 @@ import org.bukkit.Color; import net.Indyuce.mmoitems.api.item.MMOItem; public class ColorData extends StatData { - private int red, green, blue; + private final int red, green, blue; public ColorData(MMOItem mmoitem, String string) { String[] split = string.split("\\ "); Validate.isTrue(split.length > 2, "Must specify 3 numbers for red, green and blue"); + red = Math.min(255, Math.max(0, Integer.parseInt(split[0]))); green = Math.min(255, Math.max(0, Integer.parseInt(split[1]))); blue = Math.min(255, Math.max(0, Integer.parseInt(split[2]))); @@ -38,24 +39,6 @@ public class ColorData extends StatData { return blue; } - public void setRed(int value) { - red = value; - } - - public void setGreen(int value) { - green = value; - } - - public void setBlue(int value) { - blue = value; - } - - public void setColor(Color color) { - red = color.getRed(); - green = color.getGreen(); - blue = color.getBlue(); - } - public Color getColor() { return Color.fromRGB(red, green, blue); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/EffectListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/EffectListData.java index 6ac9c9f8..269f5cc0 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/EffectListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/EffectListData.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; public class EffectListData extends StatData implements Mergeable { - private List effects = new ArrayList<>(); + private final List effects = new ArrayList<>(); public EffectListData(PotionEffectData... effects) { add(effects); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/GemSocketsData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/GemSocketsData.java index 7e5b3162..7c1c8e57 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/GemSocketsData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/GemSocketsData.java @@ -17,28 +17,15 @@ import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.item.MMOItem; import net.Indyuce.mmoitems.stat.Abilities.AbilityListData; import net.Indyuce.mmoitems.stat.type.DoubleStat.DoubleData; -import net.mmogroup.mmolib.api.item.NBTItem; import net.Indyuce.mmoitems.stat.type.ItemStat; +import net.mmogroup.mmolib.api.item.NBTItem; public class GemSocketsData extends StatData { - private Set gems = new HashSet<>(); - private List slots; + private final Set gems = new HashSet<>(); + private final List emptySlots; - /* - * used when the MMOItem is generated. when the item has already been - * generated, the direct item slot amount isloaded. - */ - private StringListData unloadedSlots; - private boolean loaded; - - public GemSocketsData(List slots) { - this.slots = slots; - this.loaded = true; - } - - public GemSocketsData(StringListData unloadedSlots) { - this.unloadedSlots = unloadedSlots; - this.loaded = false; + public GemSocketsData(List emptySlots) { + this.emptySlots = emptySlots; } public boolean canReceive(String gem) { @@ -46,7 +33,7 @@ public class GemSocketsData extends StatData { } public String getEmptySocket(String gem) { - for (String slot : slots) + for (String slot : emptySlots) if (gem.equals("") || slot.equals(MMOItems.plugin.getConfig().getString("gem-sockets.uncolored")) || gem.equals(slot)) return slot; return null; @@ -57,12 +44,12 @@ public class GemSocketsData extends StatData { } public void apply(String gem, GemstoneData gemstone) { - slots.remove(getEmptySocket(gem)); + emptySlots.remove(getEmptySocket(gem)); gems.add(gemstone); } public List getEmptySlots() { - return loaded ? slots : unloadedSlots.getList(); + return emptySlots; } public Set getGemstones() { @@ -92,11 +79,11 @@ public class GemSocketsData extends StatData { } public class GemstoneData { - private Set abilities = new HashSet<>(); - private List effects = new ArrayList<>(); - private Map stats = new HashMap<>(); + private final Set abilities = new HashSet<>(); + private final List effects = new ArrayList<>(); + private final Map stats = new HashMap<>(); // private ParticleData particle; - private String name; + private final String name; /* * This constructor is not really performance friendly. It should only @@ -115,9 +102,9 @@ public class GemSocketsData extends StatData { public GemstoneData(NBTItem nbtItem, MMOItem mmoitem) { if (mmoitem.hasData(ItemStat.ABILITIES)) - abilities = ((AbilityListData) mmoitem.getData(ItemStat.ABILITIES)).getAbilities(); + ((AbilityListData) mmoitem.getData(ItemStat.ABILITIES)).getAbilities().forEach(data -> abilities.add(data)); if (mmoitem.hasData(ItemStat.PERM_EFFECTS)) - effects = ((EffectListData) mmoitem.getData(ItemStat.PERM_EFFECTS)).getEffects(); + ((EffectListData) mmoitem.getData(ItemStat.PERM_EFFECTS)).getEffects().forEach(data -> effects.add(data)); for (ItemStat stat : MMOItems.plugin.getStats().getDoubleStats()) if (mmoitem.hasData(stat)) stats.put(stat, ((DoubleData) mmoitem.getData(stat)).getMin()); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/ParticleData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/ParticleData.java index fbf295c0..c969b70a 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/ParticleData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/ParticleData.java @@ -25,7 +25,7 @@ public class ParticleData extends StatData { private final Particle particle; private final Map modifiers = new HashMap<>(); - private Color color; + private final Color color; public ParticleData(JsonObject object) { particle = Particle.valueOf(object.get("Particle").getAsString()); @@ -33,8 +33,9 @@ public class ParticleData extends StatData { if (object.has("Color")) { JsonObject color = object.getAsJsonObject("Color"); - setColor(color.get("Red").getAsInt(), color.get("Green").getAsInt(), color.get("Blue").getAsInt()); - } + this.color = Color.fromRGB(color.get("Red").getAsInt(), color.get("Green").getAsInt(), color.get("Blue").getAsInt()); + } else + color = null; object.getAsJsonObject("Modifiers").entrySet().forEach(entry -> setModifier(entry.getKey(), entry.getValue().getAsDouble())); } @@ -48,17 +49,17 @@ public class ParticleData extends StatData { format = config.getString("particle").toUpperCase().replace("-", "_").replace(" ", "_"); particle = Particle.valueOf(format); - for (String key : config.getKeys(false)) { - if (key.equalsIgnoreCase("color")) - setColor(config.getInt("color.red"), config.getInt("color.green"), config.getInt("color.blue")); - else if (!key.equalsIgnoreCase("particle") && !key.equalsIgnoreCase("type")) + color = config.contains("color") ? Color.fromRGB(config.getInt("color.red"), config.getInt("color.green"), config.getInt("color.blue")) : null; + + for (String key : config.getKeys(false)) + if (!key.equalsIgnoreCase("particle") && !key.equalsIgnoreCase("type") && !key.equalsIgnoreCase("color")) setModifier(key, config.getDouble(key)); - } } public ParticleData(ParticleType type, Particle particle) { this.type = type; this.particle = particle; + this.color = null; } public ParticleType getType() { @@ -81,10 +82,6 @@ public class ParticleData extends StatData { return modifiers.keySet(); } - public void setColor(int red, int green, int blue) { - color = Color.fromRGB(red, green, blue); - } - public void setModifier(String path, double value) { modifiers.put(path, value); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/PotionEffectData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/PotionEffectData.java index ba2ff97f..9484c68b 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/PotionEffectData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/PotionEffectData.java @@ -6,7 +6,7 @@ import org.bukkit.potion.PotionEffectType; import net.Indyuce.mmoitems.MMOUtils; public class PotionEffectData { - private PotionEffect effect; + private final PotionEffect effect; public PotionEffectData(PotionEffectType type, int level) { effect = new PotionEffect(type, MMOUtils.getEffectDuration(type), level - 1, true, false); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/StringListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/StringListData.java index 1bdfe890..2fc9e9ce 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/StringListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/StringListData.java @@ -7,7 +7,7 @@ import java.util.List; import com.google.gson.JsonArray; public class StringListData extends StatData { - private List list; + private final List list; public StringListData() { this(new ArrayList<>()); @@ -19,6 +19,7 @@ public class StringListData extends StatData { public StringListData(JsonArray array) { this(); + array.forEach(str -> list.add(str.getAsString())); } @@ -29,8 +30,4 @@ public class StringListData extends StatData { public List getList() { return list; } - - public void setList(List list) { - this.list = list; - } }