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 d9bcd03..be4f243 100644 --- a/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java +++ b/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java @@ -87,6 +87,9 @@ public class RenderCustomModel extends GeoEntityRenderer { if(animatable.hurtTime>0 || animatable.deathTime > 0){ return Color.ofRGBA(255, 30, 30, 255); }else{ + if(animatable.isSemiVisible){ + return Color.ofRGBA(255, 255, 255, 100); + } return Color.ofRGBA(255, 255, 255, 255); } } diff --git a/src/main/java/com/goodbird/npcgecko/entity/EntityCustomModel.java b/src/main/java/com/goodbird/npcgecko/entity/EntityCustomModel.java index c89ecd0..93f6ead 100644 --- a/src/main/java/com/goodbird/npcgecko/entity/EntityCustomModel.java +++ b/src/main/java/com/goodbird/npcgecko/entity/EntityCustomModel.java @@ -32,6 +32,7 @@ public class EntityCustomModel extends EntityCreature implements IAnimatable, IA public AnimationBuilder attackAnim = null; public AnimationBuilder hurtAnim = null; public ItemStack leftHeldItem; + public boolean isSemiVisible = false; private PlayState predicateMovement(AnimationEvent event) { if (manualAnim != null) { diff --git a/src/main/java/com/goodbird/npcgecko/mixin/impl/MixinGeckoAddonClient.java b/src/main/java/com/goodbird/npcgecko/mixin/impl/MixinGeckoAddonClient.java index ec75f02..8a6f235 100644 --- a/src/main/java/com/goodbird/npcgecko/mixin/impl/MixinGeckoAddonClient.java +++ b/src/main/java/com/goodbird/npcgecko/mixin/impl/MixinGeckoAddonClient.java @@ -123,21 +123,29 @@ public class MixinGeckoAddonClient { (mainModel).entity.renderYawOffset = (mainModel).entity.prevRenderYawOffset = 0; if (!npc.isInvisible()) { - RenderManager.instance.renderEntityWithPosYaw(((ModelMPM) mainModel).entity, 0,0,0,rot,partial); + if(mainModel.entity instanceof EntityCustomModel){ + ((EntityCustomModel)mainModel.entity).isSemiVisible = false; + } + RenderManager.instance.renderEntityWithPosYaw(mainModel.entity, 0,0,0,rot,partial); } else if (!npc.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) { - GL11.glPushMatrix(); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.15F); - GL11.glDepthMask(false); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F); - RenderManager.instance.renderEntityWithPosYaw(((ModelMPM) mainModel).entity, 0,0,0,rot,partial); - GL11.glDisable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); - GL11.glPopMatrix(); - GL11.glDepthMask(true); + if(mainModel.entity instanceof EntityCustomModel){ + ((EntityCustomModel)mainModel.entity).isSemiVisible = true; + RenderManager.instance.renderEntityWithPosYaw(mainModel.entity, 0,0,0,rot,partial); + }else { + GL11.glPushMatrix(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.15F); + GL11.glDepthMask(false); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F); + RenderManager.instance.renderEntityWithPosYaw(mainModel.entity, 0, 0, 0, rot, partial); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glPopMatrix(); + GL11.glDepthMask(true); + } } } }