package portables.client.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import portables.common.core.CommonProxy; import portables.common.entity.CustomEntityFallingSand; import portables.common.util.Util; @SideOnly(Side.CLIENT) public class GuiPortableBlock extends GuiScreen { public static ResourceLocation texture = new ResourceLocation("simpleportables", "textures/gui/guiRemote.png"); public final int xSizeOfTexture = 176; public final int ySizeOfTexture = 167; private static float yaw; private static float roll; private static boolean rollDown; public GuiPortableBlock() { } @Override public void drawScreen(int par1, int par2, float par3) { drawDefaultBackground(); int x = (this.width - xSizeOfTexture) / 2; int y = (this.height - ySizeOfTexture) / 2; ItemStack currentItem = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem(); GuiButton button = (GuiButton) buttonList.get(1); GuiButton button1 = (GuiButton) buttonList.get(2); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); mc.renderEngine.bindTexture(texture); drawTexturedModalRect(x, y, 0, 0, xSizeOfTexture, ySizeOfTexture); if (currentItem != null) { if (Item.getIdFromItem(currentItem.getItem()) == Item.getIdFromItem(CommonProxy.portableBlock)) { if (currentItem.stackTagCompound.getCompoundTag("info").getBoolean("linked")) { renderSolidBlock(x, y, currentItem.stackTagCompound.getCompoundTag("info").getInteger("blockID"), Block.getBlockById(currentItem.stackTagCompound.getCompoundTag("info").getInteger("blockID"))); drawInformation(currentItem, x, y); } if (currentItem.stackTagCompound.getCompoundTag("info").hasKey("locked")) { button.visible = false; button1.visible = true; } else { button.visible = true; button1.visible = false; } } } super.drawScreen(par1, par2, par3); } @Override public boolean doesGuiPauseGame() { return false; } @Override protected void keyTyped(char par1, int par2) { if (par2 == 1 || par2 == this.mc.gameSettings.keyBindInventory.getKeyCode()) { this.mc.thePlayer.closeScreen(); } } @SuppressWarnings("unchecked") @Override public void initGui() { int x = (this.width - xSizeOfTexture) / 2; int y = (this.height - ySizeOfTexture) / 2; buttonList.clear(); buttonList.add(new GuiButton(0, x + 10, y + 135, 100, 20, "Remove Connection")); buttonList.add(new GuiButton(1, x + 115, y + 135, 50, 20, "Lock")); buttonList.add(new GuiButton(2, x + 115, y + 135, 50, 20, "Unlock")); } @Override protected void actionPerformed(GuiButton button) { switch (button.id) { case 0: Util.sendModPacket(4); break; case 1: Util.sendModPacket(5); break; case 2: Util.sendModPacket(6); break; } } public static void renderSolidBlock(int x, int y, int id, Block block) { CustomEntityFallingSand entity = new CustomEntityFallingSand(Minecraft.getMinecraft().theWorld, 0, 0, 0, block, id); GL11.glPushMatrix(); GL11.glTranslatef(x + 90, y + 65, 100); float scale = 60F; GL11.glScalef(-scale, scale, scale); RenderHelper.enableStandardItemLighting(); GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(roll, 1, 0, 0); GL11.glRotatef(yaw, 0, 1, 0); RenderManager.instance.renderEntityWithPosYaw(entity, 0, 0, 0, 0, 0); RenderHelper.disableStandardItemLighting(); GL11.glPopMatrix(); yaw += 0.5F; if (rollDown) { roll -= 0.05F; if (roll < -5) { rollDown = false; roll = -5; } } else { roll += 0.05F; if (roll > 25) { rollDown = true; roll = 25; } } } public void drawInformation(ItemStack item, int x, int y) { if (item.stackTagCompound.getCompoundTag("info").getString("blockName") != null) { drawCenteredString(Minecraft.getMinecraft().fontRenderer, item.stackTagCompound.getCompoundTag("info").getString("blockName"), x + 90, y + 5, 0x404040); } drawCenteredString(Minecraft.getMinecraft().fontRenderer, "X:" + item.stackTagCompound.getCompoundTag("info").getInteger("tileX") + " Y:" + item.stackTagCompound.getCompoundTag("info").getInteger("tileY") + " Z:" + item.stackTagCompound.getCompoundTag("info").getInteger("tileZ"), x + 90, y + 124, 0x404040); } public void drawCenteredString(FontRenderer par1FontRenderer, String xStr, int y, int z, int par5) { par1FontRenderer.drawString(xStr, y - par1FontRenderer.getStringWidth(xStr) / 2, z, par5); } }