Fix hands being visible during 360° rendering

This commit is contained in:
johni0702
2015-08-14 16:20:14 +02:00
parent 28f4356d34
commit cf59d739b5
2 changed files with 7 additions and 25 deletions

View File

@@ -26,18 +26,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(EntityRenderer.class)
public abstract class MixinEntityRenderer implements EntityRendererHandler.IEntityRenderer, EntityRendererHandler.GluPerspective {
private EntityRendererHandler handler;
private SpectatorRenderer spectatorRenderer;
private SpectatorRenderer spectatorRenderer = new SpectatorRenderer();
@Override
public void setHandler(EntityRendererHandler handler) {
this.handler = handler;
if (spectatorRenderer != null) {
spectatorRenderer.cleanup();
spectatorRenderer = null;
}
if (handler != null) {
spectatorRenderer = new SpectatorRenderer();
}
}
@Override
@@ -112,6 +105,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
private void renderSpectatorHand(float partialTicks, int renderPass, CallbackInfo ci) {
if (handler != null) {
if (handler.data instanceof CubicOpenGlFrameCapturer.Data) {
ci.cancel();
return; // No spectator hands during 360° view, we wouldn't even know where to put it
}
Entity currentEntity = ReplayHandler.getCurrentEntity();
@@ -119,6 +113,11 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
renderPass = handler.data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? 1 : 0;
spectatorRenderer.renderSpectatorHand((EntityPlayer) currentEntity, partialTicks, renderPass);
}
} else if (ReplayHandler.isInReplay() && !ReplayHandler.isCamera()) {
Entity currentEntity = ReplayHandler.getCurrentEntity();
if (!ReplayHandler.isCamera() && currentEntity instanceof EntityPlayer) {
spectatorRenderer.renderSpectatorHand((EntityPlayer) currentEntity, partialTicks, renderPass);
}
}
}

View File

@@ -20,8 +20,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.MathHelper;
import net.minecraft.world.storage.MapData;
import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
@@ -33,7 +31,6 @@ public class SpectatorRenderer {
private EntityPlayer currentPlayer;
public SpectatorRenderer() {
MinecraftForge.EVENT_BUS.register(this);
FMLCommonHandler.instance().bus().register(this);
}
@@ -99,19 +96,6 @@ public class SpectatorRenderer {
}
}
@SubscribeEvent
public void renderHandEvent(RenderHandEvent event) {
if(!ReplayHandler.isInReplay() || ReplayHandler.isCamera()) {
return;
}
EntityPlayer entityPlayer = getSpectatedPlayer();
if(entityPlayer == null) return;
renderSpectatorHand(entityPlayer, event.partialTicks, event.renderPass);
event.setCanceled(true);
}
@SuppressWarnings("deprecation")
public void renderItemInFirstPerson(float partialTicks) {
EntityPlayer entityPlayer = getSpectatedPlayer();
@@ -538,7 +522,6 @@ public class SpectatorRenderer {
}
public void cleanup() {
MinecraftForge.EVENT_BUS.unregister(this);
FMLCommonHandler.instance().bus().unregister(this);
}
}