package net.lomeli.ec.client.gui; import java.io.IOException; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.entity.Entity; import net.lomeli.lomlib.util.LangUtil; import net.lomeli.ec.client.CreeperEntry; import net.lomeli.ec.client.gui.button.GuiPageButton; import net.lomeli.ec.entity.EntityGhostCreeper; public class GuiCreeperEntry extends GuiScreen { private int bookImageWidth = 192; private int bookImageHeight = 192; private int left, top; private final CreeperEntry entry; private GuiPageButton backButton; private final GuiItemList prevPage; public GuiCreeperEntry(GuiItemList page, CreeperEntry entry) { this.entry = entry; this.prevPage = page; } @Override public void initGui() { super.initGui(); left = width / 2 - bookImageWidth / 2; top = height / 2 - bookImageHeight / 2; this.buttonList.add(this.backButton = new GuiPageButton(1, left + 38, top + 156, false)); } @Override protected void actionPerformed(GuiButton button) throws IOException { super.actionPerformed(button); if (button == null) return; if (button.id == backButton.id) this.mc.displayGuiScreen(prevPage); } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(GuiItemList.bookGuiTextures); this.drawTexturedModalRect(left, top, 0, 0, this.bookImageWidth, this.bookImageHeight); super.drawScreen(mouseX, mouseY, partialTicks); drawEntry(); } private void drawEntry() { if (entry == null) return; Entity entity = entry.getEntity(mc.theWorld); FontRenderer fontrenderer = mc.fontRendererObj; fontrenderer.drawString(LangUtil.translate(entity.getName()), left + 60, top + 17, 894731); drawEntity(entity, left + 45, top + 30, 1f); boolean oldState = fontrenderer.getUnicodeFlag(); fontrenderer.setUnicodeFlag(true); if (!prevPage.ghostClear && entity instanceof EntityGhostCreeper) fontrenderer.setUnicodeFlag(false); fontrenderer.drawSplitString(LangUtil.translate(entry.getUnlocalizedText()), left + 37, top + 35, bookImageWidth - 80, 0); fontrenderer.setUnicodeFlag(oldState); } private void drawEntity(Entity entity, int x, int y, float size) { if (entity == null) return; GlStateManager.pushMatrix(); GlStateManager.color(1, 1, 1, 1); float max = Math.max(1, Math.max(entity.width, entity.height)); int scale = (int) (40 * size / max); GlStateManager.pushMatrix(); GlStateManager.translate(x, y, 50f); GlStateManager.scale(-scale, scale, scale); GlStateManager.rotate(180f, 0f, 0f, 1f); GlStateManager.rotate(30, 1, 0, 0); GlStateManager.rotate(135, 0, 1, 0); GlStateManager.rotate(-135, 0, 1, 0); GlStateManager.translate(0, entity.getYOffset(), 0); GlStateManager.rotate(45f, 0, 1, 0); mc.getRenderManager().playerViewY = 180f; mc.getRenderManager().renderEntityWithPosYaw(entity, 0d, 0d, 0d, 0f, 1f); GlStateManager.popMatrix(); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) 240 / 1.0F, (float) 240 / 1.0F); GlStateManager.popMatrix(); } }