From 5168fa935304c3e0877e8c0f4dec6e070359b9f6 Mon Sep 17 00:00:00 2001 From: LlmDl Date: Tue, 5 Nov 2024 16:13:37 -0600 Subject: [PATCH] 0.100.4.11: - Fix regressions in health regen task on MC versions under 1.21.3. --- Towny/pom.xml | 2 +- .../bukkit/towny/tasks/HealthRegenTimerTask.java | 13 ++++++++++--- .../bukkit/towny/utils/MinecraftVersion.java | 1 + Towny/src/main/resources/ChangeLog.txt | 4 +++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Towny/pom.xml b/Towny/pom.xml index a80f126174..85f5b51aab 100644 --- a/Towny/pom.xml +++ b/Towny/pom.xml @@ -13,7 +13,7 @@ towny jar - 0.100.4.10 + 0.100.4.11 diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/HealthRegenTimerTask.java b/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/HealthRegenTimerTask.java index 69c8fdf9f4..065f2f8b1d 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/HealthRegenTimerTask.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/HealthRegenTimerTask.java @@ -6,7 +6,6 @@ import com.palmergames.bukkit.towny.object.TownBlock; import org.bukkit.NamespacedKey; -import org.bukkit.Registry; import org.bukkit.Server; import org.bukkit.attribute.Attribute; import org.bukkit.entity.Player; @@ -17,10 +16,10 @@ import com.palmergames.bukkit.towny.TownyAPI; import com.palmergames.bukkit.towny.object.TownBlockType; import com.palmergames.bukkit.towny.utils.CombatUtil; +import com.palmergames.bukkit.towny.utils.MinecraftVersion; import com.palmergames.bukkit.util.BukkitTools; public class HealthRegenTimerTask extends TownyTimerTask { - private static final Attribute MAX_HEALTH = Registry.ATTRIBUTE.get(NamespacedKey.minecraft("max_health")); static { TownySettings.addReloadListener(NamespacedKey.fromString("towny:health-regen-task"), () -> TownyTimerHandler.toggleHealthRegen(TownySettings.hasHealthRegen())); @@ -79,7 +78,7 @@ private void evaluateHealth(Player player) { // Heal 1 HP while in town. final double currentHP = player.getHealth(); final double futureHP = currentHP + 1; - final double maxHP = player.getAttribute(MAX_HEALTH).getValue(); + final double maxHP = player.getAttribute(getMaxHealthAttribute()).getValue(); // Shrink gained to fit below the maxHP. final double gained = futureHP > maxHP ? 1.0 - (futureHP - maxHP) : 1.0; @@ -97,4 +96,12 @@ private void tryIncreaseHealth(Player player, double currentHealth, double maxHe player.setHealth(Math.min(maxHealth, event.getAmount() + currentHealth)); } + + @SuppressWarnings("deprecation") + private Attribute getMaxHealthAttribute() { + if (MinecraftVersion.CURRENT_VERSION.isNewerThanOrEquals(MinecraftVersion.MINECRAFT_1_21_3)) + return Attribute.MAX_HEALTH; + else + return Attribute.valueOf("GENERIC_MAX_HEALTH"); + } } diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/utils/MinecraftVersion.java b/Towny/src/main/java/com/palmergames/bukkit/towny/utils/MinecraftVersion.java index 1abca60d48..c9f6857b8c 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/utils/MinecraftVersion.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/utils/MinecraftVersion.java @@ -16,6 +16,7 @@ private MinecraftVersion() {} public static final Version MINECRAFT_1_20_3 = Version.fromString("1.20.3"); public static final Version MINECRAFT_1_20_5 = Version.fromString("1.20.5"); public static final Version MINECRAFT_1_21 = Version.fromString("1.21"); + public static final Version MINECRAFT_1_21_3 = Version.fromString("1.21.3"); public static final Version CURRENT_VERSION = Version.fromString(Bukkit.getBukkitVersion()); public static final Version OLDEST_VERSION_SUPPORTED = MINECRAFT_1_19_1; diff --git a/Towny/src/main/resources/ChangeLog.txt b/Towny/src/main/resources/ChangeLog.txt index 8b5463ca9c..0a80a6aa76 100644 --- a/Towny/src/main/resources/ChangeLog.txt +++ b/Towny/src/main/resources/ChangeLog.txt @@ -10123,4 +10123,6 @@ v0.92.0.11: - Closes #7664. - New Config Option: economy.daily_taxes.per_outpost_cost - Default: 0.0 - - An optional price that a town must pay for each outpost they own. This number is added to the town upkeep before any other upkeep modifiers are applied to the Town's upkeep costs. \ No newline at end of file + - An optional price that a town must pay for each outpost they own. This number is added to the town upkeep before any other upkeep modifiers are applied to the Town's upkeep costs. +0.100.4.11: + - Fix regressions in health regen task on MC versions under 1.21.3. \ No newline at end of file