From 1f4e1abae5c4befe0bc093205537cbbd89622b33 Mon Sep 17 00:00:00 2001 From: johni0702 Date: Sat, 13 Aug 2016 20:26:53 +0200 Subject: [PATCH] Crosshair should only render when targeted entity can be spectated --- .../java/com/replaymod/core/ReplayMod.java | 7 ----- .../replaymod/replay/camera/CameraEntity.java | 12 ++++++++ .../handlers/CrosshairRenderHandler.java | 30 ------------------- 3 files changed, 12 insertions(+), 37 deletions(-) delete mode 100644 src/main/java/eu/crushedpixel/replaymod/events/handlers/CrosshairRenderHandler.java diff --git a/src/main/java/com/replaymod/core/ReplayMod.java b/src/main/java/com/replaymod/core/ReplayMod.java index 98b9c438..62dca4eb 100755 --- a/src/main/java/com/replaymod/core/ReplayMod.java +++ b/src/main/java/com/replaymod/core/ReplayMod.java @@ -8,7 +8,6 @@ import com.replaymod.replay.ReplaySender; import com.replaymod.replaystudio.util.I18n; import de.johni0702.minecraft.gui.container.GuiScreen; import eu.crushedpixel.replaymod.chat.ChatMessageHandler; -import eu.crushedpixel.replaymod.events.handlers.CrosshairRenderHandler; import eu.crushedpixel.replaymod.events.handlers.MouseInputHandler; import eu.crushedpixel.replaymod.events.handlers.TickAndRenderListener; import eu.crushedpixel.replaymod.events.handlers.keyboard.KeyInputHandler; @@ -104,8 +103,6 @@ public class ReplayMod { public static CustomObjectRenderer customObjectRenderer; @Deprecated public static SoundHandler soundHandler = new SoundHandler(); - @Deprecated - public static CrosshairRenderHandler crosshairRenderHandler; private final KeyBindingRegistry keyBindingRegistry = new KeyBindingRegistry(); private final SettingsRegistry settingsRegistry = new SettingsRegistry(); @@ -175,10 +172,6 @@ public class ReplayMod { FMLCommonHandler.instance().bus().register(customObjectRenderer); MinecraftForge.EVENT_BUS.register(customObjectRenderer); - crosshairRenderHandler = new CrosshairRenderHandler(); - FMLCommonHandler.instance().bus().register(crosshairRenderHandler); - MinecraftForge.EVENT_BUS.register(crosshairRenderHandler); - KeybindRegistry.initialize(); tooltipRenderer = new TooltipRenderer(); diff --git a/src/main/java/com/replaymod/replay/camera/CameraEntity.java b/src/main/java/com/replaymod/replay/camera/CameraEntity.java index 98c13cc2..8fed02ee 100755 --- a/src/main/java/com/replaymod/replay/camera/CameraEntity.java +++ b/src/main/java/com/replaymod/replay/camera/CameraEntity.java @@ -18,6 +18,8 @@ import net.minecraft.stats.StatFileWriter; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +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; @@ -44,6 +46,7 @@ public class CameraEntity extends EntityPlayerSP { public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatFileWriter statFileWriter) { super(mcIn, worldIn, netHandlerPlayClient, statFileWriter); FMLCommonHandler.instance().bus().register(this); + MinecraftForge.EVENT_BUS.register(this); cameraController = ReplayModReplay.instance.createCameraController(this); } @@ -208,6 +211,7 @@ public class CameraEntity extends EntityPlayerSP { public void setDead() { super.setDead(); FMLCommonHandler.instance().bus().unregister(this); + MinecraftForge.EVENT_BUS.unregister(this); } @SubscribeEvent @@ -228,6 +232,14 @@ public class CameraEntity extends EntityPlayerSP { } } + @SubscribeEvent + public void preCrosshairRender(RenderGameOverlayEvent.Pre event) { + // The crosshair should only render if targeted entity can actually be spectated + if (event.type == RenderGameOverlayEvent.ElementType.CROSSHAIRS) { + event.setCanceled(!canSpectate(mc.pointedEntity)); + } + } + public boolean canSpectate(Entity e) { return e != null && !e.isInvisible() && (e instanceof EntityPlayer || e instanceof EntityLiving || e instanceof EntityItemFrame); diff --git a/src/main/java/eu/crushedpixel/replaymod/events/handlers/CrosshairRenderHandler.java b/src/main/java/eu/crushedpixel/replaymod/events/handlers/CrosshairRenderHandler.java deleted file mode 100644 index 597e3241..00000000 --- a/src/main/java/eu/crushedpixel/replaymod/events/handlers/CrosshairRenderHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package eu.crushedpixel.replaymod.events.handlers; - -import net.minecraft.client.Minecraft; -import net.minecraftforge.client.event.RenderGameOverlayEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -public class CrosshairRenderHandler { - - private final Minecraft mc = Minecraft.getMinecraft(); - - @SubscribeEvent - public void preCrosshairRender(RenderGameOverlayEvent.Pre event) { - //Crosshair should only render if hovered Entity can actually be spectated - // TODO -// if(ReplayHandler.isInReplay() && ReplayHandler.isCameraView() && event.type == RenderGameOverlayEvent.ElementType.CROSSHAIRS) { -// boolean cancel = !SpectatingHandler.canSpectate(mc.pointedEntity); -// event.setCanceled(cancel); -// } - } - - @SubscribeEvent - public void preChatRender(RenderGameOverlayEvent.Pre event) { - // TODO -// if(ReplayHandler.isInReplay() && ReplayHandler.isCameraView() && event.type == RenderGameOverlayEvent.ElementType.CHAT) { -// //when a crosshair was displayed, the background of the lowest line of chat would be opaque -// GlStateManager.enableTexture2D(); -// GlStateManager.disableBlend(); -// } - } -}