aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/world/anhgelus/lifesteal/Commands.java3
-rw-r--r--src/main/java/world/anhgelus/lifesteal/LifeStealer.java16
2 files changed, 13 insertions, 6 deletions
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();