Crosshair should only render when targeted entity can be spectated

This commit is contained in:
johni0702
2016-08-13 20:26:53 +02:00
parent 74d0fb2ec0
commit 1f4e1abae5
3 changed files with 12 additions and 37 deletions

View File

@@ -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);