Fix hands being visible during 360° rendering
This commit is contained in:
@@ -26,18 +26,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
@Mixin(EntityRenderer.class)
|
@Mixin(EntityRenderer.class)
|
||||||
public abstract class MixinEntityRenderer implements EntityRendererHandler.IEntityRenderer, EntityRendererHandler.GluPerspective {
|
public abstract class MixinEntityRenderer implements EntityRendererHandler.IEntityRenderer, EntityRendererHandler.GluPerspective {
|
||||||
private EntityRendererHandler handler;
|
private EntityRendererHandler handler;
|
||||||
private SpectatorRenderer spectatorRenderer;
|
private SpectatorRenderer spectatorRenderer = new SpectatorRenderer();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setHandler(EntityRendererHandler handler) {
|
public void setHandler(EntityRendererHandler handler) {
|
||||||
this.handler = handler;
|
this.handler = handler;
|
||||||
if (spectatorRenderer != null) {
|
|
||||||
spectatorRenderer.cleanup();
|
|
||||||
spectatorRenderer = null;
|
|
||||||
}
|
|
||||||
if (handler != null) {
|
|
||||||
spectatorRenderer = new SpectatorRenderer();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -112,6 +105,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
private void renderSpectatorHand(float partialTicks, int renderPass, CallbackInfo ci) {
|
private void renderSpectatorHand(float partialTicks, int renderPass, CallbackInfo ci) {
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
if (handler.data instanceof CubicOpenGlFrameCapturer.Data) {
|
if (handler.data instanceof CubicOpenGlFrameCapturer.Data) {
|
||||||
|
ci.cancel();
|
||||||
return; // No spectator hands during 360° view, we wouldn't even know where to put it
|
return; // No spectator hands during 360° view, we wouldn't even know where to put it
|
||||||
}
|
}
|
||||||
Entity currentEntity = ReplayHandler.getCurrentEntity();
|
Entity currentEntity = ReplayHandler.getCurrentEntity();
|
||||||
@@ -119,6 +113,11 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
renderPass = handler.data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? 1 : 0;
|
renderPass = handler.data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? 1 : 0;
|
||||||
spectatorRenderer.renderSpectatorHand((EntityPlayer) currentEntity, partialTicks, renderPass);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.util.BlockPos;
|
import net.minecraft.util.BlockPos;
|
||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.world.storage.MapData;
|
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.FMLCommonHandler;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||||
@@ -33,7 +31,6 @@ public class SpectatorRenderer {
|
|||||||
private EntityPlayer currentPlayer;
|
private EntityPlayer currentPlayer;
|
||||||
|
|
||||||
public SpectatorRenderer() {
|
public SpectatorRenderer() {
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
|
||||||
FMLCommonHandler.instance().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")
|
@SuppressWarnings("deprecation")
|
||||||
public void renderItemInFirstPerson(float partialTicks) {
|
public void renderItemInFirstPerson(float partialTicks) {
|
||||||
EntityPlayer entityPlayer = getSpectatedPlayer();
|
EntityPlayer entityPlayer = getSpectatedPlayer();
|
||||||
@@ -538,7 +522,6 @@ public class SpectatorRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void cleanup() {
|
public void cleanup() {
|
||||||
MinecraftForge.EVENT_BUS.unregister(this);
|
|
||||||
FMLCommonHandler.instance().bus().unregister(this);
|
FMLCommonHandler.instance().bus().unregister(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user