entity types

This commit is contained in:
RudideC
2026-02-20 10:12:19 +01:00
parent 2bcad83409
commit 71a7721c52
3 changed files with 33 additions and 6 deletions
@@ -1,6 +1,8 @@
package org.saturnclient.modules.mods.mixins;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import org.saturnclient.modules.mods.utils.HealthRenderState;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@@ -9,11 +11,16 @@ public class LivingEntityRenderStateMixin implements org.saturnclient.modules.mo
@Unique private float saturn$health = 0f;
@Unique private float saturn$maxHealth = 1f;
@Unique private HealthRenderState.EntityType saturn$entityType = HealthRenderState.EntityType.OTHER;
@Override public float saturn$getHealth() { return saturn$health; }
@Override public float saturn$getMaxHealth() { return saturn$maxHealth; }
@Override public void saturn$setHealth(float health, float maxHealth) {
public float saturn$getHealth() { return saturn$health; }
public float saturn$getMaxHealth() { return saturn$maxHealth; }
public void saturn$setHealth(float health, float maxHealth) {
this.saturn$health = health;
this.saturn$maxHealth = maxHealth;
}
public HealthRenderState.EntityType saturn$getEntityType() { return saturn$entityType; }
public void saturn$setEntityType(HealthRenderState.EntityType type) { this.saturn$entityType = type; }
}
@@ -2,8 +2,11 @@ package org.saturnclient.modules.mods.mixins;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.entity.LivingEntity;
import org.saturnclient.modules.mods.utils.HealthRenderState;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.mob.HostileEntity;
import net.minecraft.entity.passive.PassiveEntity;
import net.minecraft.entity.player.PlayerEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -14,8 +17,18 @@ public abstract class LivingEntityRendererMixin<T extends LivingEntity, S extend
@Inject(method = "updateRenderState", at = @At("TAIL"))
private void saturn$captureHealth(T entity, S state, float tickDelta, CallbackInfo ci) {
if (state instanceof HealthRenderState hrs) {
hrs.saturn$setHealth(entity.getHealth(), entity.getMaxHealth());
if (!(state instanceof HealthRenderState hrs)) return;
hrs.saturn$setHealth(entity.getHealth(), entity.getMaxHealth());
if (entity instanceof PlayerEntity) {
hrs.saturn$setEntityType(HealthRenderState.EntityType.PLAYER);
} else if (entity instanceof HostileEntity) {
hrs.saturn$setEntityType(HealthRenderState.EntityType.HOSTILE);
} else if (entity instanceof PassiveEntity) {
hrs.saturn$setEntityType(HealthRenderState.EntityType.PASSIVE);
} else {
hrs.saturn$setEntityType(HealthRenderState.EntityType.OTHER);
}
}
}
@@ -4,4 +4,11 @@ public interface HealthRenderState {
float saturn$getHealth();
float saturn$getMaxHealth();
void saturn$setHealth(float health, float maxHealth);
EntityType saturn$getEntityType();
void saturn$setEntityType(EntityType type);
enum EntityType {
PLAYER, HOSTILE, PASSIVE, OTHER
}
}