From a42a5a28d1aee048392584a6a0f2dadeb6c7b058 Mon Sep 17 00:00:00 2001 From: StarWishsama Date: Sun, 1 Dec 2024 13:05:13 +0800 Subject: [PATCH 1/2] feat: support 1.21.3 (partially) --- .../compatibillty/VersionedAttribute.java | 16 ++++++++++++++++ .../implementation/items/medical/Bandage.java | 3 ++- .../items/medical/MedicalSupply.java | 3 ++- .../implementation/items/medical/Splint.java | 3 ++- .../items/weapons/VampireBlade.java | 3 ++- .../slimefun4/utils/biomes/BiomeMap.java | 3 ++- .../slimefun4/utils/biomes/BiomeMapParser.java | 6 ++++-- 7 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 src/main/java/city/norain/slimefun4/compatibillty/VersionedAttribute.java diff --git a/src/main/java/city/norain/slimefun4/compatibillty/VersionedAttribute.java b/src/main/java/city/norain/slimefun4/compatibillty/VersionedAttribute.java new file mode 100644 index 0000000000..c4f5ad7bcd --- /dev/null +++ b/src/main/java/city/norain/slimefun4/compatibillty/VersionedAttribute.java @@ -0,0 +1,16 @@ +package city.norain.slimefun4.compatibillty; + +import city.norain.slimefun4.SlimefunExtended; +import lombok.experimental.UtilityClass; +import org.bukkit.attribute.Attribute; + +@UtilityClass +public class VersionedAttribute { + public static Attribute getMaxHealth() { + if (SlimefunExtended.getMinecraftVersion().isAtLeast(1, 21, 3)) { + return Attribute.valueOf("MAX_HEALTH"); + } else { + return Attribute.valueOf("GENERIC_MAX_HEALTH"); + } + } +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Bandage.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Bandage.java index 0410d4a27d..c32457be97 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Bandage.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Bandage.java @@ -1,5 +1,6 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.medical; +import city.norain.slimefun4.compatibillty.VersionedAttribute; import io.github.bakedlibs.dough.items.ItemUtils; import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; @@ -48,7 +49,7 @@ public ItemUseHandler getItemHandler() { // Player is neither burning nor injured if (p.getFireTicks() <= 0 && p.getHealth() - >= p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) { + >= p.getAttribute(VersionedAttribute.getMaxHealth()).getValue()) { return; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/MedicalSupply.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/MedicalSupply.java index de32523200..1f3f69041d 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/MedicalSupply.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/MedicalSupply.java @@ -1,5 +1,6 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.medical; +import city.norain.slimefun4.compatibillty.VersionedAttribute; import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; import io.github.thebusybiscuit.slimefun4.api.items.ItemHandler; import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; @@ -71,7 +72,7 @@ public void clearNegativeEffects(@Nonnull LivingEntity n) { */ public void heal(@Nonnull LivingEntity n) { double health = n.getHealth() + healAmount; - double maxHealth = n.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(); + double maxHealth = n.getAttribute(VersionedAttribute.getMaxHealth()).getValue(); n.setHealth(Math.min(health, maxHealth)); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Splint.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Splint.java index 0e54aa5429..ef8bf63c82 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Splint.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Splint.java @@ -1,5 +1,6 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.medical; +import city.norain.slimefun4.compatibillty.VersionedAttribute; import io.github.bakedlibs.dough.items.ItemUtils; import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; @@ -36,7 +37,7 @@ public Splint( // Player is neither burning nor injured if (p.getFireTicks() <= 0 && p.getHealth() - >= p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) { + >= p.getAttribute(VersionedAttribute.getMaxHealth()).getValue()) { return; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/weapons/VampireBlade.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/weapons/VampireBlade.java index 8549571492..9e15bb4241 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/weapons/VampireBlade.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/weapons/VampireBlade.java @@ -1,5 +1,6 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.weapons; +import city.norain.slimefun4.compatibillty.VersionedAttribute; import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting; import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; @@ -42,7 +43,7 @@ public VampireBlade(ItemGroup itemGroup, SlimefunItemStack item, RecipeType reci if (ThreadLocalRandom.current().nextInt(100) < getChance()) { SoundEffect.VAMPIRE_BLADE_HEALING_SOUND.playFor(p); double health = p.getHealth() + HEALING_AMOUNT; - double maxHealth = p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(); + double maxHealth = p.getAttribute(VersionedAttribute.getMaxHealth()).getValue(); p.setHealth(Math.min(health, maxHealth)); } }; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMap.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMap.java index 71a6d111e1..ea86a18513 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMap.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMap.java @@ -8,6 +8,7 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.EnumMap; +import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; import javax.annotation.Nonnull; @@ -41,7 +42,7 @@ public class BiomeMap implements Keyed { /** * Our internal {@link EnumMap} holding all the data. */ - private final Map dataMap = new EnumMap<>(Biome.class); + private final Map dataMap = new HashMap<>(); /** * The {@link NamespacedKey} to identify this {@link BiomeMap}. diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java index 07ecfcd17b..14c49f7816 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java @@ -10,6 +10,8 @@ import io.github.thebusybiscuit.slimefun4.utils.PatternUtils; import java.util.EnumMap; import java.util.EnumSet; +import java.util.HashMap; +import java.util.HashSet; import java.util.Locale; import java.util.Map; import java.util.Set; @@ -36,7 +38,7 @@ public class BiomeMapParser { private final NamespacedKey key; private final BiomeDataConverter valueConverter; - private final Map map = new EnumMap<>(Biome.class); + private final Map map = new HashMap<>(); /** * This flag specifies whether the parsing is "lenient" or not. @@ -158,7 +160,7 @@ private void readEntry(@Nonnull JsonObject entry) throws BiomeMapException { private @Nonnull Set readBiomes(@Nonnull JsonArray array) throws BiomeMapException { Validate.notNull(array, "The JSON array should not be null!"); - Set biomes = EnumSet.noneOf(Biome.class); + Set biomes = new HashSet<>(); for (JsonElement element : array) { if (element.isJsonPrimitive() && element.getAsJsonPrimitive().isString()) { From 21895586ee933480c077cf595eefd859480fd840 Mon Sep 17 00:00:00 2001 From: StarWishsama Date: Sun, 1 Dec 2024 13:05:54 +0800 Subject: [PATCH 2/2] chore: spotless --- .../slimefun4/implementation/items/medical/Bandage.java | 1 - .../slimefun4/implementation/items/medical/MedicalSupply.java | 1 - .../slimefun4/implementation/items/medical/Splint.java | 1 - .../slimefun4/implementation/items/weapons/VampireBlade.java | 4 ++-- .../thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java | 2 -- 5 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Bandage.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Bandage.java index c32457be97..2172f5c93c 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Bandage.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Bandage.java @@ -12,7 +12,6 @@ import org.bukkit.Effect; import org.bukkit.GameMode; import org.bukkit.Material; -import org.bukkit.attribute.Attribute; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/MedicalSupply.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/MedicalSupply.java index 1f3f69041d..95cddbbea7 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/MedicalSupply.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/MedicalSupply.java @@ -12,7 +12,6 @@ import java.util.Set; import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; -import org.bukkit.attribute.Attribute; import org.bukkit.entity.LivingEntity; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Splint.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Splint.java index ef8bf63c82..6cab4c2655 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Splint.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/medical/Splint.java @@ -12,7 +12,6 @@ import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; import org.bukkit.GameMode; -import org.bukkit.attribute.Attribute; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/weapons/VampireBlade.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/weapons/VampireBlade.java index 9e15bb4241..01d5b16132 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/weapons/VampireBlade.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/weapons/VampireBlade.java @@ -12,7 +12,6 @@ import java.util.concurrent.ThreadLocalRandom; import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; -import org.bukkit.attribute.Attribute; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -43,7 +42,8 @@ public VampireBlade(ItemGroup itemGroup, SlimefunItemStack item, RecipeType reci if (ThreadLocalRandom.current().nextInt(100) < getChance()) { SoundEffect.VAMPIRE_BLADE_HEALING_SOUND.playFor(p); double health = p.getHealth() + HEALING_AMOUNT; - double maxHealth = p.getAttribute(VersionedAttribute.getMaxHealth()).getValue(); + double maxHealth = + p.getAttribute(VersionedAttribute.getMaxHealth()).getValue(); p.setHealth(Math.min(health, maxHealth)); } }; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java index 14c49f7816..a74c96ff4e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/biomes/BiomeMapParser.java @@ -8,8 +8,6 @@ import io.github.thebusybiscuit.slimefun4.api.exceptions.BiomeMapException; import io.github.thebusybiscuit.slimefun4.utils.JsonUtils; import io.github.thebusybiscuit.slimefun4.utils.PatternUtils; -import java.util.EnumMap; -import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; import java.util.Locale;