From 39018499777079e834b65bc0ea84f117099229ee Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 23 Jan 2021 15:54:48 +0000 Subject: [PATCH] Fixed type erasure issue with integer values in double getters --- .../com/willfp/ecoarmor/effects/Effect.java | 13 ++++++++++-- .../effects/AttackSpeedMultiplier.java | 2 +- .../ecoarmor/effects/effects/BonusHearts.java | 2 +- .../effects/effects/BowDamageMultiplier.java | 2 +- .../effects/effects/DamageMultiplier.java | 2 +- .../effects/DamageTakenMultiplier.java | 2 +- .../effects/effects/DurabilityMultiplier.java | 2 +- .../ecoarmor/effects/effects/EvadeChance.java | 2 +- .../effects/effects/ExperienceMultiplier.java | 2 +- .../effects/effects/FallDamageMultiplier.java | 2 +- .../ecoarmor/effects/effects/Flight.java | 2 +- .../effects/effects/HungerLossMultiplier.java | 2 +- .../effects/MeleeDamageMultiplier.java | 2 +- .../effects/RegenerationMultiplier.java | 2 +- .../effects/effects/SpeedMutiplier.java | 2 +- .../effects/TridentDamageMultiplier.java | 2 +- .../ecoarmor/effects/effects/WarpChance.java | 2 +- .../com/willfp/ecoarmor/sets/ArmorSet.java | 21 +++++++++++++++++-- 18 files changed, 46 insertions(+), 20 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/Effect.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/Effect.java index 3fbf9fc..cc95b11 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/Effect.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/Effect.java @@ -25,13 +25,22 @@ public abstract class Effect implements Listener { @Getter private boolean enabled; + /** + * The class of the config getter type. + */ + @Getter + private final Class typeClass; + /** * Create a new effect. * - * @param name The effect name. + * @param name The effect name. + * @param typeClass The class of the config type. */ - protected Effect(@NotNull final String name) { + protected Effect(@NotNull final String name, + @NotNull final Class typeClass) { this.name = name; + this.typeClass = typeClass; update(); Effects.addNewEffect(this); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/AttackSpeedMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/AttackSpeedMultiplier.java index fd5f8ff..1da6e94 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/AttackSpeedMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/AttackSpeedMultiplier.java @@ -16,7 +16,7 @@ public class AttackSpeedMultiplier extends Effect { private static final UUID MODIFIER_UUID = UUID.nameUUIDFromBytes("attack-speed-multiplier".getBytes()); public AttackSpeedMultiplier() { - super("attack-speed-multiplier"); + super("attack-speed-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/BonusHearts.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/BonusHearts.java index a9050ec..872370c 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/BonusHearts.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/BonusHearts.java @@ -16,7 +16,7 @@ public class BonusHearts extends Effect { private static final UUID MODIFIER_UUID = UUID.nameUUIDFromBytes("bonus-hearts".getBytes()); public BonusHearts() { - super("bonus-hearts"); + super("bonus-hearts", Integer.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/BowDamageMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/BowDamageMultiplier.java index e94449b..fa5a854 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/BowDamageMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/BowDamageMultiplier.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; public class BowDamageMultiplier extends Effect { public BowDamageMultiplier() { - super("bow-damage-multiplier"); + super("bow-damage-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DamageMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DamageMultiplier.java index c7398f1..726e79d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DamageMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DamageMultiplier.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; public class DamageMultiplier extends Effect { public DamageMultiplier() { - super("damage-multiplier"); + super("damage-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DamageTakenMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DamageTakenMultiplier.java index fb05621..fbbb941 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DamageTakenMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DamageTakenMultiplier.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; public class DamageTakenMultiplier extends Effect { public DamageTakenMultiplier() { - super("damage-taken-multiplier"); + super("damage-taken-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DurabilityMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DurabilityMultiplier.java index 53fa4fd..b2f7071 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DurabilityMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/DurabilityMultiplier.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; public class DurabilityMultiplier extends Effect { public DurabilityMultiplier() { - super("durability-multiplier"); + super("durability-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/EvadeChance.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/EvadeChance.java index 86fdb93..968b5ef 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/EvadeChance.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/EvadeChance.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; public class EvadeChance extends Effect { public EvadeChance() { - super("evade-chance"); + super("evade-chance", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/ExperienceMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/ExperienceMultiplier.java index d77bc8e..d0c03a3 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/ExperienceMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/ExperienceMultiplier.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; public class ExperienceMultiplier extends Effect { public ExperienceMultiplier() { - super("experience-multiplier"); + super("experience-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/FallDamageMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/FallDamageMultiplier.java index 21b7dee..17d820d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/FallDamageMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/FallDamageMultiplier.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; public class FallDamageMultiplier extends Effect { public FallDamageMultiplier() { - super("fall-damage-multiplier"); + super("fall-damage-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/Flight.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/Flight.java index 0a27a89..3f1a2ca 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/Flight.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/Flight.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; public class Flight extends Effect { public Flight() { - super("flight"); + super("flight", Boolean.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/HungerLossMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/HungerLossMultiplier.java index a83f6f6..7b8174c 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/HungerLossMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/HungerLossMultiplier.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; public class HungerLossMultiplier extends Effect { public HungerLossMultiplier() { - super("hunger-loss-multiplier"); + super("hunger-loss-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/MeleeDamageMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/MeleeDamageMultiplier.java index a539e90..910d9dd 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/MeleeDamageMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/MeleeDamageMultiplier.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; public class MeleeDamageMultiplier extends Effect { public MeleeDamageMultiplier() { - super("melee-damage-multiplier"); + super("melee-damage-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/RegenerationMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/RegenerationMultiplier.java index c65ca66..87b6d00 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/RegenerationMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/RegenerationMultiplier.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; public class RegenerationMultiplier extends Effect { public RegenerationMultiplier() { - super("regeneration-multiplier"); + super("regeneration-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/SpeedMutiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/SpeedMutiplier.java index 89c1923..932bd28 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/SpeedMutiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/SpeedMutiplier.java @@ -16,7 +16,7 @@ public class SpeedMutiplier extends Effect { private static final UUID MODIFIER_UUID = UUID.nameUUIDFromBytes("speed-multiplier".getBytes()); public SpeedMutiplier() { - super("speed-multiplier"); + super("speed-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/TridentDamageMultiplier.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/TridentDamageMultiplier.java index fb3c8dd..d0d8451 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/TridentDamageMultiplier.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/TridentDamageMultiplier.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; public class TridentDamageMultiplier extends Effect { public TridentDamageMultiplier() { - super("trident-damage-multiplier"); + super("trident-damage-multiplier", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/WarpChance.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/WarpChance.java index e637573..e11bd2b 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/WarpChance.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/effects/WarpChance.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; public class WarpChance extends Effect { public WarpChance() { - super("warp-chance"); + super("warp-chance", Double.class); } @EventHandler diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java index 19372d2..4a2ac1d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java @@ -27,6 +27,7 @@ import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; import org.bukkit.potion.PotionEffectType; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.HashMap; @@ -291,8 +292,16 @@ public class ArmorSet { * @param The type of the effect value. * @return The strength. */ + @Nullable public T getEffectStrength(@NotNull final Effect effect) { - return (T) effects.get(effect); + Object strength = effects.get(effect); + if (strength instanceof Integer) { + if (effect.getTypeClass().equals(Double.class)) { + strength = (double) (int) strength; + } + } + + return (T) strength; } /** @@ -302,8 +311,16 @@ public class ArmorSet { * @param The type of the effect value. * @return The strength. */ + @Nullable public T getAdvancedEffectStrength(@NotNull final Effect effect) { - return (T) advancedEffects.get(effect); + Object strength = advancedEffects.get(effect); + if (strength instanceof Integer) { + if (effect.getTypeClass().equals(Double.class)) { + strength = (double) (int) strength; + } + } + + return (T) strength; } @Override