001 package net.minecraft.src; 002 003 import cpw.mods.fml.common.Side; 004 import cpw.mods.fml.common.asm.SideOnly; 005 import net.minecraft.client.Minecraft; 006 import org.lwjgl.opengl.GL11; 007 import org.lwjgl.opengl.GL12; 008 009 @SideOnly(Side.CLIENT) 010 public class GuiInventory extends InventoryEffectRenderer 011 { 012 /** 013 * x size of the inventory window in pixels. Defined as float, passed as int 014 */ 015 private float xSize_lo; 016 017 /** 018 * y size of the inventory window in pixels. Defined as float, passed as int. 019 */ 020 private float ySize_lo; 021 022 public GuiInventory(EntityPlayer par1EntityPlayer) 023 { 024 super(par1EntityPlayer.inventorySlots); 025 this.allowUserInput = true; 026 par1EntityPlayer.addStat(AchievementList.openInventory, 1); 027 } 028 029 /** 030 * Called from the main game loop to update the screen. 031 */ 032 public void updateScreen() 033 { 034 if (this.mc.playerController.isInCreativeMode()) 035 { 036 this.mc.displayGuiScreen(new GuiContainerCreative(this.mc.thePlayer)); 037 } 038 } 039 040 /** 041 * Adds the buttons (and other controls) to the screen in question. 042 */ 043 public void initGui() 044 { 045 this.controlList.clear(); 046 047 if (this.mc.playerController.isInCreativeMode()) 048 { 049 this.mc.displayGuiScreen(new GuiContainerCreative(this.mc.thePlayer)); 050 } 051 else 052 { 053 super.initGui(); 054 } 055 } 056 057 /** 058 * Draw the foreground layer for the GuiContainer (everything in front of the items) 059 */ 060 protected void drawGuiContainerForegroundLayer() 061 { 062 this.fontRenderer.drawString(StatCollector.translateToLocal("container.crafting"), 86, 16, 4210752); 063 } 064 065 /** 066 * Draws the screen and all the components in it. 067 */ 068 public void drawScreen(int par1, int par2, float par3) 069 { 070 super.drawScreen(par1, par2, par3); 071 this.xSize_lo = (float)par1; 072 this.ySize_lo = (float)par2; 073 } 074 075 /** 076 * Draw the background layer for the GuiContainer (everything behind the items) 077 */ 078 protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) 079 { 080 int var4 = this.mc.renderEngine.getTexture("/gui/inventory.png"); 081 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 082 this.mc.renderEngine.bindTexture(var4); 083 int var5 = this.guiLeft; 084 int var6 = this.guiTop; 085 this.drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize); 086 func_74223_a(this.mc, var5 + 51, var6 + 75, 30, (float)(var5 + 51) - this.xSize_lo, (float)(var6 + 75 - 50) - this.ySize_lo); 087 } 088 089 public static void func_74223_a(Minecraft par0Minecraft, int par1, int par2, int par3, float par4, float par5) 090 { 091 GL11.glEnable(GL11.GL_COLOR_MATERIAL); 092 GL11.glPushMatrix(); 093 GL11.glTranslatef((float)par1, (float)par2, 50.0F); 094 GL11.glScalef((float)(-par3), (float)par3, (float)par3); 095 GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); 096 float var6 = par0Minecraft.thePlayer.renderYawOffset; 097 float var7 = par0Minecraft.thePlayer.rotationYaw; 098 float var8 = par0Minecraft.thePlayer.rotationPitch; 099 GL11.glRotatef(135.0F, 0.0F, 1.0F, 0.0F); 100 RenderHelper.enableStandardItemLighting(); 101 GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F); 102 GL11.glRotatef(-((float)Math.atan((double)(par5 / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F); 103 par0Minecraft.thePlayer.renderYawOffset = (float)Math.atan((double)(par4 / 40.0F)) * 20.0F; 104 par0Minecraft.thePlayer.rotationYaw = (float)Math.atan((double)(par4 / 40.0F)) * 40.0F; 105 par0Minecraft.thePlayer.rotationPitch = -((float)Math.atan((double)(par5 / 40.0F))) * 20.0F; 106 par0Minecraft.thePlayer.rotationYawHead = par0Minecraft.thePlayer.rotationYaw; 107 GL11.glTranslatef(0.0F, par0Minecraft.thePlayer.yOffset, 0.0F); 108 RenderManager.instance.playerViewY = 180.0F; 109 RenderManager.instance.renderEntityWithPosYaw(par0Minecraft.thePlayer, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F); 110 par0Minecraft.thePlayer.renderYawOffset = var6; 111 par0Minecraft.thePlayer.rotationYaw = var7; 112 par0Minecraft.thePlayer.rotationPitch = var8; 113 GL11.glPopMatrix(); 114 RenderHelper.disableStandardItemLighting(); 115 GL11.glDisable(GL12.GL_RESCALE_NORMAL); 116 } 117 118 /** 119 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e). 120 */ 121 protected void actionPerformed(GuiButton par1GuiButton) 122 { 123 if (par1GuiButton.id == 0) 124 { 125 this.mc.displayGuiScreen(new GuiAchievements(this.mc.statFileWriter)); 126 } 127 128 if (par1GuiButton.id == 1) 129 { 130 this.mc.displayGuiScreen(new GuiStats(this, this.mc.statFileWriter)); 131 } 132 } 133 }