entity types
This commit is contained in:
+10
-3
@@ -1,6 +1,8 @@
|
|||||||
package org.saturnclient.modules.mods.mixins;
|
package org.saturnclient.modules.mods.mixins;
|
||||||
|
|
||||||
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
|
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.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
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$health = 0f;
|
||||||
@Unique private float saturn$maxHealth = 1f;
|
@Unique private float saturn$maxHealth = 1f;
|
||||||
|
@Unique private HealthRenderState.EntityType saturn$entityType = HealthRenderState.EntityType.OTHER;
|
||||||
|
|
||||||
@Override public float saturn$getHealth() { return saturn$health; }
|
public float saturn$getHealth() { return saturn$health; }
|
||||||
@Override public float saturn$getMaxHealth() { return saturn$maxHealth; }
|
public float saturn$getMaxHealth() { return saturn$maxHealth; }
|
||||||
@Override public void saturn$setHealth(float health, float maxHealth) {
|
public void saturn$setHealth(float health, float maxHealth) {
|
||||||
this.saturn$health = health;
|
this.saturn$health = health;
|
||||||
this.saturn$maxHealth = maxHealth;
|
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.LivingEntityRenderer;
|
||||||
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
|
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
|
||||||
import net.minecraft.entity.LivingEntity;
|
|
||||||
import org.saturnclient.modules.mods.utils.HealthRenderState;
|
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.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
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"))
|
@Inject(method = "updateRenderState", at = @At("TAIL"))
|
||||||
private void saturn$captureHealth(T entity, S state, float tickDelta, CallbackInfo ci) {
|
private void saturn$captureHealth(T entity, S state, float tickDelta, CallbackInfo ci) {
|
||||||
if (state instanceof HealthRenderState hrs) {
|
if (!(state instanceof HealthRenderState hrs)) return;
|
||||||
|
|
||||||
hrs.saturn$setHealth(entity.getHealth(), entity.getMaxHealth());
|
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$getHealth();
|
||||||
float saturn$getMaxHealth();
|
float saturn$getMaxHealth();
|
||||||
void saturn$setHealth(float health, float maxHealth);
|
void saturn$setHealth(float health, float maxHealth);
|
||||||
|
|
||||||
|
EntityType saturn$getEntityType();
|
||||||
|
void saturn$setEntityType(EntityType type);
|
||||||
|
|
||||||
|
enum EntityType {
|
||||||
|
PLAYER, HOSTILE, PASSIVE, OTHER
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user