    001    package net.minecraft.src;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005
    006    public class ModelBox
    007    {
    008        /**
    009         * The (x,y,z) vertex positions and (u,v) texture coordinates for each of the 8 points on a cube
    010         */
    011        private PositionTextureVertex[] vertexPositions;
    012
    013        /** An array of 6 TexturedQuads, one for each face of a cube */
    014        private TexturedQuad[] quadList;
    015
    016        /** X vertex coordinate of lower box corner */
    017        public final float posX1;
    018
    019        /** Y vertex coordinate of lower box corner */
    020        public final float posY1;
    021
    022        /** Z vertex coordinate of lower box corner */
    023        public final float posZ1;
    024
    025        /** X vertex coordinate of upper box corner */
    026        public final float posX2;
    027
    028        /** Y vertex coordinate of upper box corner */
    029        public final float posY2;
    030
    031        /** Z vertex coordinate of upper box corner */
    032        public final float posZ2;
    033        public String field_78247_g;
    034
    035        public ModelBox(ModelRenderer par1ModelRenderer, int par2, int par3, float par4, float par5, float par6, int par7, int par8, int par9, float par10)
    036        {
    037            this.posX1 = par4;
    038            this.posY1 = par5;
    039            this.posZ1 = par6;
    040            this.posX2 = par4 + (float)par7;
    041            this.posY2 = par5 + (float)par8;
    042            this.posZ2 = par6 + (float)par9;
    043            this.vertexPositions = new PositionTextureVertex[8];
    044            this.quadList = new TexturedQuad[6];
    045            float var11 = par4 + (float)par7;
    046            float var12 = par5 + (float)par8;
    047            float var13 = par6 + (float)par9;
    048            par4 -= par10;
    049            par5 -= par10;
    050            par6 -= par10;
    051            var11 += par10;
    052            var12 += par10;
    053            var13 += par10;
    054
    055            if (par1ModelRenderer.mirror)
    056            {
    057                float var14 = var11;
    058                var11 = par4;
    059                par4 = var14;
    060            }
    061
    062            PositionTextureVertex var23 = new PositionTextureVertex(par4, par5, par6, 0.0F, 0.0F);
    063            PositionTextureVertex var15 = new PositionTextureVertex(var11, par5, par6, 0.0F, 8.0F);
    064            PositionTextureVertex var16 = new PositionTextureVertex(var11, var12, par6, 8.0F, 8.0F);
    065            PositionTextureVertex var17 = new PositionTextureVertex(par4, var12, par6, 8.0F, 0.0F);
    066            PositionTextureVertex var18 = new PositionTextureVertex(par4, par5, var13, 0.0F, 0.0F);
    067            PositionTextureVertex var19 = new PositionTextureVertex(var11, par5, var13, 0.0F, 8.0F);
    068            PositionTextureVertex var20 = new PositionTextureVertex(var11, var12, var13, 8.0F, 8.0F);
    069            PositionTextureVertex var21 = new PositionTextureVertex(par4, var12, var13, 8.0F, 0.0F);
    070            this.vertexPositions[0] = var23;
    071            this.vertexPositions[1] = var15;
    072            this.vertexPositions[2] = var16;
    073            this.vertexPositions[3] = var17;
    074            this.vertexPositions[4] = var18;
    075            this.vertexPositions[5] = var19;
    076            this.vertexPositions[6] = var20;
    077            this.vertexPositions[7] = var21;
    078            this.quadList[0] = new TexturedQuad(new PositionTextureVertex[] {var19, var15, var16, var20}, par2 + par9 + par7, par3 + par9, par2 + par9 + par7 + par9, par3 + par9 + par8, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
    079            this.quadList[1] = new TexturedQuad(new PositionTextureVertex[] {var23, var18, var21, var17}, par2, par3 + par9, par2 + par9, par3 + par9 + par8, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
    080            this.quadList[2] = new TexturedQuad(new PositionTextureVertex[] {var19, var18, var23, var15}, par2 + par9, par3, par2 + par9 + par7, par3 + par9, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
    081            this.quadList[3] = new TexturedQuad(new PositionTextureVertex[] {var16, var17, var21, var20}, par2 + par9 + par7, par3 + par9, par2 + par9 + par7 + par7, par3, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
    082            this.quadList[4] = new TexturedQuad(new PositionTextureVertex[] {var15, var23, var17, var16}, par2 + par9, par3 + par9, par2 + par9 + par7, par3 + par9 + par8, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
    083            this.quadList[5] = new TexturedQuad(new PositionTextureVertex[] {var18, var19, var20, var21}, par2 + par9 + par7 + par9, par3 + par9, par2 + par9 + par7 + par9 + par7, par3 + par9 + par8, par1ModelRenderer.textureWidth, par1ModelRenderer.textureHeight);
    084
    085            if (par1ModelRenderer.mirror)
    086            {
    087                for (int var22 = 0; var22 < this.quadList.length; ++var22)
    088                {
    089                    this.quadList[var22].flipFace();
    090                }
    091            }
    092        }
    093
    094        /**
    095         * Draw the six sided box defined by this ModelBox
    096         */
    097        @SideOnly(Side.CLIENT)
    098        public void render(Tessellator par1Tessellator, float par2)
    099        {
    100            for (int var3 = 0; var3 < this.quadList.length; ++var3)
    101            {
    102                this.quadList[var3].draw(par1Tessellator, par2);
    103            }
    104        }
    105
    106        public ModelBox func_78244_a(String par1Str)
    107        {
    108            this.field_78247_g = par1Str;
    109            return this;
    110        }
    111    }