package noppes.npcs.client; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.client.event.MouseEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import noppes.npcs.client.gui.customoverlay.OverlayCustom; import noppes.npcs.client.renderer.RenderCNPCPlayer; import org.lwjgl.opengl.GL11; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class ClientEventHandler { private final RenderCNPCPlayer renderCNPCPlayer = new RenderCNPCPlayer(); public static HashMap disabledButtonTimes = new HashMap<>(); @SubscribeEvent public void onMouse(MouseEvent event) { if (Minecraft.getMinecraft().currentScreen != null) return; ArrayList removeList = new ArrayList<>(); for (Map.Entry entry : disabledButtonTimes.entrySet()) { if (entry.getValue() > 0) { if (entry.getKey() == event.button || entry.getKey() == -1) { event.setCanceled(true); } disabledButtonTimes.put(entry.getKey(), entry.getValue() - 1); } else { removeList.add(entry.getKey()); } } for (int i : removeList) { disabledButtonTimes.remove(i); } } @SubscribeEvent public void onOverlayRender(RenderGameOverlayEvent.Post event){ if(event.type == RenderGameOverlayEvent.ElementType.ALL) { for (OverlayCustom overlayCustom : Client.customOverlays.values()) { overlayCustom.renderGameOverlay(event.partialTicks); } if (Client.questTrackingOverlay != null) { Client.questTrackingOverlay.renderGameOverlay(event.partialTicks); } } } @SubscribeEvent public void onRenderPlayer(RenderPlayerEvent.Post event) { try { Class renderPlayerJBRA = Class.forName("JinRyuu.JBRA.RenderPlayerJBRA"); if (renderPlayerJBRA.isInstance(event.renderer)) return; } catch (Exception ignored) {} if (!(event.renderer instanceof RenderCNPCPlayer)) { renderCNPCPlayer.tempRenderPartialTicks = event.partialRenderTick; double d0 = event.entityPlayer.lastTickPosX + (event.entityPlayer.posX - event.entityPlayer.lastTickPosX) * (double)event.partialRenderTick - RenderManager.renderPosX; double d1 = event.entityPlayer.lastTickPosY + (event.entityPlayer.posY - event.entityPlayer.lastTickPosY) * (double)event.partialRenderTick - RenderManager.renderPosY; double d2 = event.entityPlayer.lastTickPosZ + (event.entityPlayer.posZ - event.entityPlayer.lastTickPosZ) * (double)event.partialRenderTick - RenderManager.renderPosZ; float f1 = event.entityPlayer.prevRotationYaw + (event.entityPlayer.rotationYaw - event.entityPlayer.prevRotationYaw) * event.partialRenderTick; if (Minecraft.getMinecraft().thePlayer.equals(event.entityPlayer)) { d0 = 0; d1 = 0; d2 = 0; } renderCNPCPlayer.doRender(event.entityPlayer, d0, d1, d2, f1, event.partialRenderTick); } } @SubscribeEvent public void cancelSpecials(RenderPlayerEvent.Specials.Pre event) { if (event.renderer instanceof RenderCNPCPlayer) { event.setCanceled(true); } } @SubscribeEvent public void tryRenderDBC(RenderPlayerEvent.Specials.Post event) { try { Class renderPlayerJBRA = Class.forName("JinRyuu.JBRA.RenderPlayerJBRA"); if (!renderPlayerJBRA.isInstance(event.renderer)) return; } catch (Exception ignored) {} renderCNPCPlayer.renderDBCModel(event); } @SubscribeEvent public void onClientTick(TickEvent.ClientTickEvent event) { Minecraft mc = Minecraft.getMinecraft(); if (mc.thePlayer != null && mc.theWorld != null && !mc.isGamePaused() && event.phase == TickEvent.Phase.END) { renderCNPCPlayer.itemRenderer.updateEquippedItem(); renderCNPCPlayer.updateFovModifierHand(); } } @SubscribeEvent public void onRenderHand(RenderHandEvent event) { if (Client.skinOverlays.containsKey(Minecraft.getMinecraft().thePlayer.getUniqueID()) && Client.skinOverlays.get(Minecraft.getMinecraft().thePlayer.getUniqueID()).values().size() > 0) { GL11.glPushMatrix(); event.setCanceled(true); GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); renderCNPCPlayer.renderHand(event.partialTicks, event.renderPass); GL11.glPopMatrix(); } else { event.setCanceled(false); } } }