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