diff --git a/src/main/java/com/replaymod/render/mixin/MixinRendererLivingEntity.java b/src/main/java/com/replaymod/render/mixin/MixinRendererLivingEntity.java index 7d87b1b7..38cbe2ae 100644 --- a/src/main/java/com/replaymod/render/mixin/MixinRendererLivingEntity.java +++ b/src/main/java/com/replaymod/render/mixin/MixinRendererLivingEntity.java @@ -4,11 +4,9 @@ import com.replaymod.render.hooks.EntityRendererHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.RendererLivingEntity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(RendererLivingEntity.class) @@ -19,20 +17,5 @@ public abstract class MixinRendererLivingEntity { if (handler != null && !handler.getSettings().isRenderNameTags()) { ci.setReturnValue(false); //this calls the cancel method } - - // TODO -// if(ReplayHandler.isInReplay() && entity.isInvisible() -// && ReplaySettings.ReplayOptions.renderInvisible.getValue() == Boolean.FALSE) { -// ci.setReturnValue(false); -// } - } - - @Redirect(method = "renderModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityLivingBase;isInvisibleToPlayer(Lnet/minecraft/entity/player/EntityPlayer;)Z")) - private boolean replayModRender_shouldInvisibleNotBeRendered(EntityLivingBase entity, EntityPlayer thePlayer) { - // TODO -// if(ReplaySettings.ReplayOptions.renderInvisible.getValue() == Boolean.TRUE|| !ReplayHandler.isInReplay()) { -// return entity.isInvisibleToPlayer(thePlayer); -// } - return true; //the original method inverts the return value } } diff --git a/src/main/java/com/replaymod/replay/mixin/MixinArmorStandRenderer.java b/src/main/java/com/replaymod/replay/mixin/MixinArmorStandRenderer.java new file mode 100644 index 00000000..71c8f6d5 --- /dev/null +++ b/src/main/java/com/replaymod/replay/mixin/MixinArmorStandRenderer.java @@ -0,0 +1,22 @@ +package com.replaymod.replay.mixin; + +import com.replaymod.replay.camera.CameraEntity; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.ArmorStandRenderer; +import net.minecraft.entity.item.EntityArmorStand; +import net.minecraft.entity.player.EntityPlayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ArmorStandRenderer.class) +public abstract class MixinArmorStandRenderer { + @Inject(method = "func_177099_b", at = @At("HEAD"), cancellable = true) + private void replayModReplay_canRenderInvisibleName(EntityArmorStand entity, CallbackInfoReturnable ci) { + EntityPlayer thePlayer = Minecraft.getMinecraft().thePlayer; + if (thePlayer instanceof CameraEntity && entity.isInvisible()) { + ci.setReturnValue(false); + } + } +} diff --git a/src/main/java/com/replaymod/replay/mixin/MixinRendererLivingEntity.java b/src/main/java/com/replaymod/replay/mixin/MixinRendererLivingEntity.java new file mode 100644 index 00000000..14f86443 --- /dev/null +++ b/src/main/java/com/replaymod/replay/mixin/MixinRendererLivingEntity.java @@ -0,0 +1,28 @@ +package com.replaymod.replay.mixin; + +import com.replaymod.replay.camera.CameraEntity; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.RendererLivingEntity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(RendererLivingEntity.class) +public abstract class MixinRendererLivingEntity { + @Inject(method = "canRenderName", at = @At("HEAD"), cancellable = true) + private void replayModReplay_canRenderInvisibleName(EntityLivingBase entity, CallbackInfoReturnable ci) { + EntityPlayer thePlayer = Minecraft.getMinecraft().thePlayer; + if (thePlayer instanceof CameraEntity && entity.isInvisible()) { + ci.setReturnValue(false); + } + } + + @Redirect(method = "renderModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityLivingBase;isInvisibleToPlayer(Lnet/minecraft/entity/player/EntityPlayer;)Z")) + private boolean replayModReplay_shouldInvisibleNotBeRendered(EntityLivingBase entity, EntityPlayer thePlayer) { + return thePlayer instanceof CameraEntity || entity.isInvisibleToPlayer(thePlayer); + } +} diff --git a/src/main/resources/mixins.replay.replaymod.json b/src/main/resources/mixins.replay.replaymod.json index 9adbc7f7..b18e7b9f 100644 --- a/src/main/resources/mixins.replay.replaymod.json +++ b/src/main/resources/mixins.replay.replaymod.json @@ -2,9 +2,11 @@ "required": true, "package": "com.replaymod.replay.mixin", "mixins": [ + "MixinArmorStandRenderer", "MixinGuiSpectator", "MixinPlayerControllerMP", "MixinRenderArrow", + "MixinRendererLivingEntity", "MixinRenderItem", "MixinRenderManager", "MixinTileEntityEndPortalRenderer",