From 2a7728fb60fd33e01056e68adad910e1e10bf351 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Sun, 12 Oct 2025 22:26:50 +0200 Subject: feat(health): use dynamic default player max health instead of const --- src/main/java/world/anhgelus/lifesteal/Commands.java | 3 ++- src/main/java/world/anhgelus/lifesteal/LifeStealer.java | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/main/java/world/anhgelus/lifesteal/Commands.java b/src/main/java/world/anhgelus/lifesteal/Commands.java index 86aa901..5bf10c5 100644 --- a/src/main/java/world/anhgelus/lifesteal/Commands.java +++ b/src/main/java/world/anhgelus/lifesteal/Commands.java @@ -3,6 +3,7 @@ package world.anhgelus.lifesteal; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.IntegerArgumentType; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.text.Text; @@ -18,7 +19,7 @@ public class Commands { final var p = source.getPlayerOrThrow(); final var lifeStealer = LifeStealer.Manager.getLifeStealer(p); // if the amount will ban the LifeStealer, returns - if (lifeStealer.getHealthModifier() - hearts * 2 <= LifeSteal.MIN_HEALTH - 20) { + if (lifeStealer.getHealthModifier() - hearts * 2 <= LifeSteal.MIN_HEALTH - PlayerEntity.MAX_HEALTH) { source.sendError(Text.of("You cannot give that amount.")); return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/world/anhgelus/lifesteal/LifeStealer.java b/src/main/java/world/anhgelus/lifesteal/LifeStealer.java index 5036b4e..3beb6ec 100644 --- a/src/main/java/world/anhgelus/lifesteal/LifeStealer.java +++ b/src/main/java/world/anhgelus/lifesteal/LifeStealer.java @@ -6,6 +6,7 @@ import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.NbtComponent; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; @@ -38,11 +39,11 @@ public class LifeStealer { } private static float clamp(float healthModifier) { - return MathHelper.clamp(healthModifier, LifeSteal.MIN_HEALTH - 20, LifeSteal.MAX_HEALTH - 20); + final var baseHealth = PlayerEntity.MAX_HEALTH; + return MathHelper.clamp(healthModifier, LifeSteal.MIN_HEALTH - baseHealth, LifeSteal.MAX_HEALTH - baseHealth); } private void updateHealth() { - healthModifier = MathHelper.clamp(healthModifier, -20, 20); final var attr = player.getAttributeInstance(EntityAttributes.MAX_HEALTH); if (attr == null) throw new IllegalStateException("No health attribute assigned to LifeStealer"); if (attr.hasModifier(HEALTH_MODIFIER)) attr.removeModifier(HEALTH_MODIFIER); @@ -75,13 +76,18 @@ public class LifeStealer { public void death() { healthModifier = clamp(healthModifier - 2); if (healthModifier <= -20) { + final var entry = new BannedPlayerEntry( + player.getPlayerConfigEntry(), + null, + "LifeSteal", + null, + "You have lose all your hearts..." + ); player.getEntityWorld() .getServer() .getPlayerManager() .getUserBanList() - .add(new BannedPlayerEntry( - player.getPlayerConfigEntry(), null, "LifeSteal", null, "You have lose all your hearts..." - )); + .add(entry); return; } updateHealth(); -- cgit v1.2.3