Added Totem handling and small bug fix

This commit is contained in:
IM23a-spirgif
2025-04-28 14:11:13 +02:00
parent 76c09aa1c8
commit 3637d55327
@@ -4,6 +4,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Items;
import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@@ -116,6 +117,10 @@ public class KnockedManager {
if (!(entity instanceof Player player)) { if (!(entity instanceof Player player)) {
return; return;
} }
if (player.getMainHandItem().getItem() == Items.TOTEM_OF_UNDYING
|| player.getOffhandItem().getItem() == Items.TOTEM_OF_UNDYING) {
return;
}
DamageSource src = event.getSource(); DamageSource src = event.getSource();
String damageType = src.getMsgId(); String damageType = src.getMsgId();
boolean isFatal = player.getHealth() - event.getAmount() <= 0; boolean isFatal = player.getHealth() - event.getAmount() <= 0;
@@ -133,12 +138,14 @@ public class KnockedManager {
damageType.equals("explosion") || damageType.equals("explosion.player") || damageType.equals("fireball")) { damageType.equals("explosion") || damageType.equals("explosion.player") || damageType.equals("fireball")) {
entity.setHealth(0.0F); entity.setHealth(0.0F);
removeKnockedState(entity); removeKnockedState(entity);
PlayerExecutionHandler.cancelExecution(entity.getUUID());
return; return;
} }
if ((damageType.equals("fall") || damageType.equals("explosion") || damageType.equals("explosion.player")) && if ((damageType.equals("fall") || damageType.equals("explosion") || damageType.equals("explosion.player")) &&
event.getAmount() >= entity.getHealth()) { event.getAmount() >= entity.getHealth()) {
entity.setHealth(0.0F); entity.setHealth(0.0F);
removeKnockedState(entity); removeKnockedState(entity);
PlayerExecutionHandler.cancelExecution(entity.getUUID());
return; return;
} }
event.setCanceled(true); event.setCanceled(true);