diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/player/PlayerProfile.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/player/PlayerProfile.java index 793438edb..74a2bf75a 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/api/player/PlayerProfile.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/player/PlayerProfile.java @@ -455,7 +455,6 @@ public final class PlayerProfile { public boolean isProtected(ProtectionType type) { int armorCount = 0; - boolean first = true; NamespacedKey setId = null; for (HashedArmorpiece armor : armor) { @@ -465,16 +464,15 @@ public final class PlayerProfile { if (armorPiece.get() instanceof CustomProtection) { CustomProtection protectedArmor = (CustomProtection) armorPiece.get(); - if (first) { - if (protectedArmor.isFullSetRequired()) setId = armorPiece.get().getSetId(); - first = false; + if (setId == null && protectedArmor.isFullSetRequired()) { + setId = protectedArmor.getSetId(); } for (ProtectionType protectionType : protectedArmor.getProtectionTypes()) { if (protectionType == type) { if (setId == null) { return true; - } else if (setId.equals(armorPiece.get().getSetId())) { + } else if (setId.equals(protectedArmor.getSetId())) { armorCount++; } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/attributes/CustomProtection.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/attributes/CustomProtection.java index f6b7af88e..8a24a4cc2 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/attributes/CustomProtection.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/attributes/CustomProtection.java @@ -1,5 +1,6 @@ package io.github.thebusybiscuit.slimefun4.core.attributes; +import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageEvent; @@ -7,12 +8,12 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.armor.HazmatArmor import io.github.thebusybiscuit.slimefun4.implementation.items.armor.SlimefunArmorPiece; /** - * Implement this interface for any {@link SlimefunArmorPiece} to prevent - * the {@link Player} wearing that {@link SlimefunArmorPiece} + * Implement this interface to a {@link SlimefunArmorPiece} to protect + * the {@link Player} who wears that {@link SlimefunArmorPiece} from + * {@link ProtectionType} damage. * - * Important: This will not cancel any {@link EntityDamageEvent}. - * It will simply prevent Slimefun from ever applying {@link ProtectionType} - * to this {@link SlimefunArmorPiece}'s wearer. + * Important: You need to specify which {@link ProtectionType} damages + * to protect the {@link Player} from. * * @author Linox * @@ -24,18 +25,25 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.armor.SlimefunArm public interface CustomProtection extends ItemAttribute { /** - * This returns the {@link ProtectionType}s this {@link ItemAttribute} - * prevents the assigned {@link SlimefunArmorPiece} to be damaged by. + * This returns which {@link ProtectionType} damages this {@link ItemAttribute} + * will protect the {@link Player} from. * - * @return The {@link ProtectionType}s + * @return The {@link ProtectionType}s. */ ProtectionType[] getProtectionTypes(); /** - * This returns the {@link ProtectionType}s this {@link ItemAttribute} - * prevents the assigned {@link SlimefunArmorPiece} to be damaged by. + * This returns whether the full set is required for {@link Player}'s protection on + * assigned {@link ProtectionType} damages. * - * @return The {@link ProtectionType}s + * @return Whether or not he full set is required. */ boolean isFullSetRequired(); + + /** + * This returns the armor set {@link NamespacedKey} of this {@link SlimefunArmorPiece}. + * + * @return The set {@link NamespacedKey}, null if none is found. + */ + NamespacedKey getSetId(); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java index 6d124d54c..1be536b0e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; @@ -14,6 +13,7 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import io.github.thebusybiscuit.cscorelib2.chat.ChatColors; import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion; import io.github.thebusybiscuit.slimefun4.core.attributes.MachineTier; import io.github.thebusybiscuit.slimefun4.core.attributes.MachineType; @@ -299,36 +299,35 @@ public final class SlimefunItems { REINFORCED_ALLOY_BOOTS.addUnsafeEnchantments(reinforced); if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_15)) { - ItemMeta scubaHelmetMeta = SCUBA_HELMET.getItemMeta(); List scubaHelmetMetaLore = scubaHelmetMeta.getLore(); scubaHelmetMetaLore.addAll(Arrays.asList("", - ChatColor.translateAlternateColorCodes('&', "&7Equip the full set for:"), - ChatColor.translateAlternateColorCodes('&', "&7+Bee Protection"))); + ChatColors.color( "&7Equip the full set for:"), + ChatColors.color( "&7+Bee Protection"))); scubaHelmetMeta.setLore(scubaHelmetMetaLore); SCUBA_HELMET.setItemMeta(scubaHelmetMeta); ItemMeta hazmatChestplateItemMeta = HAZMAT_CHESTPLATE.getItemMeta(); List hazmatChestplateItemMetaLore = hazmatChestplateItemMeta.getLore(); hazmatChestplateItemMetaLore.addAll(Arrays.asList("", - ChatColor.translateAlternateColorCodes('&', "&7Equip the full set for:"), - ChatColor.translateAlternateColorCodes('&', "&7+Bee Protection"))); + ChatColors.color( "&7Equip the full set for:"), + ChatColors.color( "&7+Bee Protection"))); hazmatChestplateItemMeta.setLore(hazmatChestplateItemMetaLore); HAZMAT_CHESTPLATE.setItemMeta(hazmatChestplateItemMeta); ItemMeta hazmatLeggingsItemMeta = HAZMAT_LEGGINGS.getItemMeta(); List hazmatLeggingsItemMetaLore = hazmatLeggingsItemMeta.getLore(); hazmatLeggingsItemMetaLore.addAll(Arrays.asList("", - ChatColor.translateAlternateColorCodes('&', "&7Equip the full set for:"), - ChatColor.translateAlternateColorCodes('&', "&7+Bee Protection"))); + ChatColors.color( "&7Equip the full set for:"), + ChatColors.color( "&7+Bee Protection"))); hazmatLeggingsItemMeta.setLore(hazmatLeggingsItemMetaLore); HAZMAT_LEGGINGS.setItemMeta(hazmatLeggingsItemMeta); ItemMeta rubberBootsItemMeta = RUBBER_BOOTS.getItemMeta(); List rubberBootsItemMetaLore = rubberBootsItemMeta.getLore(); rubberBootsItemMetaLore.addAll(Arrays.asList("", - ChatColor.translateAlternateColorCodes('&', "&7Equip the full set for:"), - ChatColor.translateAlternateColorCodes('&', "&7+Bee Protection"))); + ChatColors.color( "&7Equip the full set for:"), + ChatColors.color( "&7+Bee Protection"))); rubberBootsItemMeta.setLore(rubberBootsItemMetaLore); RUBBER_BOOTS.setItemMeta(rubberBootsItemMeta); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/armor/HazmatArmorPiece.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/armor/HazmatArmorPiece.java index dc49b0c83..3e55f1515 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/armor/HazmatArmorPiece.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/armor/HazmatArmorPiece.java @@ -23,12 +23,14 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; */ public class HazmatArmorPiece extends SlimefunArmorPiece implements CustomProtection { + private final NamespacedKey setId; private final ProtectionType[] types; public HazmatArmorPiece(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, PotionEffect[] effects) { - super(category, item, recipeType, recipe, effects, new NamespacedKey(SlimefunPlugin.instance, "hazmat_suit")); + super(category, item, recipeType, recipe, effects); types = new ProtectionType[] {ProtectionType.BEES, ProtectionType.RADIATION}; + setId = new NamespacedKey(SlimefunPlugin.instance, "hazmat_suit"); } @Override @@ -40,4 +42,9 @@ public class HazmatArmorPiece extends SlimefunArmorPiece implements CustomProtec public boolean isFullSetRequired() { return true; } + + @Override + public NamespacedKey getSetId() { + return setId; + } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/armor/SlimefunArmorPiece.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/armor/SlimefunArmorPiece.java index 306238eb1..47473bab7 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/armor/SlimefunArmorPiece.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/armor/SlimefunArmorPiece.java @@ -1,11 +1,9 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.armor; -import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; -import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -13,7 +11,6 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; public class SlimefunArmorPiece extends SlimefunItem { - private NamespacedKey id = null; private final PotionEffect[] effects; public SlimefunArmorPiece(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, PotionEffect[] effects) { @@ -22,11 +19,6 @@ public class SlimefunArmorPiece extends SlimefunItem { this.effects = effects == null ? new PotionEffect[0] : effects; } - public SlimefunArmorPiece(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, PotionEffect[] effects, NamespacedKey setId) { - this(category, item, recipeType, recipe, effects); - this.id = setId; - } - /** * An Array of {@link PotionEffect PotionEffects} which get applied to a {@link Player} wearing * this {@link SlimefunArmorPiece}. @@ -36,13 +28,4 @@ public class SlimefunArmorPiece extends SlimefunItem { public PotionEffect[] getPotionEffects() { return effects; } - - /** - * This returns the armor set {@link NamespacedKey} of this {@link SlimefunArmorPiece}. - * - * @return The set {@link NamespacedKey}, null if none is found. - */ - public NamespacedKey getSetId() { - return id; - } }