2019-02-17 00:08:19 +01:00
|
|
|
package com.minelittlepony.unicopia;
|
|
|
|
|
|
|
|
import com.minelittlepony.unicopia.forgebullshit.FUF;
|
|
|
|
import com.minelittlepony.unicopia.hud.UHud;
|
|
|
|
import com.minelittlepony.unicopia.player.IPlayer;
|
|
|
|
import com.minelittlepony.unicopia.player.IView;
|
|
|
|
import com.minelittlepony.unicopia.player.PlayerSpeciesList;
|
2019-02-27 21:15:04 +01:00
|
|
|
|
2019-02-17 00:08:19 +01:00
|
|
|
import net.minecraft.client.Minecraft;
|
|
|
|
import net.minecraft.client.gui.GuiOptions;
|
|
|
|
import net.minecraft.client.gui.GuiShareToLan;
|
|
|
|
import net.minecraft.client.renderer.GlStateManager;
|
|
|
|
import net.minecraftforge.client.event.EntityViewRenderEvent;
|
|
|
|
import net.minecraftforge.client.event.FOVUpdateEvent;
|
|
|
|
import net.minecraftforge.client.event.GuiScreenEvent;
|
|
|
|
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
|
|
|
import net.minecraftforge.client.event.RenderLivingEvent;
|
|
|
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
|
|
|
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
|
|
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
|
|
|
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
|
|
|
import net.minecraftforge.fml.common.gameevent.TickEvent.Phase;
|
|
|
|
import net.minecraftforge.fml.relauncher.Side;
|
|
|
|
|
|
|
|
@EventBusSubscriber(Side.CLIENT)
|
|
|
|
class ClientHooks {
|
|
|
|
// This fixes lighting errors on the armour slots.
|
|
|
|
// #MahjongPls
|
|
|
|
@FUF(reason = "Forge should fix this. Cancelling their event skips neccessary state resetting at the end of the render method")
|
|
|
|
@SubscribeEvent
|
|
|
|
public static void postEntityRender(RenderLivingEvent.Post<?> event) {
|
|
|
|
GlStateManager.enableAlpha();
|
2019-02-27 21:15:04 +01:00
|
|
|
|
|
|
|
UClient.instance().postRenderEntity(event.getEntity());
|
2019-02-17 00:08:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
public static void preEntityRender(RenderLivingEvent.Pre<?> event) {
|
2019-02-17 01:03:31 +01:00
|
|
|
if (UClient.instance().renderEntity(event.getEntity(), event.getPartialRenderTick())) {
|
|
|
|
event.setCanceled(true);
|
|
|
|
}
|
2019-02-17 00:08:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
public static void onDisplayGui(GuiScreenEvent.InitGuiEvent.Post event) {
|
|
|
|
if (event.getGui() instanceof GuiOptions || event.getGui() instanceof GuiShareToLan) {
|
|
|
|
UnicopiaClient.addUniButton(event.getButtonList());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
public static void onGameTick(TickEvent.ClientTickEvent event) {
|
|
|
|
if (event.phase == Phase.END) {
|
|
|
|
UClient.instance().tick();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
public static void onRenderHud(RenderGameOverlayEvent.Post event) {
|
|
|
|
if (event.getType() != ElementType.ALL) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
IPlayer player = UClient.instance().getIPlayer();
|
|
|
|
if (player != null && Minecraft.getMinecraft().world != null) {
|
|
|
|
UHud.instance.renderHud(player, event.getResolution());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
public static void modifyFOV(FOVUpdateEvent event) {
|
|
|
|
event.setNewfov(PlayerSpeciesList.instance().getPlayer(event.getEntity()).getCamera().calculateFieldOfView(event.getFov()));
|
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
public static void setupPlayerCamera(EntityViewRenderEvent.CameraSetup event) {
|
|
|
|
|
|
|
|
IPlayer player = UClient.instance().getIPlayer();
|
|
|
|
|
|
|
|
if (player != null) {
|
|
|
|
IView view = player.getCamera();
|
|
|
|
|
|
|
|
event.setRoll(view.calculateRoll());
|
|
|
|
event.setPitch(view.calculatePitch(event.getPitch()));
|
|
|
|
event.setYaw(view.calculateYaw(event.getYaw()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|