diff --git a/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java b/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java index a057582..45165c2 100644 --- a/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java +++ b/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java @@ -85,12 +85,32 @@ public class RenderCustomModel extends GeoEntityRenderer { public Color getRenderColor(EntityCustomModel animatable, float partialTicks) { if(animatable.hurtTime>0 || animatable.deathTime > 0){ + if(animatable.tintData!=null && animatable.tintData.isTintEnabled() && animatable.tintData.isHurtTintEnabled()){ + int hurtTint = animatable.tintData.getHurtTint(); + int r = (int) ((float)(hurtTint >> 16 & 255)); + int g = (int) ((float)(hurtTint >> 8 & 255)); + int b = (int) ((float)(hurtTint & 255)); + return Color.ofRGBA(r,g,b, 255); + } return Color.ofRGBA(255, 153, 153, 255); }else{ - if(animatable.isSemiVisible){ - return Color.ofRGBA(255, 255, 255, 100); + int r = 255; + int g = 255; + int b = 255; + if(animatable.tintData!=null && animatable.tintData.isTintEnabled() && animatable.tintData.isGeneralTintEnabled()){ + int hurtTint = animatable.tintData.getGeneralTint(); + int tintR = (int) ((float)(hurtTint >> 16 & 255)); + int tintG = (int) ((float)(hurtTint >> 8 & 255)); + int tintB = (int) ((float)(hurtTint & 255)); + double alpha = ((double)animatable.tintData.getGeneralAlpha() / 100.0); + r = (int) (alpha*tintR + r*(1-alpha)); + g = (int) (alpha*tintG + g*(1-alpha)); + b = (int) (alpha*tintB + b*(1-alpha)); } - return Color.ofRGBA(255, 255, 255, 255); + if(animatable.isSemiVisible){ + return Color.ofRGBA(r, g, b, 100); + } + return Color.ofRGBA(r, g, b, 255); } } diff --git a/src/main/java/com/goodbird/npcgecko/entity/EntityCustomModel.java b/src/main/java/com/goodbird/npcgecko/entity/EntityCustomModel.java index 93f6ead..7082e61 100644 --- a/src/main/java/com/goodbird/npcgecko/entity/EntityCustomModel.java +++ b/src/main/java/com/goodbird/npcgecko/entity/EntityCustomModel.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import noppes.npcs.controllers.data.TintData; import software.bernie.geckolib3.core.AnimationState; import software.bernie.geckolib3.core.IAnimatable; import software.bernie.geckolib3.core.IAnimationTickable; @@ -33,6 +34,7 @@ public class EntityCustomModel extends EntityCreature implements IAnimatable, IA public AnimationBuilder hurtAnim = null; public ItemStack leftHeldItem; public boolean isSemiVisible = false; + public TintData tintData; private PlayState predicateMovement(AnimationEvent event) { if (manualAnim != null) { diff --git a/src/main/java/com/goodbird/npcgecko/mixin/impl/MixinGeckoAddon.java b/src/main/java/com/goodbird/npcgecko/mixin/impl/MixinGeckoAddon.java index 25c6e5e..d7ba3f1 100644 --- a/src/main/java/com/goodbird/npcgecko/mixin/impl/MixinGeckoAddon.java +++ b/src/main/java/com/goodbird/npcgecko/mixin/impl/MixinGeckoAddon.java @@ -38,6 +38,7 @@ public class MixinGeckoAddon { modelEntity.leftHeldItem = npc.inventory.getOffHand(); modelEntity.hurtTime = npc.hurtTime; modelEntity.deathTime = npc.deathTime; + modelEntity.tintData = npc.display.tintData; } } }