001    package net.minecraft.client.renderer;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import net.minecraft.block.Block;
006    import net.minecraft.block.BlockAnvil;
007    import net.minecraft.block.BlockBeacon;
008    import net.minecraft.block.BlockBed;
009    import net.minecraft.block.BlockBrewingStand;
010    import net.minecraft.block.BlockCauldron;
011    import net.minecraft.block.BlockCocoa;
012    import net.minecraft.block.BlockDirectional;
013    import net.minecraft.block.BlockDragonEgg;
014    import net.minecraft.block.BlockEndPortalFrame;
015    import net.minecraft.block.BlockFence;
016    import net.minecraft.block.BlockFenceGate;
017    import net.minecraft.block.BlockFlower;
018    import net.minecraft.block.BlockFlowerPot;
019    import net.minecraft.block.BlockFluid;
020    import net.minecraft.block.BlockPane;
021    import net.minecraft.block.BlockPistonBase;
022    import net.minecraft.block.BlockPistonExtension;
023    import net.minecraft.block.BlockRail;
024    import net.minecraft.block.BlockRedstoneRepeater;
025    import net.minecraft.block.BlockRedstoneWire;
026    import net.minecraft.block.BlockStairs;
027    import net.minecraft.block.BlockStem;
028    import net.minecraft.block.BlockTripWire;
029    import net.minecraft.block.BlockWall;
030    import net.minecraft.block.material.Material;
031    import net.minecraft.client.Minecraft;
032    import net.minecraft.src.FMLRenderAccessLibrary;
033    import net.minecraft.util.Direction;
034    import net.minecraft.util.MathHelper;
035    import net.minecraft.util.Vec3;
036    import net.minecraft.world.IBlockAccess;
037    import net.minecraft.world.World;
038    import org.lwjgl.opengl.GL11;
039    import org.lwjgl.opengl.GL12;
040    
041    import static net.minecraftforge.common.ForgeDirection.*;
042    
043    @SideOnly(Side.CLIENT)
044    public class RenderBlocks
045    {
046        /** The IBlockAccess used by this instance of RenderBlocks */
047        public IBlockAccess blockAccess;
048    
049        /**
050         * If set to >=0, all block faces will be rendered using this texture index
051         */
052        public int overrideBlockTexture = -1;
053    
054        /**
055         * Set to true if the texture should be flipped horizontally during render*Face
056         */
057        public boolean flipTexture = false;
058    
059        /**
060         * If true, renders all faces on all blocks rather than using the logic in Block.shouldSideBeRendered.  Unused.
061         */
062        public boolean renderAllFaces = false;
063    
064        /** Fancy grass side matching biome */
065        public static boolean fancyGrass = true;
066        public boolean useInventoryTint = true;
067        public double field_83021_g;
068        public double field_83026_h;
069        public double field_83027_i;
070        public double field_83024_j;
071        public double field_83025_k;
072        public double field_83022_l;
073        public boolean field_83023_m = false;
074        public int uvRotateEast = 0;
075        public int uvRotateWest = 0;
076        public int uvRotateSouth = 0;
077        public int uvRotateNorth = 0;
078        public int uvRotateTop = 0;
079        public int uvRotateBottom = 0;
080    
081        /** Whether ambient occlusion is enabled or not */
082        public boolean enableAO;
083    
084        /** Light value of the block itself */
085        public float lightValueOwn;
086    
087        /** Light value one block less in x axis */
088        public float aoLightValueXNeg;
089    
090        /** Light value one block more in y axis */
091        public float aoLightValueYNeg;
092    
093        /** Light value one block more in z axis */
094        public float aoLightValueZNeg;
095    
096        /** Light value one block more in x axis */
097        public float aoLightValueXPos;
098    
099        /** Light value one block more in y axis */
100        public float aoLightValueYPos;
101    
102        /** Light value one block more in z axis */
103        public float aoLightValueZPos;
104    
105        /**
106         * Used as a scratch variable for ambient occlusion on the north/bottom/east corner.
107         */
108        public float aoLightValueScratchXYZNNN;
109    
110        /**
111         * Used as a scratch variable for ambient occlusion between the bottom face and the north face.
112         */
113        public float aoLightValueScratchXYNN;
114    
115        /**
116         * Used as a scratch variable for ambient occlusion on the north/bottom/west corner.
117         */
118        public float aoLightValueScratchXYZNNP;
119    
120        /**
121         * Used as a scratch variable for ambient occlusion between the bottom face and the east face.
122         */
123        public float aoLightValueScratchYZNN;
124    
125        /**
126         * Used as a scratch variable for ambient occlusion between the bottom face and the west face.
127         */
128        public float aoLightValueScratchYZNP;
129    
130        /**
131         * Used as a scratch variable for ambient occlusion on the south/bottom/east corner.
132         */
133        public float aoLightValueScratchXYZPNN;
134    
135        /**
136         * Used as a scratch variable for ambient occlusion between the bottom face and the south face.
137         */
138        public float aoLightValueScratchXYPN;
139    
140        /**
141         * Used as a scratch variable for ambient occlusion on the south/bottom/west corner.
142         */
143        public float aoLightValueScratchXYZPNP;
144    
145        /**
146         * Used as a scratch variable for ambient occlusion on the north/top/east corner.
147         */
148        public float aoLightValueScratchXYZNPN;
149    
150        /**
151         * Used as a scratch variable for ambient occlusion between the top face and the north face.
152         */
153        public float aoLightValueScratchXYNP;
154    
155        /**
156         * Used as a scratch variable for ambient occlusion on the north/top/west corner.
157         */
158        public float aoLightValueScratchXYZNPP;
159    
160        /**
161         * Used as a scratch variable for ambient occlusion between the top face and the east face.
162         */
163        public float aoLightValueScratchYZPN;
164    
165        /**
166         * Used as a scratch variable for ambient occlusion on the south/top/east corner.
167         */
168        public float aoLightValueScratchXYZPPN;
169    
170        /**
171         * Used as a scratch variable for ambient occlusion between the top face and the south face.
172         */
173        public float aoLightValueScratchXYPP;
174    
175        /**
176         * Used as a scratch variable for ambient occlusion between the top face and the west face.
177         */
178        public float aoLightValueScratchYZPP;
179    
180        /**
181         * Used as a scratch variable for ambient occlusion on the south/top/west corner.
182         */
183        public float aoLightValueScratchXYZPPP;
184    
185        /**
186         * Used as a scratch variable for ambient occlusion between the north face and the east face.
187         */
188        public float aoLightValueScratchXZNN;
189    
190        /**
191         * Used as a scratch variable for ambient occlusion between the south face and the east face.
192         */
193        public float aoLightValueScratchXZPN;
194    
195        /**
196         * Used as a scratch variable for ambient occlusion between the north face and the west face.
197         */
198        public float aoLightValueScratchXZNP;
199    
200        /**
201         * Used as a scratch variable for ambient occlusion between the south face and the west face.
202         */
203        public float aoLightValueScratchXZPP;
204    
205        /** Ambient occlusion brightness XYZNNN */
206        public int aoBrightnessXYZNNN;
207    
208        /** Ambient occlusion brightness XYNN */
209        public int aoBrightnessXYNN;
210    
211        /** Ambient occlusion brightness XYZNNP */
212        public int aoBrightnessXYZNNP;
213    
214        /** Ambient occlusion brightness YZNN */
215        public int aoBrightnessYZNN;
216    
217        /** Ambient occlusion brightness YZNP */
218        public int aoBrightnessYZNP;
219    
220        /** Ambient occlusion brightness XYZPNN */
221        public int aoBrightnessXYZPNN;
222    
223        /** Ambient occlusion brightness XYPN */
224        public int aoBrightnessXYPN;
225    
226        /** Ambient occlusion brightness XYZPNP */
227        public int aoBrightnessXYZPNP;
228    
229        /** Ambient occlusion brightness XYZNPN */
230        public int aoBrightnessXYZNPN;
231    
232        /** Ambient occlusion brightness XYNP */
233        public int aoBrightnessXYNP;
234    
235        /** Ambient occlusion brightness XYZNPP */
236        public int aoBrightnessXYZNPP;
237    
238        /** Ambient occlusion brightness YZPN */
239        public int aoBrightnessYZPN;
240    
241        /** Ambient occlusion brightness XYZPPN */
242        public int aoBrightnessXYZPPN;
243    
244        /** Ambient occlusion brightness XYPP */
245        public int aoBrightnessXYPP;
246    
247        /** Ambient occlusion brightness YZPP */
248        public int aoBrightnessYZPP;
249    
250        /** Ambient occlusion brightness XYZPPP */
251        public int aoBrightnessXYZPPP;
252    
253        /** Ambient occlusion brightness XZNN */
254        public int aoBrightnessXZNN;
255    
256        /** Ambient occlusion brightness XZPN */
257        public int aoBrightnessXZPN;
258    
259        /** Ambient occlusion brightness XZNP */
260        public int aoBrightnessXZNP;
261    
262        /** Ambient occlusion brightness XZPP */
263        public int aoBrightnessXZPP;
264    
265        /** Ambient occlusion type (0=simple, 1=complex) */
266        public int aoType = 1;
267    
268        /** Brightness top left */
269        public int brightnessTopLeft;
270    
271        /** Brightness bottom left */
272        public int brightnessBottomLeft;
273    
274        /** Brightness bottom right */
275        public int brightnessBottomRight;
276    
277        /** Brightness top right */
278        public int brightnessTopRight;
279    
280        /** Red color value for the top left corner */
281        public float colorRedTopLeft;
282    
283        /** Red color value for the bottom left corner */
284        public float colorRedBottomLeft;
285    
286        /** Red color value for the bottom right corner */
287        public float colorRedBottomRight;
288    
289        /** Red color value for the top right corner */
290        public float colorRedTopRight;
291    
292        /** Green color value for the top left corner */
293        public float colorGreenTopLeft;
294    
295        /** Green color value for the bottom left corner */
296        public float colorGreenBottomLeft;
297    
298        /** Green color value for the bottom right corner */
299        public float colorGreenBottomRight;
300    
301        /** Green color value for the top right corner */
302        public float colorGreenTopRight;
303    
304        /** Blue color value for the top left corner */
305        public float colorBlueTopLeft;
306    
307        /** Blue color value for the bottom left corner */
308        public float colorBlueBottomLeft;
309    
310        /** Blue color value for the bottom right corner */
311        public float colorBlueBottomRight;
312    
313        /** Blue color value for the top right corner */
314        public float colorBlueTopRight;
315    
316        /**
317         * Grass flag for ambient occlusion on Center X, Positive Y, and Negative Z
318         */
319        public boolean aoGrassXYZCPN;
320    
321        /**
322         * Grass flag for ambient occlusion on Positive X, Positive Y, and Center Z
323         */
324        public boolean aoGrassXYZPPC;
325    
326        /**
327         * Grass flag for ambient occlusion on Negative X, Positive Y, and Center Z
328         */
329        public boolean aoGrassXYZNPC;
330    
331        /**
332         * Grass flag for ambient occlusion on Center X, Positive Y, and Positive Z
333         */
334        public boolean aoGrassXYZCPP;
335    
336        /**
337         * Grass flag for ambient occlusion on Negative X, Center Y, and Negative Z
338         */
339        public boolean aoGrassXYZNCN;
340    
341        /**
342         * Grass flag for ambient occlusion on Positive X, Center Y, and Positive Z
343         */
344        public boolean aoGrassXYZPCP;
345    
346        /**
347         * Grass flag for ambient occlusion on Negative X, Center Y, and Positive Z
348         */
349        public boolean aoGrassXYZNCP;
350    
351        /**
352         * Grass flag for ambient occlusion on Positive X, Center Y, and Negative Z
353         */
354        public boolean aoGrassXYZPCN;
355    
356        /**
357         * Grass flag for ambient occlusion on Center X, Negative Y, and Negative Z
358         */
359        public boolean aoGrassXYZCNN;
360    
361        /**
362         * Grass flag for ambient occlusion on Positive X, Negative Y, and Center Z
363         */
364        public boolean aoGrassXYZPNC;
365    
366        /**
367         * Grass flag for ambient occlusion on Negative X, Negative Y, and center Z
368         */
369        public boolean aoGrassXYZNNC;
370    
371        /**
372         * Grass flag for ambient occlusion on Center X, Negative Y, and Positive Z
373         */
374        public boolean aoGrassXYZCNP;
375    
376        public RenderBlocks(IBlockAccess par1IBlockAccess)
377        {
378            this.blockAccess = par1IBlockAccess;
379        }
380    
381        public RenderBlocks() {}
382    
383        public void func_82774_a(int par1)
384        {
385            this.overrideBlockTexture = par1;
386        }
387    
388        /**
389         * Clear override block texture
390         */
391        public void clearOverrideBlockTexture()
392        {
393            this.overrideBlockTexture = -1;
394        }
395    
396        /**
397         * Sets the size and offset of the block to be rendered, ie: half size and rendered center block: 0.25D, 0.75D
398         */
399        public void setRenderMinMax(double par1, double par3, double par5, double par7, double par9, double par11)
400        {
401            if (!this.field_83023_m)
402            {
403                this.field_83021_g = par1;
404                this.field_83026_h = par7;
405                this.field_83027_i = par3;
406                this.field_83024_j = par9;
407                this.field_83025_k = par5;
408                this.field_83022_l = par11;
409            }
410        }
411    
412        public void func_83018_a(Block par1Block)
413        {
414            if (!this.field_83023_m)
415            {
416                this.field_83021_g = par1Block.getBlockBoundsMinX();
417                this.field_83026_h = par1Block.getBlockBoundsMaxX();
418                this.field_83027_i = par1Block.getBlockBoundsMinY();
419                this.field_83024_j = par1Block.getBlockBoundsMaxY();
420                this.field_83025_k = par1Block.getBlockBoundsMinZ();
421                this.field_83022_l = par1Block.getBlockBoundsMaxZ();
422            }
423        }
424    
425        public void func_83019_b(double par1, double par3, double par5, double par7, double par9, double par11)
426        {
427            this.field_83021_g = par1;
428            this.field_83026_h = par7;
429            this.field_83027_i = par3;
430            this.field_83024_j = par9;
431            this.field_83025_k = par5;
432            this.field_83022_l = par11;
433            this.field_83023_m = true;
434        }
435    
436        public void func_83017_b()
437        {
438            this.field_83023_m = false;
439        }
440    
441        /**
442         * Renders a block using the given texture instead of the block's own default texture
443         */
444        public void renderBlockUsingTexture(Block par1Block, int par2, int par3, int par4, int par5)
445        {
446            this.overrideBlockTexture = par5;
447            this.renderBlockByRenderType(par1Block, par2, par3, par4);
448            this.overrideBlockTexture = -1;
449        }
450    
451        /**
452         * Render all faces of a block
453         */
454        public void renderBlockAllFaces(Block par1Block, int par2, int par3, int par4)
455        {
456            this.renderAllFaces = true;
457            this.renderBlockByRenderType(par1Block, par2, par3, par4);
458            this.renderAllFaces = false;
459        }
460    
461        /**
462         * Renders the block at the given coordinates using the block's rendering type
463         */
464        public boolean renderBlockByRenderType(Block par1Block, int par2, int par3, int par4)
465        {
466            int var5 = par1Block.getRenderType();
467            par1Block.setBlockBoundsBasedOnState(this.blockAccess, par2, par3, par4);
468            this.func_83018_a(par1Block);
469    
470            switch (var5)
471            {
472                case 0:
473                    return this.renderStandardBlock(par1Block, par2, par3, par4);
474                case 31:
475                    return this.renderBlockLog(par1Block, par2, par3, par4);
476                case 4:
477                    return this.renderBlockFluids(par1Block, par2, par3, par4);
478                case 13:
479                    return this.renderBlockCactus(par1Block, par2, par3, par4);
480                case 1:
481                    return this.renderCrossedSquares(par1Block, par2, par3, par4);
482                case 19:
483                    return this.renderBlockStem(par1Block, par2, par3, par4);
484                case 23:
485                    return this.renderBlockLilyPad(par1Block, par2, par3, par4);
486                case 6:
487                    return this.renderBlockCrops(par1Block, par2, par3, par4);
488                case 2:
489                    return this.renderBlockTorch(par1Block, par2, par3, par4);
490                case 3:
491                    return this.renderBlockFire(par1Block, par2, par3, par4);
492                case 5:
493                    return this.renderBlockRedstoneWire(par1Block, par2, par3, par4);
494                case 8:
495                    return this.renderBlockLadder(par1Block, par2, par3, par4);
496                case 7:
497                    return this.renderBlockDoor(par1Block, par2, par3, par4);
498                case 9:
499                    return this.renderBlockMinecartTrack((BlockRail)par1Block, par2, par3, par4);
500                case 10:
501                    return this.renderBlockStairs((BlockStairs)par1Block, par2, par3, par4);
502                case 27:
503                    return this.renderBlockDragonEgg((BlockDragonEgg)par1Block, par2, par3, par4);
504                case 11:
505                    return this.renderBlockFence((BlockFence)par1Block, par2, par3, par4);
506                case 32:
507                    return this.renderBlockWall((BlockWall)par1Block, par2, par3, par4);
508                case 12:
509                    return this.renderBlockLever(par1Block, par2, par3, par4);
510                case 29:
511                    return this.renderBlockTripWireSource(par1Block, par2, par3, par4);
512                case 30:
513                    return this.renderBlockTripWire(par1Block, par2, par3, par4);
514                case 14:
515                    return this.renderBlockBed(par1Block, par2, par3, par4);
516                case 15:
517                    return this.renderBlockRepeater(par1Block, par2, par3, par4);
518                case 16:
519                    return this.renderPistonBase(par1Block, par2, par3, par4, false);
520                case 17:
521                    return this.renderPistonExtension(par1Block, par2, par3, par4, true);
522                case 18:
523                    return this.renderBlockPane((BlockPane)par1Block, par2, par3, par4);
524                case 20:
525                    return this.renderBlockVine(par1Block, par2, par3, par4);
526                case 21:
527                    return this.renderBlockFenceGate((BlockFenceGate)par1Block, par2, par3, par4);
528                case 24:
529                    return this.renderBlockCauldron((BlockCauldron)par1Block, par2, par3, par4);
530                case 33:
531                    return this.renderBlockFlowerpot((BlockFlowerPot)par1Block, par2, par3, par4);
532                case 35:
533                    return this.renderBlockAnvil((BlockAnvil)par1Block, par2, par3, par4);
534                case 25:
535                    return this.renderBlockBrewingStand((BlockBrewingStand)par1Block, par2, par3, par4);
536                case 26:
537                    return this.renderBlockEndPortalFrame(par1Block, par2, par3, par4);
538                case 28:
539                    return this.renderBlockCocoa((BlockCocoa)par1Block, par2, par3, par4);
540                case 34:
541                    return this.renderBlockBeacon((BlockBeacon)par1Block, par2, par3, par4);
542                default:
543                    return FMLRenderAccessLibrary.renderWorldBlock(this, blockAccess, par2, par3, par4, par1Block, var5);
544            }
545        }
546    
547        /**
548         * Render BlockEndPortalFrame
549         */
550        public boolean renderBlockEndPortalFrame(Block par1Block, int par2, int par3, int par4)
551        {
552            int var5 = this.blockAccess.getBlockMetadata(par2, par3, par4);
553            int var6 = var5 & 3;
554    
555            if (var6 == 0)
556            {
557                this.uvRotateTop = 3;
558            }
559            else if (var6 == 3)
560            {
561                this.uvRotateTop = 1;
562            }
563            else if (var6 == 1)
564            {
565                this.uvRotateTop = 2;
566            }
567    
568            if (!BlockEndPortalFrame.isEnderEyeInserted(var5))
569            {
570                this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 0.8125D, 1.0D);
571                this.renderStandardBlock(par1Block, par2, par3, par4);
572                this.uvRotateTop = 0;
573                return true;
574            }
575            else
576            {
577                this.renderAllFaces = true;
578                this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 0.8125D, 1.0D);
579                this.renderStandardBlock(par1Block, par2, par3, par4);
580                this.overrideBlockTexture = 174;
581                this.setRenderMinMax(0.25D, 0.8125D, 0.25D, 0.75D, 1.0D, 0.75D);
582                this.renderStandardBlock(par1Block, par2, par3, par4);
583                this.renderAllFaces = false;
584                this.clearOverrideBlockTexture();
585                this.uvRotateTop = 0;
586                return true;
587            }
588        }
589    
590        /**
591         * render a bed at the given coordinates
592         */
593        public boolean renderBlockBed(Block par1Block, int par2, int par3, int par4)
594        {
595            Tessellator var5 = Tessellator.instance;
596            int var7 = par1Block.getBedDirection(blockAccess, par2, par3, par4);
597            boolean var8 = par1Block.isBedFoot(blockAccess, par2, par3, par4);
598            float var9 = 0.5F;
599            float var10 = 1.0F;
600            float var11 = 0.8F;
601            float var12 = 0.6F;
602            int var25 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4);
603            var5.setBrightness(var25);
604            var5.setColorOpaque_F(var9, var9, var9);
605            int var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0);
606            if (overrideBlockTexture >= 0) var27 = overrideBlockTexture; //BugFix Proper breaking texture on underside
607            int var28 = (var27 & 15) << 4;
608            int var29 = var27 & 240;
609            double var30 = (double)((float)var28 / 256.0F);
610            double var32 = ((double)(var28 + 16) - 0.01D) / 256.0D;
611            double var34 = (double)((float)var29 / 256.0F);
612            double var36 = ((double)(var29 + 16) - 0.01D) / 256.0D;
613            double var38 = (double)par2 + this.field_83021_g;
614            double var40 = (double)par2 + this.field_83026_h;
615            double var42 = (double)par3 + this.field_83027_i + 0.1875D;
616            double var44 = (double)par4 + this.field_83025_k;
617            double var46 = (double)par4 + this.field_83022_l;
618            var5.addVertexWithUV(var38, var42, var46, var30, var36);
619            var5.addVertexWithUV(var38, var42, var44, var30, var34);
620            var5.addVertexWithUV(var40, var42, var44, var32, var34);
621            var5.addVertexWithUV(var40, var42, var46, var32, var36);
622            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4));
623            var5.setColorOpaque_F(var10, var10, var10);
624            var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1);
625            if (overrideBlockTexture >= 0) var27 = overrideBlockTexture; //BugFix Proper breaking texture on top
626            var28 = (var27 & 15) << 4;
627            var29 = var27 & 240;
628            var30 = (double)((float)var28 / 256.0F);
629            var32 = ((double)(var28 + 16) - 0.01D) / 256.0D;
630            var34 = (double)((float)var29 / 256.0F);
631            var36 = ((double)(var29 + 16) - 0.01D) / 256.0D;
632            var38 = var30;
633            var40 = var32;
634            var42 = var34;
635            var44 = var34;
636            var46 = var30;
637            double var48 = var32;
638            double var50 = var36;
639            double var52 = var36;
640    
641            if (var7 == 0)
642            {
643                var40 = var30;
644                var42 = var36;
645                var46 = var32;
646                var52 = var34;
647            }
648            else if (var7 == 2)
649            {
650                var38 = var32;
651                var44 = var36;
652                var48 = var30;
653                var50 = var34;
654            }
655            else if (var7 == 3)
656            {
657                var38 = var32;
658                var44 = var36;
659                var48 = var30;
660                var50 = var34;
661                var40 = var30;
662                var42 = var36;
663                var46 = var32;
664                var52 = var34;
665            }
666    
667            double var54 = (double)par2 + this.field_83021_g;
668            double var56 = (double)par2 + this.field_83026_h;
669            double var58 = (double)par3 + this.field_83024_j;
670            double var60 = (double)par4 + this.field_83025_k;
671            double var62 = (double)par4 + this.field_83022_l;
672            var5.addVertexWithUV(var56, var58, var62, var46, var50);
673            var5.addVertexWithUV(var56, var58, var60, var38, var42);
674            var5.addVertexWithUV(var54, var58, var60, var40, var44);
675            var5.addVertexWithUV(var54, var58, var62, var48, var52);
676            int var64 = Direction.headInvisibleFace[var7];
677    
678            if (var8)
679            {
680                var64 = Direction.headInvisibleFace[Direction.footInvisibleFaceRemap[var7]];
681            }
682    
683            byte var65 = 4;
684    
685            switch (var7)
686            {
687                case 0:
688                    var65 = 5;
689                    break;
690                case 1:
691                    var65 = 3;
692                case 2:
693                default:
694                    break;
695                case 3:
696                    var65 = 2;
697            }
698    
699            if (var64 != 2 && (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 - 1, 2)))
700            {
701                var5.setBrightness(this.field_83025_k > 0.0D ? var25 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1));
702                var5.setColorOpaque_F(var11, var11, var11);
703                this.flipTexture = var65 == 2;
704                this.renderEastFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 2));
705            }
706    
707            if (var64 != 3 && (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 + 1, 3)))
708            {
709                var5.setBrightness(this.field_83022_l < 1.0D ? var25 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1));
710                var5.setColorOpaque_F(var11, var11, var11);
711                this.flipTexture = var65 == 3;
712                this.renderWestFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3));
713            }
714    
715            if (var64 != 4 && (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2 - 1, par3, par4, 4)))
716            {
717                var5.setBrightness(this.field_83025_k > 0.0D ? var25 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4));
718                var5.setColorOpaque_F(var12, var12, var12);
719                this.flipTexture = var65 == 4;
720                this.renderNorthFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 4));
721            }
722    
723            if (var64 != 5 && (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2 + 1, par3, par4, 5)))
724            {
725                var5.setBrightness(this.field_83022_l < 1.0D ? var25 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4));
726                var5.setColorOpaque_F(var12, var12, var12);
727                this.flipTexture = var65 == 5;
728                this.renderSouthFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 5));
729            }
730    
731            this.flipTexture = false;
732            return true;
733        }
734    
735        /**
736         * Render BlockBrewingStand
737         */
738        public boolean renderBlockBrewingStand(BlockBrewingStand par1BlockBrewingStand, int par2, int par3, int par4)
739        {
740            this.setRenderMinMax(0.4375D, 0.0D, 0.4375D, 0.5625D, 0.875D, 0.5625D);
741            this.renderStandardBlock(par1BlockBrewingStand, par2, par3, par4);
742            this.overrideBlockTexture = 156;
743            this.setRenderMinMax(0.5625D, 0.0D, 0.3125D, 0.9375D, 0.125D, 0.6875D);
744            this.renderStandardBlock(par1BlockBrewingStand, par2, par3, par4);
745            this.setRenderMinMax(0.125D, 0.0D, 0.0625D, 0.5D, 0.125D, 0.4375D);
746            this.renderStandardBlock(par1BlockBrewingStand, par2, par3, par4);
747            this.setRenderMinMax(0.125D, 0.0D, 0.5625D, 0.5D, 0.125D, 0.9375D);
748            this.renderStandardBlock(par1BlockBrewingStand, par2, par3, par4);
749            this.clearOverrideBlockTexture();
750            Tessellator var5 = Tessellator.instance;
751            var5.setBrightness(par1BlockBrewingStand.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
752            float var6 = 1.0F;
753            int var7 = par1BlockBrewingStand.colorMultiplier(this.blockAccess, par2, par3, par4);
754            float var8 = (float)(var7 >> 16 & 255) / 255.0F;
755            float var9 = (float)(var7 >> 8 & 255) / 255.0F;
756            float var10 = (float)(var7 & 255) / 255.0F;
757    
758            if (EntityRenderer.anaglyphEnable)
759            {
760                float var11 = (var8 * 30.0F + var9 * 59.0F + var10 * 11.0F) / 100.0F;
761                float var12 = (var8 * 30.0F + var9 * 70.0F) / 100.0F;
762                float var13 = (var8 * 30.0F + var10 * 70.0F) / 100.0F;
763                var8 = var11;
764                var9 = var12;
765                var10 = var13;
766            }
767    
768            var5.setColorOpaque_F(var6 * var8, var6 * var9, var6 * var10);
769            int var34 = par1BlockBrewingStand.getBlockTextureFromSideAndMetadata(0, 0);
770    
771            if (this.overrideBlockTexture >= 0)
772            {
773                var34 = this.overrideBlockTexture;
774            }
775    
776            int var35 = (var34 & 15) << 4;
777            int var36 = var34 & 240;
778            double var14 = (double)((float)var36 / 256.0F);
779            double var16 = (double)(((float)var36 + 15.99F) / 256.0F);
780            int var18 = this.blockAccess.getBlockMetadata(par2, par3, par4);
781    
782            for (int var19 = 0; var19 < 3; ++var19)
783            {
784                double var20 = (double)var19 * Math.PI * 2.0D / 3.0D + (Math.PI / 2D);
785                double var22 = (double)(((float)var35 + 8.0F) / 256.0F);
786                double var24 = (double)(((float)var35 + 15.99F) / 256.0F);
787    
788                if ((var18 & 1 << var19) != 0)
789                {
790                    var22 = (double)(((float)var35 + 7.99F) / 256.0F);
791                    var24 = (double)(((float)var35 + 0.0F) / 256.0F);
792                }
793    
794                double var26 = (double)par2 + 0.5D;
795                double var28 = (double)par2 + 0.5D + Math.sin(var20) * 8.0D / 16.0D;
796                double var30 = (double)par4 + 0.5D;
797                double var32 = (double)par4 + 0.5D + Math.cos(var20) * 8.0D / 16.0D;
798                var5.addVertexWithUV(var26, (double)(par3 + 1), var30, var22, var14);
799                var5.addVertexWithUV(var26, (double)(par3 + 0), var30, var22, var16);
800                var5.addVertexWithUV(var28, (double)(par3 + 0), var32, var24, var16);
801                var5.addVertexWithUV(var28, (double)(par3 + 1), var32, var24, var14);
802                var5.addVertexWithUV(var28, (double)(par3 + 1), var32, var24, var14);
803                var5.addVertexWithUV(var28, (double)(par3 + 0), var32, var24, var16);
804                var5.addVertexWithUV(var26, (double)(par3 + 0), var30, var22, var16);
805                var5.addVertexWithUV(var26, (double)(par3 + 1), var30, var22, var14);
806            }
807    
808            par1BlockBrewingStand.setBlockBoundsForItemRender();
809            return true;
810        }
811    
812        /**
813         * Render block cauldron
814         */
815        public boolean renderBlockCauldron(BlockCauldron par1BlockCauldron, int par2, int par3, int par4)
816        {
817            this.renderStandardBlock(par1BlockCauldron, par2, par3, par4);
818            Tessellator var5 = Tessellator.instance;
819            var5.setBrightness(par1BlockCauldron.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
820            float var6 = 1.0F;
821            int var7 = par1BlockCauldron.colorMultiplier(this.blockAccess, par2, par3, par4);
822            float var8 = (float)(var7 >> 16 & 255) / 255.0F;
823            float var9 = (float)(var7 >> 8 & 255) / 255.0F;
824            float var10 = (float)(var7 & 255) / 255.0F;
825            float var12;
826    
827            if (EntityRenderer.anaglyphEnable)
828            {
829                float var11 = (var8 * 30.0F + var9 * 59.0F + var10 * 11.0F) / 100.0F;
830                var12 = (var8 * 30.0F + var9 * 70.0F) / 100.0F;
831                float var13 = (var8 * 30.0F + var10 * 70.0F) / 100.0F;
832                var8 = var11;
833                var9 = var12;
834                var10 = var13;
835            }
836    
837            var5.setColorOpaque_F(var6 * var8, var6 * var9, var6 * var10);
838            short var16 = 154;
839            var12 = 0.125F;
840            this.renderSouthFace(par1BlockCauldron, (double)((float)par2 - 1.0F + var12), (double)par3, (double)par4, var16);
841            this.renderNorthFace(par1BlockCauldron, (double)((float)par2 + 1.0F - var12), (double)par3, (double)par4, var16);
842            this.renderWestFace(par1BlockCauldron, (double)par2, (double)par3, (double)((float)par4 - 1.0F + var12), var16);
843            this.renderEastFace(par1BlockCauldron, (double)par2, (double)par3, (double)((float)par4 + 1.0F - var12), var16);
844            short var17 = 139;
845            this.renderTopFace(par1BlockCauldron, (double)par2, (double)((float)par3 - 1.0F + 0.25F), (double)par4, var17);
846            this.renderBottomFace(par1BlockCauldron, (double)par2, (double)((float)par3 + 1.0F - 0.75F), (double)par4, var17);
847            int var14 = this.blockAccess.getBlockMetadata(par2, par3, par4);
848    
849            if (var14 > 0)
850            {
851                short var15 = 205;
852    
853                if (var14 > 3)
854                {
855                    var14 = 3;
856                }
857    
858                this.renderTopFace(par1BlockCauldron, (double)par2, (double)((float)par3 - 1.0F + (6.0F + (float)var14 * 3.0F) / 16.0F), (double)par4, var15);
859            }
860    
861            return true;
862        }
863    
864        /**
865         * Renders flower pot
866         */
867        public boolean renderBlockFlowerpot(BlockFlowerPot par1BlockFlowerPot, int par2, int par3, int par4)
868        {
869            this.renderStandardBlock(par1BlockFlowerPot, par2, par3, par4);
870            Tessellator var5 = Tessellator.instance;
871            var5.setBrightness(par1BlockFlowerPot.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
872            float var6 = 1.0F;
873            int var7 = par1BlockFlowerPot.colorMultiplier(this.blockAccess, par2, par3, par4);
874            int var8 = par1BlockFlowerPot.getBlockTextureFromSide(0);
875            float var9 = (float)(var7 >> 16 & 255) / 255.0F;
876            float var10 = (float)(var7 >> 8 & 255) / 255.0F;
877            float var11 = (float)(var7 & 255) / 255.0F;
878            float var12;
879            float var14;
880    
881            if (EntityRenderer.anaglyphEnable)
882            {
883                var12 = (var9 * 30.0F + var10 * 59.0F + var11 * 11.0F) / 100.0F;
884                float var13 = (var9 * 30.0F + var10 * 70.0F) / 100.0F;
885                var14 = (var9 * 30.0F + var11 * 70.0F) / 100.0F;
886                var9 = var12;
887                var10 = var13;
888                var11 = var14;
889            }
890    
891            var5.setColorOpaque_F(var6 * var9, var6 * var10, var6 * var11);
892            var12 = 0.1865F;
893            this.renderSouthFace(par1BlockFlowerPot, (double)((float)par2 - 0.5F + var12), (double)par3, (double)par4, var8);
894            this.renderNorthFace(par1BlockFlowerPot, (double)((float)par2 + 0.5F - var12), (double)par3, (double)par4, var8);
895            this.renderWestFace(par1BlockFlowerPot, (double)par2, (double)par3, (double)((float)par4 - 0.5F + var12), var8);
896            this.renderEastFace(par1BlockFlowerPot, (double)par2, (double)par3, (double)((float)par4 + 0.5F - var12), var8);
897            this.renderTopFace(par1BlockFlowerPot, (double)par2, (double)((float)par3 - 0.5F + var12 + 0.1875F), (double)par4, Block.dirt.blockIndexInTexture);
898            int var19 = this.blockAccess.getBlockMetadata(par2, par3, par4);
899    
900            if (var19 != 0)
901            {
902                var14 = 0.0F;
903                float var15 = 4.0F;
904                float var16 = 0.0F;
905                BlockFlower var17 = null;
906    
907                switch (var19)
908                {
909                    case 1:
910                        var17 = Block.plantRed;
911                        break;
912                    case 2:
913                        var17 = Block.plantYellow;
914                    case 3:
915                    case 4:
916                    case 5:
917                    case 6:
918                    default:
919                        break;
920                    case 7:
921                        var17 = Block.mushroomRed;
922                        break;
923                    case 8:
924                        var17 = Block.mushroomBrown;
925                }
926    
927                var5.addTranslation(var14 / 16.0F, var15 / 16.0F, var16 / 16.0F);
928    
929                if (var17 != null)
930                {
931                    this.renderBlockByRenderType(var17, par2, par3, par4);
932                }
933                else if (var19 == 9)
934                {
935                    this.renderAllFaces = true;
936                    float var18 = 0.125F;
937                    this.setRenderMinMax((double)(0.5F - var18), 0.0D, (double)(0.5F - var18), (double)(0.5F + var18), 0.25D, (double)(0.5F + var18));
938                    this.renderStandardBlock(Block.cactus, par2, par3, par4);
939                    this.setRenderMinMax((double)(0.5F - var18), 0.25D, (double)(0.5F - var18), (double)(0.5F + var18), 0.5D, (double)(0.5F + var18));
940                    this.renderStandardBlock(Block.cactus, par2, par3, par4);
941                    this.setRenderMinMax((double)(0.5F - var18), 0.5D, (double)(0.5F - var18), (double)(0.5F + var18), 0.75D, (double)(0.5F + var18));
942                    this.renderStandardBlock(Block.cactus, par2, par3, par4);
943                    this.renderAllFaces = false;
944                    this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
945                }
946                else if (var19 == 3)
947                {
948                    this.drawCrossedSquares(Block.sapling, 0, (double)par2, (double)par3, (double)par4, 0.75F);
949                }
950                else if (var19 == 5)
951                {
952                    this.drawCrossedSquares(Block.sapling, 2, (double)par2, (double)par3, (double)par4, 0.75F);
953                }
954                else if (var19 == 4)
955                {
956                    this.drawCrossedSquares(Block.sapling, 1, (double)par2, (double)par3, (double)par4, 0.75F);
957                }
958                else if (var19 == 6)
959                {
960                    this.drawCrossedSquares(Block.sapling, 3, (double)par2, (double)par3, (double)par4, 0.75F);
961                }
962                else if (var19 == 11)
963                {
964                    var7 = Block.tallGrass.colorMultiplier(this.blockAccess, par2, par3, par4);
965                    var9 = (float)(var7 >> 16 & 255) / 255.0F;
966                    var10 = (float)(var7 >> 8 & 255) / 255.0F;
967                    var11 = (float)(var7 & 255) / 255.0F;
968                    var5.setColorOpaque_F(var6 * var9, var6 * var10, var6 * var11);
969                    this.drawCrossedSquares(Block.tallGrass, 2, (double)par2, (double)par3, (double)par4, 0.75F);
970                }
971                else if (var19 == 10)
972                {
973                    this.drawCrossedSquares(Block.deadBush, 2, (double)par2, (double)par3, (double)par4, 0.75F);
974                }
975    
976                var5.addTranslation(-var14 / 16.0F, -var15 / 16.0F, -var16 / 16.0F);
977            }
978    
979            return true;
980        }
981    
982        /**
983         * Renders anvil
984         */
985        public boolean renderBlockAnvil(BlockAnvil par1BlockAnvil, int par2, int par3, int par4)
986        {
987            return this.func_85096_a(par1BlockAnvil, par2, par3, par4, this.blockAccess.getBlockMetadata(par2, par3, par4));
988        }
989    
990        public boolean func_85096_a(BlockAnvil par1BlockAnvil, int par2, int par3, int par4, int par5)
991        {
992            Tessellator var6 = Tessellator.instance;
993            var6.setBrightness(par1BlockAnvil.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
994            float var7 = 1.0F;
995            int var8 = par1BlockAnvil.colorMultiplier(this.blockAccess, par2, par3, par4);
996            float var9 = (float)(var8 >> 16 & 255) / 255.0F;
997            float var10 = (float)(var8 >> 8 & 255) / 255.0F;
998            float var11 = (float)(var8 & 255) / 255.0F;
999    
1000            if (EntityRenderer.anaglyphEnable)
1001            {
1002                float var12 = (var9 * 30.0F + var10 * 59.0F + var11 * 11.0F) / 100.0F;
1003                float var13 = (var9 * 30.0F + var10 * 70.0F) / 100.0F;
1004                float var14 = (var9 * 30.0F + var11 * 70.0F) / 100.0F;
1005                var9 = var12;
1006                var10 = var13;
1007                var11 = var14;
1008            }
1009    
1010            var6.setColorOpaque_F(var7 * var9, var7 * var10, var7 * var11);
1011            return this.func_82776_a(par1BlockAnvil, par2, par3, par4, par5, false);
1012        }
1013    
1014        public boolean func_82776_a(BlockAnvil par1BlockAnvil, int par2, int par3, int par4, int par5, boolean par6)
1015        {
1016            int var7 = par6 ? 0 : par5 & 3;
1017            boolean var8 = false;
1018            float var9 = 0.0F;
1019    
1020            switch (var7)
1021            {
1022                case 0:
1023                    this.uvRotateSouth = 2;
1024                    this.uvRotateNorth = 1;
1025                    this.uvRotateTop = 3;
1026                    this.uvRotateBottom = 3;
1027                    break;
1028                case 1:
1029                    this.uvRotateEast = 1;
1030                    this.uvRotateWest = 2;
1031                    this.uvRotateTop = 2;
1032                    this.uvRotateBottom = 1;
1033                    var8 = true;
1034                    break;
1035                case 2:
1036                    this.uvRotateSouth = 1;
1037                    this.uvRotateNorth = 2;
1038                    break;
1039                case 3:
1040                    this.uvRotateEast = 2;
1041                    this.uvRotateWest = 1;
1042                    this.uvRotateTop = 1;
1043                    this.uvRotateBottom = 2;
1044                    var8 = true;
1045            }
1046    
1047            var9 = this.func_82777_a(par1BlockAnvil, par2, par3, par4, 0, var9, 0.75F, 0.25F, 0.75F, var8, par6, par5);
1048            var9 = this.func_82777_a(par1BlockAnvil, par2, par3, par4, 1, var9, 0.5F, 0.0625F, 0.625F, var8, par6, par5);
1049            var9 = this.func_82777_a(par1BlockAnvil, par2, par3, par4, 2, var9, 0.25F, 0.3125F, 0.5F, var8, par6, par5);
1050            this.func_82777_a(par1BlockAnvil, par2, par3, par4, 3, var9, 0.625F, 0.375F, 1.0F, var8, par6, par5);
1051            this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
1052            this.uvRotateEast = 0;
1053            this.uvRotateWest = 0;
1054            this.uvRotateSouth = 0;
1055            this.uvRotateNorth = 0;
1056            this.uvRotateTop = 0;
1057            this.uvRotateBottom = 0;
1058            return true;
1059        }
1060    
1061        public float func_82777_a(BlockAnvil par1BlockAnvil, int par2, int par3, int par4, int par5, float par6, float par7, float par8, float par9, boolean par10, boolean par11, int par12)
1062        {
1063            if (par10)
1064            {
1065                float var13 = par7;
1066                par7 = par9;
1067                par9 = var13;
1068            }
1069    
1070            par7 /= 2.0F;
1071            par9 /= 2.0F;
1072            par1BlockAnvil.field_82521_b = par5;
1073            this.setRenderMinMax((double)(0.5F - par7), (double)par6, (double)(0.5F - par9), (double)(0.5F + par7), (double)(par6 + par8), (double)(0.5F + par9));
1074    
1075            if (par11)
1076            {
1077                Tessellator var14 = Tessellator.instance;
1078                var14.startDrawingQuads();
1079                var14.setNormal(0.0F, -1.0F, 0.0F);
1080                this.renderBottomFace(par1BlockAnvil, 0.0D, 0.0D, 0.0D, par1BlockAnvil.getBlockTextureFromSideAndMetadata(0, par12));
1081                var14.draw();
1082                var14.startDrawingQuads();
1083                var14.setNormal(0.0F, 1.0F, 0.0F);
1084                this.renderTopFace(par1BlockAnvil, 0.0D, 0.0D, 0.0D, par1BlockAnvil.getBlockTextureFromSideAndMetadata(1, par12));
1085                var14.draw();
1086                var14.startDrawingQuads();
1087                var14.setNormal(0.0F, 0.0F, -1.0F);
1088                this.renderEastFace(par1BlockAnvil, 0.0D, 0.0D, 0.0D, par1BlockAnvil.getBlockTextureFromSideAndMetadata(2, par12));
1089                var14.draw();
1090                var14.startDrawingQuads();
1091                var14.setNormal(0.0F, 0.0F, 1.0F);
1092                this.renderWestFace(par1BlockAnvil, 0.0D, 0.0D, 0.0D, par1BlockAnvil.getBlockTextureFromSideAndMetadata(3, par12));
1093                var14.draw();
1094                var14.startDrawingQuads();
1095                var14.setNormal(-1.0F, 0.0F, 0.0F);
1096                this.renderNorthFace(par1BlockAnvil, 0.0D, 0.0D, 0.0D, par1BlockAnvil.getBlockTextureFromSideAndMetadata(4, par12));
1097                var14.draw();
1098                var14.startDrawingQuads();
1099                var14.setNormal(1.0F, 0.0F, 0.0F);
1100                this.renderSouthFace(par1BlockAnvil, 0.0D, 0.0D, 0.0D, par1BlockAnvil.getBlockTextureFromSideAndMetadata(5, par12));
1101                var14.draw();
1102            }
1103            else
1104            {
1105                this.renderStandardBlock(par1BlockAnvil, par2, par3, par4);
1106            }
1107    
1108            return par6 + par8;
1109        }
1110    
1111        /**
1112         * Renders a torch block at the given coordinates
1113         */
1114        public boolean renderBlockTorch(Block par1Block, int par2, int par3, int par4)
1115        {
1116            int var5 = this.blockAccess.getBlockMetadata(par2, par3, par4);
1117            Tessellator var6 = Tessellator.instance;
1118            var6.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
1119            var6.setColorOpaque_F(1.0F, 1.0F, 1.0F);
1120            double var7 = 0.4000000059604645D;
1121            double var9 = 0.5D - var7;
1122            double var11 = 0.20000000298023224D;
1123    
1124            if (var5 == 1)
1125            {
1126                this.renderTorchAtAngle(par1Block, (double)par2 - var9, (double)par3 + var11, (double)par4, -var7, 0.0D);
1127            }
1128            else if (var5 == 2)
1129            {
1130                this.renderTorchAtAngle(par1Block, (double)par2 + var9, (double)par3 + var11, (double)par4, var7, 0.0D);
1131            }
1132            else if (var5 == 3)
1133            {
1134                this.renderTorchAtAngle(par1Block, (double)par2, (double)par3 + var11, (double)par4 - var9, 0.0D, -var7);
1135            }
1136            else if (var5 == 4)
1137            {
1138                this.renderTorchAtAngle(par1Block, (double)par2, (double)par3 + var11, (double)par4 + var9, 0.0D, var7);
1139            }
1140            else
1141            {
1142                this.renderTorchAtAngle(par1Block, (double)par2, (double)par3, (double)par4, 0.0D, 0.0D);
1143            }
1144    
1145            return true;
1146        }
1147    
1148        /**
1149         * render a redstone repeater at the given coordinates
1150         */
1151        public boolean renderBlockRepeater(Block par1Block, int par2, int par3, int par4)
1152        {
1153            int var5 = this.blockAccess.getBlockMetadata(par2, par3, par4);
1154            int var6 = var5 & 3;
1155            int var7 = (var5 & 12) >> 2;
1156            this.renderStandardBlock(par1Block, par2, par3, par4);
1157            Tessellator var8 = Tessellator.instance;
1158            var8.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
1159            var8.setColorOpaque_F(1.0F, 1.0F, 1.0F);
1160            double var9 = -0.1875D;
1161            boolean var11 = ((BlockRedstoneRepeater)par1Block).func_82523_e(this.blockAccess, par2, par3, par4, var5);
1162            double var12 = 0.0D;
1163            double var14 = 0.0D;
1164            double var16 = 0.0D;
1165            double var18 = 0.0D;
1166    
1167            switch (var6)
1168            {
1169                case 0:
1170                    var18 = -0.3125D;
1171                    var14 = BlockRedstoneRepeater.repeaterTorchOffset[var7];
1172                    break;
1173                case 1:
1174                    var16 = 0.3125D;
1175                    var12 = -BlockRedstoneRepeater.repeaterTorchOffset[var7];
1176                    break;
1177                case 2:
1178                    var18 = 0.3125D;
1179                    var14 = -BlockRedstoneRepeater.repeaterTorchOffset[var7];
1180                    break;
1181                case 3:
1182                    var16 = -0.3125D;
1183                    var12 = BlockRedstoneRepeater.repeaterTorchOffset[var7];
1184            }
1185    
1186            if (!var11)
1187            {
1188                this.renderTorchAtAngle(par1Block, (double)par2 + var12, (double)par3 + var9, (double)par4 + var14, 0.0D, 0.0D);
1189            }
1190            else
1191            {
1192                this.func_82774_a(17);
1193                byte var20 = 16;
1194                byte var21 = 16;
1195                float var22 = 2.0F;
1196                float var23 = 14.0F;
1197                float var24 = 7.0F;
1198                float var25 = 9.0F;
1199    
1200                switch (var6)
1201                {
1202                    case 1:
1203                    case 3:
1204                        var22 = 7.0F;
1205                        var23 = 9.0F;
1206                        var24 = 2.0F;
1207                        var25 = 14.0F;
1208                    case 0:
1209                    case 2:
1210                    default:
1211                        this.setRenderMinMax((double)(var22 / 16.0F + (float)var12), 0.125D, (double)(var24 / 16.0F + (float)var14), (double)(var23 / 16.0F + (float)var12), 0.25D, (double)(var25 / 16.0F + (float)var14));
1212                        var8.addVertexWithUV((double)((float)par2 + var22 / 16.0F) + var12, (double)((float)par3 + 0.25F), (double)((float)par4 + var24 / 16.0F) + var14, (double)(((float)var20 + var22) / 256.0F), (double)(((float)var21 + var24) / 256.0F));
1213                        var8.addVertexWithUV((double)((float)par2 + var22 / 16.0F) + var12, (double)((float)par3 + 0.25F), (double)((float)par4 + var25 / 16.0F) + var14, (double)(((float)var20 + var22) / 256.0F), (double)(((float)var21 + var25) / 256.0F));
1214                        var8.addVertexWithUV((double)((float)par2 + var23 / 16.0F) + var12, (double)((float)par3 + 0.25F), (double)((float)par4 + var25 / 16.0F) + var14, (double)(((float)var20 + var23) / 256.0F), (double)(((float)var21 + var25) / 256.0F));
1215                        var8.addVertexWithUV((double)((float)par2 + var23 / 16.0F) + var12, (double)((float)par3 + 0.25F), (double)((float)par4 + var24 / 16.0F) + var14, (double)(((float)var20 + var23) / 256.0F), (double)(((float)var21 + var24) / 256.0F));
1216                        this.renderStandardBlock(par1Block, par2, par3, par4);
1217                        this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 0.125D, 1.0D);
1218                        this.clearOverrideBlockTexture();
1219                }
1220            }
1221    
1222            var8.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
1223            var8.setColorOpaque_F(1.0F, 1.0F, 1.0F);
1224            this.renderTorchAtAngle(par1Block, (double)par2 + var16, (double)par3 + var9, (double)par4 + var18, 0.0D, 0.0D);
1225            int var51 = par1Block.getBlockTextureFromSide(1);
1226            int var53 = (var51 & 15) << 4;
1227            int var52 = var51 & 240;
1228            double var55 = (double)((float)var53 / 256.0F);
1229            double var54 = (double)(((float)var53 + 15.99F) / 256.0F);
1230            double var27 = (double)((float)var52 / 256.0F);
1231            double var29 = (double)(((float)var52 + 15.99F) / 256.0F);
1232            double var31 = 0.125D;
1233            double var33 = (double)(par2 + 1);
1234            double var35 = (double)(par2 + 1);
1235            double var37 = (double)(par2 + 0);
1236            double var39 = (double)(par2 + 0);
1237            double var41 = (double)(par4 + 0);
1238            double var43 = (double)(par4 + 1);
1239            double var45 = (double)(par4 + 1);
1240            double var47 = (double)(par4 + 0);
1241            double var49 = (double)par3 + var31;
1242    
1243            if (var6 == 2)
1244            {
1245                var33 = var35 = (double)(par2 + 0);
1246                var37 = var39 = (double)(par2 + 1);
1247                var41 = var47 = (double)(par4 + 1);
1248                var43 = var45 = (double)(par4 + 0);
1249            }
1250            else if (var6 == 3)
1251            {
1252                var33 = var39 = (double)(par2 + 0);
1253                var35 = var37 = (double)(par2 + 1);
1254                var41 = var43 = (double)(par4 + 0);
1255                var45 = var47 = (double)(par4 + 1);
1256            }
1257            else if (var6 == 1)
1258            {
1259                var33 = var39 = (double)(par2 + 1);
1260                var35 = var37 = (double)(par2 + 0);
1261                var41 = var43 = (double)(par4 + 1);
1262                var45 = var47 = (double)(par4 + 0);
1263            }
1264    
1265            var8.addVertexWithUV(var39, var49, var47, var55, var27);
1266            var8.addVertexWithUV(var37, var49, var45, var55, var29);
1267            var8.addVertexWithUV(var35, var49, var43, var54, var29);
1268            var8.addVertexWithUV(var33, var49, var41, var54, var27);
1269            return true;
1270        }
1271    
1272        /**
1273         * Render all faces of the piston base
1274         */
1275        public void renderPistonBaseAllFaces(Block par1Block, int par2, int par3, int par4)
1276        {
1277            this.renderAllFaces = true;
1278            this.renderPistonBase(par1Block, par2, par3, par4, true);
1279            this.renderAllFaces = false;
1280        }
1281    
1282        /**
1283         * renders a block as a piston base
1284         */
1285        public boolean renderPistonBase(Block par1Block, int par2, int par3, int par4, boolean par5)
1286        {
1287            int var6 = this.blockAccess.getBlockMetadata(par2, par3, par4);
1288            boolean var7 = par5 || (var6 & 8) != 0;
1289            int var8 = BlockPistonBase.getOrientation(var6);
1290    
1291            if (var7)
1292            {
1293                switch (var8)
1294                {
1295                    case 0:
1296                        this.uvRotateEast = 3;
1297                        this.uvRotateWest = 3;
1298                        this.uvRotateSouth = 3;
1299                        this.uvRotateNorth = 3;
1300                        this.setRenderMinMax(0.0D, 0.25D, 0.0D, 1.0D, 1.0D, 1.0D);
1301                        break;
1302                    case 1:
1303                        this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 0.75D, 1.0D);
1304                        break;
1305                    case 2:
1306                        this.uvRotateSouth = 1;
1307                        this.uvRotateNorth = 2;
1308                        this.setRenderMinMax(0.0D, 0.0D, 0.25D, 1.0D, 1.0D, 1.0D);
1309                        break;
1310                    case 3:
1311                        this.uvRotateSouth = 2;
1312                        this.uvRotateNorth = 1;
1313                        this.uvRotateTop = 3;
1314                        this.uvRotateBottom = 3;
1315                        this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 0.75D);
1316                        break;
1317                    case 4:
1318                        this.uvRotateEast = 1;
1319                        this.uvRotateWest = 2;
1320                        this.uvRotateTop = 2;
1321                        this.uvRotateBottom = 1;
1322                        this.setRenderMinMax(0.25D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
1323                        break;
1324                    case 5:
1325                        this.uvRotateEast = 2;
1326                        this.uvRotateWest = 1;
1327                        this.uvRotateTop = 1;
1328                        this.uvRotateBottom = 2;
1329                        this.setRenderMinMax(0.0D, 0.0D, 0.0D, 0.75D, 1.0D, 1.0D);
1330                }
1331    
1332                this.renderStandardBlock(par1Block, par2, par3, par4);
1333                this.uvRotateEast = 0;
1334                this.uvRotateWest = 0;
1335                this.uvRotateSouth = 0;
1336                this.uvRotateNorth = 0;
1337                this.uvRotateTop = 0;
1338                this.uvRotateBottom = 0;
1339                this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
1340            }
1341            else
1342            {
1343                switch (var8)
1344                {
1345                    case 0:
1346                        this.uvRotateEast = 3;
1347                        this.uvRotateWest = 3;
1348                        this.uvRotateSouth = 3;
1349                        this.uvRotateNorth = 3;
1350                    case 1:
1351                    default:
1352                        break;
1353                    case 2:
1354                        this.uvRotateSouth = 1;
1355                        this.uvRotateNorth = 2;
1356                        break;
1357                    case 3:
1358                        this.uvRotateSouth = 2;
1359                        this.uvRotateNorth = 1;
1360                        this.uvRotateTop = 3;
1361                        this.uvRotateBottom = 3;
1362                        break;
1363                    case 4:
1364                        this.uvRotateEast = 1;
1365                        this.uvRotateWest = 2;
1366                        this.uvRotateTop = 2;
1367                        this.uvRotateBottom = 1;
1368                        break;
1369                    case 5:
1370                        this.uvRotateEast = 2;
1371                        this.uvRotateWest = 1;
1372                        this.uvRotateTop = 1;
1373                        this.uvRotateBottom = 2;
1374                }
1375    
1376                this.renderStandardBlock(par1Block, par2, par3, par4);
1377                this.uvRotateEast = 0;
1378                this.uvRotateWest = 0;
1379                this.uvRotateSouth = 0;
1380                this.uvRotateNorth = 0;
1381                this.uvRotateTop = 0;
1382                this.uvRotateBottom = 0;
1383            }
1384    
1385            return true;
1386        }
1387    
1388        /**
1389         * Render piston rod up/down
1390         */
1391        public void renderPistonRodUD(double par1, double par3, double par5, double par7, double par9, double par11, float par13, double par14)
1392        {
1393            int var16 = 108;
1394    
1395            if (this.overrideBlockTexture >= 0)
1396            {
1397                var16 = this.overrideBlockTexture;
1398            }
1399    
1400            int var17 = (var16 & 15) << 4;
1401            int var18 = var16 & 240;
1402            Tessellator var19 = Tessellator.instance;
1403            double var20 = (double)((float)(var17 + 0) / 256.0F);
1404            double var22 = (double)((float)(var18 + 0) / 256.0F);
1405            double var24 = ((double)var17 + par14 - 0.01D) / 256.0D;
1406            double var26 = ((double)((float)var18 + 4.0F) - 0.01D) / 256.0D;
1407            var19.setColorOpaque_F(par13, par13, par13);
1408            var19.addVertexWithUV(par1, par7, par9, var24, var22);
1409            var19.addVertexWithUV(par1, par5, par9, var20, var22);
1410            var19.addVertexWithUV(par3, par5, par11, var20, var26);
1411            var19.addVertexWithUV(par3, par7, par11, var24, var26);
1412        }
1413    
1414        /**
1415         * Render piston rod south/north
1416         */
1417        public void renderPistonRodSN(double par1, double par3, double par5, double par7, double par9, double par11, float par13, double par14)
1418        {
1419            int var16 = 108;
1420    
1421            if (this.overrideBlockTexture >= 0)
1422            {
1423                var16 = this.overrideBlockTexture;
1424            }
1425    
1426            int var17 = (var16 & 15) << 4;
1427            int var18 = var16 & 240;
1428            Tessellator var19 = Tessellator.instance;
1429            double var20 = (double)((float)(var17 + 0) / 256.0F);
1430            double var22 = (double)((float)(var18 + 0) / 256.0F);
1431            double var24 = ((double)var17 + par14 - 0.01D) / 256.0D;
1432            double var26 = ((double)((float)var18 + 4.0F) - 0.01D) / 256.0D;
1433            var19.setColorOpaque_F(par13, par13, par13);
1434            var19.addVertexWithUV(par1, par5, par11, var24, var22);
1435            var19.addVertexWithUV(par1, par5, par9, var20, var22);
1436            var19.addVertexWithUV(par3, par7, par9, var20, var26);
1437            var19.addVertexWithUV(par3, par7, par11, var24, var26);
1438        }
1439    
1440        /**
1441         * Render piston rod east/west
1442         */
1443        public void renderPistonRodEW(double par1, double par3, double par5, double par7, double par9, double par11, float par13, double par14)
1444        {
1445            int var16 = 108;
1446    
1447            if (this.overrideBlockTexture >= 0)
1448            {
1449                var16 = this.overrideBlockTexture;
1450            }
1451    
1452            int var17 = (var16 & 15) << 4;
1453            int var18 = var16 & 240;
1454            Tessellator var19 = Tessellator.instance;
1455            double var20 = (double)((float)(var17 + 0) / 256.0F);
1456            double var22 = (double)((float)(var18 + 0) / 256.0F);
1457            double var24 = ((double)var17 + par14 - 0.01D) / 256.0D;
1458            double var26 = ((double)((float)var18 + 4.0F) - 0.01D) / 256.0D;
1459            var19.setColorOpaque_F(par13, par13, par13);
1460            var19.addVertexWithUV(par3, par5, par9, var24, var22);
1461            var19.addVertexWithUV(par1, par5, par9, var20, var22);
1462            var19.addVertexWithUV(par1, par7, par11, var20, var26);
1463            var19.addVertexWithUV(par3, par7, par11, var24, var26);
1464        }
1465    
1466        /**
1467         * Render all faces of the piston extension
1468         */
1469        public void renderPistonExtensionAllFaces(Block par1Block, int par2, int par3, int par4, boolean par5)
1470        {
1471            this.renderAllFaces = true;
1472            this.renderPistonExtension(par1Block, par2, par3, par4, par5);
1473            this.renderAllFaces = false;
1474        }
1475    
1476        /**
1477         * renders the pushing part of a piston
1478         */
1479        public boolean renderPistonExtension(Block par1Block, int par2, int par3, int par4, boolean par5)
1480        {
1481            int var6 = this.blockAccess.getBlockMetadata(par2, par3, par4);
1482            int var7 = BlockPistonExtension.getDirectionMeta(var6);
1483            float var11 = par1Block.getBlockBrightness(this.blockAccess, par2, par3, par4);
1484            float var12 = par5 ? 1.0F : 0.5F;
1485            double var13 = par5 ? 16.0D : 8.0D;
1486    
1487            switch (var7)
1488            {
1489                case 0:
1490                    this.uvRotateEast = 3;
1491                    this.uvRotateWest = 3;
1492                    this.uvRotateSouth = 3;
1493                    this.uvRotateNorth = 3;
1494                    this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 0.25D, 1.0D);
1495                    this.renderStandardBlock(par1Block, par2, par3, par4);
1496                    this.renderPistonRodUD((double)((float)par2 + 0.375F), (double)((float)par2 + 0.625F), (double)((float)par3 + 0.25F), (double)((float)par3 + 0.25F + var12), (double)((float)par4 + 0.625F), (double)((float)par4 + 0.625F), var11 * 0.8F, var13);
1497                    this.renderPistonRodUD((double)((float)par2 + 0.625F), (double)((float)par2 + 0.375F), (double)((float)par3 + 0.25F), (double)((float)par3 + 0.25F + var12), (double)((float)par4 + 0.375F), (double)((float)par4 + 0.375F), var11 * 0.8F, var13);
1498                    this.renderPistonRodUD((double)((float)par2 + 0.375F), (double)((float)par2 + 0.375F), (double)((float)par3 + 0.25F), (double)((float)par3 + 0.25F + var12), (double)((float)par4 + 0.375F), (double)((float)par4 + 0.625F), var11 * 0.6F, var13);
1499                    this.renderPistonRodUD((double)((float)par2 + 0.625F), (double)((float)par2 + 0.625F), (double)((float)par3 + 0.25F), (double)((float)par3 + 0.25F + var12), (double)((float)par4 + 0.625F), (double)((float)par4 + 0.375F), var11 * 0.6F, var13);
1500                    break;
1501                case 1:
1502                    this.setRenderMinMax(0.0D, 0.75D, 0.0D, 1.0D, 1.0D, 1.0D);
1503                    this.renderStandardBlock(par1Block, par2, par3, par4);
1504                    this.renderPistonRodUD((double)((float)par2 + 0.375F), (double)((float)par2 + 0.625F), (double)((float)par3 - 0.25F + 1.0F - var12), (double)((float)par3 - 0.25F + 1.0F), (double)((float)par4 + 0.625F), (double)((float)par4 + 0.625F), var11 * 0.8F, var13);
1505                    this.renderPistonRodUD((double)((float)par2 + 0.625F), (double)((float)par2 + 0.375F), (double)((float)par3 - 0.25F + 1.0F - var12), (double)((float)par3 - 0.25F + 1.0F), (double)((float)par4 + 0.375F), (double)((float)par4 + 0.375F), var11 * 0.8F, var13);
1506                    this.renderPistonRodUD((double)((float)par2 + 0.375F), (double)((float)par2 + 0.375F), (double)((float)par3 - 0.25F + 1.0F - var12), (double)((float)par3 - 0.25F + 1.0F), (double)((float)par4 + 0.375F), (double)((float)par4 + 0.625F), var11 * 0.6F, var13);
1507                    this.renderPistonRodUD((double)((float)par2 + 0.625F), (double)((float)par2 + 0.625F), (double)((float)par3 - 0.25F + 1.0F - var12), (double)((float)par3 - 0.25F + 1.0F), (double)((float)par4 + 0.625F), (double)((float)par4 + 0.375F), var11 * 0.6F, var13);
1508                    break;
1509                case 2:
1510                    this.uvRotateSouth = 1;
1511                    this.uvRotateNorth = 2;
1512                    this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 0.25D);
1513                    this.renderStandardBlock(par1Block, par2, par3, par4);
1514                    this.renderPistonRodSN((double)((float)par2 + 0.375F), (double)((float)par2 + 0.375F), (double)((float)par3 + 0.625F), (double)((float)par3 + 0.375F), (double)((float)par4 + 0.25F), (double)((float)par4 + 0.25F + var12), var11 * 0.6F, var13);
1515                    this.renderPistonRodSN((double)((float)par2 + 0.625F), (double)((float)par2 + 0.625F), (double)((float)par3 + 0.375F), (double)((float)par3 + 0.625F), (double)((float)par4 + 0.25F), (double)((float)par4 + 0.25F + var12), var11 * 0.6F, var13);
1516                    this.renderPistonRodSN((double)((float)par2 + 0.375F), (double)((float)par2 + 0.625F), (double)((float)par3 + 0.375F), (double)((float)par3 + 0.375F), (double)((float)par4 + 0.25F), (double)((float)par4 + 0.25F + var12), var11 * 0.5F, var13);
1517                    this.renderPistonRodSN((double)((float)par2 + 0.625F), (double)((float)par2 + 0.375F), (double)((float)par3 + 0.625F), (double)((float)par3 + 0.625F), (double)((float)par4 + 0.25F), (double)((float)par4 + 0.25F + var12), var11, var13);
1518                    break;
1519                case 3:
1520                    this.uvRotateSouth = 2;
1521                    this.uvRotateNorth = 1;
1522                    this.uvRotateTop = 3;
1523                    this.uvRotateBottom = 3;
1524                    this.setRenderMinMax(0.0D, 0.0D, 0.75D, 1.0D, 1.0D, 1.0D);
1525                    this.renderStandardBlock(par1Block, par2, par3, par4);
1526                    this.renderPistonRodSN((double)((float)par2 + 0.375F), (double)((float)par2 + 0.375F), (double)((float)par3 + 0.625F), (double)((float)par3 + 0.375F), (double)((float)par4 - 0.25F + 1.0F - var12), (double)((float)par4 - 0.25F + 1.0F), var11 * 0.6F, var13);
1527                    this.renderPistonRodSN((double)((float)par2 + 0.625F), (double)((float)par2 + 0.625F), (double)((float)par3 + 0.375F), (double)((float)par3 + 0.625F), (double)((float)par4 - 0.25F + 1.0F - var12), (double)((float)par4 - 0.25F + 1.0F), var11 * 0.6F, var13);
1528                    this.renderPistonRodSN((double)((float)par2 + 0.375F), (double)((float)par2 + 0.625F), (double)((float)par3 + 0.375F), (double)((float)par3 + 0.375F), (double)((float)par4 - 0.25F + 1.0F - var12), (double)((float)par4 - 0.25F + 1.0F), var11 * 0.5F, var13);
1529                    this.renderPistonRodSN((double)((float)par2 + 0.625F), (double)((float)par2 + 0.375F), (double)((float)par3 + 0.625F), (double)((float)par3 + 0.625F), (double)((float)par4 - 0.25F + 1.0F - var12), (double)((float)par4 - 0.25F + 1.0F), var11, var13);
1530                    break;
1531                case 4:
1532                    this.uvRotateEast = 1;
1533                    this.uvRotateWest = 2;
1534                    this.uvRotateTop = 2;
1535                    this.uvRotateBottom = 1;
1536                    this.setRenderMinMax(0.0D, 0.0D, 0.0D, 0.25D, 1.0D, 1.0D);
1537                    this.renderStandardBlock(par1Block, par2, par3, par4);
1538                    this.renderPistonRodEW((double)((float)par2 + 0.25F), (double)((float)par2 + 0.25F + var12), (double)((float)par3 + 0.375F), (double)((float)par3 + 0.375F), (double)((float)par4 + 0.625F), (double)((float)par4 + 0.375F), var11 * 0.5F, var13);
1539                    this.renderPistonRodEW((double)((float)par2 + 0.25F), (double)((float)par2 + 0.25F + var12), (double)((float)par3 + 0.625F), (double)((float)par3 + 0.625F), (double)((float)par4 + 0.375F), (double)((float)par4 + 0.625F), var11, var13);
1540                    this.renderPistonRodEW((double)((float)par2 + 0.25F), (double)((float)par2 + 0.25F + var12), (double)((float)par3 + 0.375F), (double)((float)par3 + 0.625F), (double)((float)par4 + 0.375F), (double)((float)par4 + 0.375F), var11 * 0.6F, var13);
1541                    this.renderPistonRodEW((double)((float)par2 + 0.25F), (double)((float)par2 + 0.25F + var12), (double)((float)par3 + 0.625F), (double)((float)par3 + 0.375F), (double)((float)par4 + 0.625F), (double)((float)par4 + 0.625F), var11 * 0.6F, var13);
1542                    break;
1543                case 5:
1544                    this.uvRotateEast = 2;
1545                    this.uvRotateWest = 1;
1546                    this.uvRotateTop = 1;
1547                    this.uvRotateBottom = 2;
1548                    this.setRenderMinMax(0.75D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
1549                    this.renderStandardBlock(par1Block, par2, par3, par4);
1550                    this.renderPistonRodEW((double)((float)par2 - 0.25F + 1.0F - var12), (double)((float)par2 - 0.25F + 1.0F), (double)((float)par3 + 0.375F), (double)((float)par3 + 0.375F), (double)((float)par4 + 0.625F), (double)((float)par4 + 0.375F), var11 * 0.5F, var13);
1551                    this.renderPistonRodEW((double)((float)par2 - 0.25F + 1.0F - var12), (double)((float)par2 - 0.25F + 1.0F), (double)((float)par3 + 0.625F), (double)((float)par3 + 0.625F), (double)((float)par4 + 0.375F), (double)((float)par4 + 0.625F), var11, var13);
1552                    this.renderPistonRodEW((double)((float)par2 - 0.25F + 1.0F - var12), (double)((float)par2 - 0.25F + 1.0F), (double)((float)par3 + 0.375F), (double)((float)par3 + 0.625F), (double)((float)par4 + 0.375F), (double)((float)par4 + 0.375F), var11 * 0.6F, var13);
1553                    this.renderPistonRodEW((double)((float)par2 - 0.25F + 1.0F - var12), (double)((float)par2 - 0.25F + 1.0F), (double)((float)par3 + 0.625F), (double)((float)par3 + 0.375F), (double)((float)par4 + 0.625F), (double)((float)par4 + 0.625F), var11 * 0.6F, var13);
1554            }
1555    
1556            this.uvRotateEast = 0;
1557            this.uvRotateWest = 0;
1558            this.uvRotateSouth = 0;
1559            this.uvRotateNorth = 0;
1560            this.uvRotateTop = 0;
1561            this.uvRotateBottom = 0;
1562            this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
1563            return true;
1564        }
1565    
1566        /**
1567         * Renders a lever block at the given coordinates
1568         */
1569        public boolean renderBlockLever(Block par1Block, int par2, int par3, int par4)
1570        {
1571            int var5 = this.blockAccess.getBlockMetadata(par2, par3, par4);
1572            int var6 = var5 & 7;
1573            boolean var7 = (var5 & 8) > 0;
1574            Tessellator var8 = Tessellator.instance;
1575            boolean var9 = this.overrideBlockTexture >= 0;
1576    
1577            if (!var9)
1578            {
1579                this.overrideBlockTexture = Block.cobblestone.blockIndexInTexture;
1580            }
1581    
1582            float var10 = 0.25F;
1583            float var11 = 0.1875F;
1584            float var12 = 0.1875F;
1585    
1586            if (var6 == 5)
1587            {
1588                this.setRenderMinMax((double)(0.5F - var11), 0.0D, (double)(0.5F - var10), (double)(0.5F + var11), (double)var12, (double)(0.5F + var10));
1589            }
1590            else if (var6 == 6)
1591            {
1592                this.setRenderMinMax((double)(0.5F - var10), 0.0D, (double)(0.5F - var11), (double)(0.5F + var10), (double)var12, (double)(0.5F + var11));
1593            }
1594            else if (var6 == 4)
1595            {
1596                this.setRenderMinMax((double)(0.5F - var11), (double)(0.5F - var10), (double)(1.0F - var12), (double)(0.5F + var11), (double)(0.5F + var10), 1.0D);
1597            }
1598            else if (var6 == 3)
1599            {
1600                this.setRenderMinMax((double)(0.5F - var11), (double)(0.5F - var10), 0.0D, (double)(0.5F + var11), (double)(0.5F + var10), (double)var12);
1601            }
1602            else if (var6 == 2)
1603            {
1604                this.setRenderMinMax((double)(1.0F - var12), (double)(0.5F - var10), (double)(0.5F - var11), 1.0D, (double)(0.5F + var10), (double)(0.5F + var11));
1605            }
1606            else if (var6 == 1)
1607            {
1608                this.setRenderMinMax(0.0D, (double)(0.5F - var10), (double)(0.5F - var11), (double)var12, (double)(0.5F + var10), (double)(0.5F + var11));
1609            }
1610            else if (var6 == 0)
1611            {
1612                this.setRenderMinMax((double)(0.5F - var10), (double)(1.0F - var12), (double)(0.5F - var11), (double)(0.5F + var10), 1.0D, (double)(0.5F + var11));
1613            }
1614            else if (var6 == 7)
1615            {
1616                this.setRenderMinMax((double)(0.5F - var11), (double)(1.0F - var12), (double)(0.5F - var10), (double)(0.5F + var11), 1.0D, (double)(0.5F + var10));
1617            }
1618    
1619            this.renderStandardBlock(par1Block, par2, par3, par4);
1620    
1621            if (!var9)
1622            {
1623                this.overrideBlockTexture = -1;
1624            }
1625    
1626            var8.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
1627            float var13 = 1.0F;
1628    
1629            if (Block.lightValue[par1Block.blockID] > 0)
1630            {
1631                var13 = 1.0F;
1632            }
1633    
1634            var8.setColorOpaque_F(var13, var13, var13);
1635            int var14 = par1Block.getBlockTextureFromSide(0);
1636    
1637            if (this.overrideBlockTexture >= 0)
1638            {
1639                var14 = this.overrideBlockTexture;
1640            }
1641    
1642            int var15 = (var14 & 15) << 4;
1643            int var16 = var14 & 240;
1644            float var17 = (float)var15 / 256.0F;
1645            float var18 = ((float)var15 + 15.99F) / 256.0F;
1646            float var19 = (float)var16 / 256.0F;
1647            float var20 = ((float)var16 + 15.99F) / 256.0F;
1648            Vec3[] var21 = new Vec3[8];
1649            float var22 = 0.0625F;
1650            float var23 = 0.0625F;
1651            float var24 = 0.625F;
1652            var21[0] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var22), 0.0D, (double)(-var23));
1653            var21[1] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var22, 0.0D, (double)(-var23));
1654            var21[2] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var22, 0.0D, (double)var23);
1655            var21[3] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var22), 0.0D, (double)var23);
1656            var21[4] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var22), (double)var24, (double)(-var23));
1657            var21[5] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var22, (double)var24, (double)(-var23));
1658            var21[6] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var22, (double)var24, (double)var23);
1659            var21[7] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var22), (double)var24, (double)var23);
1660    
1661            for (int var25 = 0; var25 < 8; ++var25)
1662            {
1663                if (var7)
1664                {
1665                    var21[var25].zCoord -= 0.0625D;
1666                    var21[var25].rotateAroundX(((float)Math.PI * 2F / 9F));
1667                }
1668                else
1669                {
1670                    var21[var25].zCoord += 0.0625D;
1671                    var21[var25].rotateAroundX(-((float)Math.PI * 2F / 9F));
1672                }
1673    
1674                if (var6 == 0 || var6 == 7)
1675                {
1676                    var21[var25].rotateAroundZ((float)Math.PI);
1677                }
1678    
1679                if (var6 == 6 || var6 == 0)
1680                {
1681                    var21[var25].rotateAroundY(((float)Math.PI / 2F));
1682                }
1683    
1684                if (var6 > 0 && var6 < 5)
1685                {
1686                    var21[var25].yCoord -= 0.375D;
1687                    var21[var25].rotateAroundX(((float)Math.PI / 2F));
1688    
1689                    if (var6 == 4)
1690                    {
1691                        var21[var25].rotateAroundY(0.0F);
1692                    }
1693    
1694                    if (var6 == 3)
1695                    {
1696                        var21[var25].rotateAroundY((float)Math.PI);
1697                    }
1698    
1699                    if (var6 == 2)
1700                    {
1701                        var21[var25].rotateAroundY(((float)Math.PI / 2F));
1702                    }
1703    
1704                    if (var6 == 1)
1705                    {
1706                        var21[var25].rotateAroundY(-((float)Math.PI / 2F));
1707                    }
1708    
1709                    var21[var25].xCoord += (double)par2 + 0.5D;
1710                    var21[var25].yCoord += (double)((float)par3 + 0.5F);
1711                    var21[var25].zCoord += (double)par4 + 0.5D;
1712                }
1713                else if (var6 != 0 && var6 != 7)
1714                {
1715                    var21[var25].xCoord += (double)par2 + 0.5D;
1716                    var21[var25].yCoord += (double)((float)par3 + 0.125F);
1717                    var21[var25].zCoord += (double)par4 + 0.5D;
1718                }
1719                else
1720                {
1721                    var21[var25].xCoord += (double)par2 + 0.5D;
1722                    var21[var25].yCoord += (double)((float)par3 + 0.875F);
1723                    var21[var25].zCoord += (double)par4 + 0.5D;
1724                }
1725            }
1726    
1727            Vec3 var30 = null;
1728            Vec3 var26 = null;
1729            Vec3 var27 = null;
1730            Vec3 var28 = null;
1731    
1732            for (int var29 = 0; var29 < 6; ++var29)
1733            {
1734                if (var29 == 0)
1735                {
1736                    var17 = (float)(var15 + 7) / 256.0F;
1737                    var18 = ((float)(var15 + 9) - 0.01F) / 256.0F;
1738                    var19 = (float)(var16 + 6) / 256.0F;
1739                    var20 = ((float)(var16 + 8) - 0.01F) / 256.0F;
1740                }
1741                else if (var29 == 2)
1742                {
1743                    var17 = (float)(var15 + 7) / 256.0F;
1744                    var18 = ((float)(var15 + 9) - 0.01F) / 256.0F;
1745                    var19 = (float)(var16 + 6) / 256.0F;
1746                    var20 = ((float)(var16 + 16) - 0.01F) / 256.0F;
1747                }
1748    
1749                if (var29 == 0)
1750                {
1751                    var30 = var21[0];
1752                    var26 = var21[1];
1753                    var27 = var21[2];
1754                    var28 = var21[3];
1755                }
1756                else if (var29 == 1)
1757                {
1758                    var30 = var21[7];
1759                    var26 = var21[6];
1760                    var27 = var21[5];
1761                    var28 = var21[4];
1762                }
1763                else if (var29 == 2)
1764                {
1765                    var30 = var21[1];
1766                    var26 = var21[0];
1767                    var27 = var21[4];
1768                    var28 = var21[5];
1769                }
1770                else if (var29 == 3)
1771                {
1772                    var30 = var21[2];
1773                    var26 = var21[1];
1774                    var27 = var21[5];
1775                    var28 = var21[6];
1776                }
1777                else if (var29 == 4)
1778                {
1779                    var30 = var21[3];
1780                    var26 = var21[2];
1781                    var27 = var21[6];
1782                    var28 = var21[7];
1783                }
1784                else if (var29 == 5)
1785                {
1786                    var30 = var21[0];
1787                    var26 = var21[3];
1788                    var27 = var21[7];
1789                    var28 = var21[4];
1790                }
1791    
1792                var8.addVertexWithUV(var30.xCoord, var30.yCoord, var30.zCoord, (double)var17, (double)var20);
1793                var8.addVertexWithUV(var26.xCoord, var26.yCoord, var26.zCoord, (double)var18, (double)var20);
1794                var8.addVertexWithUV(var27.xCoord, var27.yCoord, var27.zCoord, (double)var18, (double)var19);
1795                var8.addVertexWithUV(var28.xCoord, var28.yCoord, var28.zCoord, (double)var17, (double)var19);
1796            }
1797    
1798            return true;
1799        }
1800    
1801        /**
1802         * Renders a trip wire source block at the given coordinates
1803         */
1804        public boolean renderBlockTripWireSource(Block par1Block, int par2, int par3, int par4)
1805        {
1806            Tessellator var5 = Tessellator.instance;
1807            int var6 = this.blockAccess.getBlockMetadata(par2, par3, par4);
1808            int var7 = var6 & 3;
1809            boolean var8 = (var6 & 4) == 4;
1810            boolean var9 = (var6 & 8) == 8;
1811            boolean var10 = !this.blockAccess.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4);
1812            boolean var11 = this.overrideBlockTexture >= 0;
1813    
1814            if (!var11)
1815            {
1816                this.overrideBlockTexture = Block.planks.blockIndexInTexture;
1817            }
1818    
1819            float var12 = 0.25F;
1820            float var13 = 0.125F;
1821            float var14 = 0.125F;
1822            float var15 = 0.3F - var12;
1823            float var16 = 0.3F + var12;
1824    
1825            if (var7 == 2)
1826            {
1827                this.setRenderMinMax((double)(0.5F - var13), (double)var15, (double)(1.0F - var14), (double)(0.5F + var13), (double)var16, 1.0D);
1828            }
1829            else if (var7 == 0)
1830            {
1831                this.setRenderMinMax((double)(0.5F - var13), (double)var15, 0.0D, (double)(0.5F + var13), (double)var16, (double)var14);
1832            }
1833            else if (var7 == 1)
1834            {
1835                this.setRenderMinMax((double)(1.0F - var14), (double)var15, (double)(0.5F - var13), 1.0D, (double)var16, (double)(0.5F + var13));
1836            }
1837            else if (var7 == 3)
1838            {
1839                this.setRenderMinMax(0.0D, (double)var15, (double)(0.5F - var13), (double)var14, (double)var16, (double)(0.5F + var13));
1840            }
1841    
1842            this.renderStandardBlock(par1Block, par2, par3, par4);
1843    
1844            if (!var11)
1845            {
1846                this.overrideBlockTexture = -1;
1847            }
1848    
1849            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
1850            float var17 = 1.0F;
1851    
1852            if (Block.lightValue[par1Block.blockID] > 0)
1853            {
1854                var17 = 1.0F;
1855            }
1856    
1857            var5.setColorOpaque_F(var17, var17, var17);
1858            int var18 = par1Block.getBlockTextureFromSide(0);
1859    
1860            if (this.overrideBlockTexture >= 0)
1861            {
1862                var18 = this.overrideBlockTexture;
1863            }
1864    
1865            int var19 = (var18 & 15) << 4;
1866            int var20 = var18 & 240;
1867            float var21 = (float)var19 / 256.0F;
1868            float var22 = ((float)var19 + 15.99F) / 256.0F;
1869            float var23 = (float)var20 / 256.0F;
1870            float var24 = ((float)var20 + 15.99F) / 256.0F;
1871            Vec3[] var25 = new Vec3[8];
1872            float var26 = 0.046875F;
1873            float var27 = 0.046875F;
1874            float var28 = 0.3125F;
1875            var25[0] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var26), 0.0D, (double)(-var27));
1876            var25[1] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var26, 0.0D, (double)(-var27));
1877            var25[2] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var26, 0.0D, (double)var27);
1878            var25[3] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var26), 0.0D, (double)var27);
1879            var25[4] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var26), (double)var28, (double)(-var27));
1880            var25[5] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var26, (double)var28, (double)(-var27));
1881            var25[6] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var26, (double)var28, (double)var27);
1882            var25[7] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var26), (double)var28, (double)var27);
1883    
1884            for (int var29 = 0; var29 < 8; ++var29)
1885            {
1886                var25[var29].zCoord += 0.0625D;
1887    
1888                if (var9)
1889                {
1890                    var25[var29].rotateAroundX(0.5235988F);
1891                    var25[var29].yCoord -= 0.4375D;
1892                }
1893                else if (var8)
1894                {
1895                    var25[var29].rotateAroundX(0.08726647F);
1896                    var25[var29].yCoord -= 0.4375D;
1897                }
1898                else
1899                {
1900                    var25[var29].rotateAroundX(-((float)Math.PI * 2F / 9F));
1901                    var25[var29].yCoord -= 0.375D;
1902                }
1903    
1904                var25[var29].rotateAroundX(((float)Math.PI / 2F));
1905    
1906                if (var7 == 2)
1907                {
1908                    var25[var29].rotateAroundY(0.0F);
1909                }
1910    
1911                if (var7 == 0)
1912                {
1913                    var25[var29].rotateAroundY((float)Math.PI);
1914                }
1915    
1916                if (var7 == 1)
1917                {
1918                    var25[var29].rotateAroundY(((float)Math.PI / 2F));
1919                }
1920    
1921                if (var7 == 3)
1922                {
1923                    var25[var29].rotateAroundY(-((float)Math.PI / 2F));
1924                }
1925    
1926                var25[var29].xCoord += (double)par2 + 0.5D;
1927                var25[var29].yCoord += (double)((float)par3 + 0.3125F);
1928                var25[var29].zCoord += (double)par4 + 0.5D;
1929            }
1930    
1931            Vec3 var61 = null;
1932            Vec3 var30 = null;
1933            Vec3 var31 = null;
1934            Vec3 var32 = null;
1935            byte var33 = 7;
1936            byte var34 = 9;
1937            byte var35 = 9;
1938            byte var36 = 16;
1939    
1940            for (int var37 = 0; var37 < 6; ++var37)
1941            {
1942                if (var37 == 0)
1943                {
1944                    var61 = var25[0];
1945                    var30 = var25[1];
1946                    var31 = var25[2];
1947                    var32 = var25[3];
1948                    var21 = (float)(var19 + var33) / 256.0F;
1949                    var22 = (float)(var19 + var34) / 256.0F;
1950                    var23 = (float)(var20 + var35) / 256.0F;
1951                    var24 = (float)(var20 + var35 + 2) / 256.0F;
1952                }
1953                else if (var37 == 1)
1954                {
1955                    var61 = var25[7];
1956                    var30 = var25[6];
1957                    var31 = var25[5];
1958                    var32 = var25[4];
1959                }
1960                else if (var37 == 2)
1961                {
1962                    var61 = var25[1];
1963                    var30 = var25[0];
1964                    var31 = var25[4];
1965                    var32 = var25[5];
1966                    var21 = (float)(var19 + var33) / 256.0F;
1967                    var22 = (float)(var19 + var34) / 256.0F;
1968                    var23 = (float)(var20 + var35) / 256.0F;
1969                    var24 = (float)(var20 + var36) / 256.0F;
1970                }
1971                else if (var37 == 3)
1972                {
1973                    var61 = var25[2];
1974                    var30 = var25[1];
1975                    var31 = var25[5];
1976                    var32 = var25[6];
1977                }
1978                else if (var37 == 4)
1979                {
1980                    var61 = var25[3];
1981                    var30 = var25[2];
1982                    var31 = var25[6];
1983                    var32 = var25[7];
1984                }
1985                else if (var37 == 5)
1986                {
1987                    var61 = var25[0];
1988                    var30 = var25[3];
1989                    var31 = var25[7];
1990                    var32 = var25[4];
1991                }
1992    
1993                var5.addVertexWithUV(var61.xCoord, var61.yCoord, var61.zCoord, (double)var21, (double)var24);
1994                var5.addVertexWithUV(var30.xCoord, var30.yCoord, var30.zCoord, (double)var22, (double)var24);
1995                var5.addVertexWithUV(var31.xCoord, var31.yCoord, var31.zCoord, (double)var22, (double)var23);
1996                var5.addVertexWithUV(var32.xCoord, var32.yCoord, var32.zCoord, (double)var21, (double)var23);
1997            }
1998    
1999            float var62 = 0.09375F;
2000            float var38 = 0.09375F;
2001            float var39 = 0.03125F;
2002            var25[0] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var62), 0.0D, (double)(-var38));
2003            var25[1] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var62, 0.0D, (double)(-var38));
2004            var25[2] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var62, 0.0D, (double)var38);
2005            var25[3] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var62), 0.0D, (double)var38);
2006            var25[4] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var62), (double)var39, (double)(-var38));
2007            var25[5] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var62, (double)var39, (double)(-var38));
2008            var25[6] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var62, (double)var39, (double)var38);
2009            var25[7] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var62), (double)var39, (double)var38);
2010    
2011            for (int var40 = 0; var40 < 8; ++var40)
2012            {
2013                var25[var40].zCoord += 0.21875D;
2014    
2015                if (var9)
2016                {
2017                    var25[var40].yCoord -= 0.09375D;
2018                    var25[var40].zCoord -= 0.1625D;
2019                    var25[var40].rotateAroundX(0.0F);
2020                }
2021                else if (var8)
2022                {
2023                    var25[var40].yCoord += 0.015625D;
2024                    var25[var40].zCoord -= 0.171875D;
2025                    var25[var40].rotateAroundX(0.17453294F);
2026                }
2027                else
2028                {
2029                    var25[var40].rotateAroundX(0.87266463F);
2030                }
2031    
2032                if (var7 == 2)
2033                {
2034                    var25[var40].rotateAroundY(0.0F);
2035                }
2036    
2037                if (var7 == 0)
2038                {
2039                    var25[var40].rotateAroundY((float)Math.PI);
2040                }
2041    
2042                if (var7 == 1)
2043                {
2044                    var25[var40].rotateAroundY(((float)Math.PI / 2F));
2045                }
2046    
2047                if (var7 == 3)
2048                {
2049                    var25[var40].rotateAroundY(-((float)Math.PI / 2F));
2050                }
2051    
2052                var25[var40].xCoord += (double)par2 + 0.5D;
2053                var25[var40].yCoord += (double)((float)par3 + 0.3125F);
2054                var25[var40].zCoord += (double)par4 + 0.5D;
2055            }
2056    
2057            byte var63 = 5;
2058            byte var41 = 11;
2059            byte var42 = 3;
2060            byte var43 = 9;
2061    
2062            for (int var44 = 0; var44 < 6; ++var44)
2063            {
2064                if (var44 == 0)
2065                {
2066                    var61 = var25[0];
2067                    var30 = var25[1];
2068                    var31 = var25[2];
2069                    var32 = var25[3];
2070                    var21 = (float)(var19 + var63) / 256.0F;
2071                    var22 = (float)(var19 + var41) / 256.0F;
2072                    var23 = (float)(var20 + var42) / 256.0F;
2073                    var24 = (float)(var20 + var43) / 256.0F;
2074                }
2075                else if (var44 == 1)
2076                {
2077                    var61 = var25[7];
2078                    var30 = var25[6];
2079                    var31 = var25[5];
2080                    var32 = var25[4];
2081                }
2082                else if (var44 == 2)
2083                {
2084                    var61 = var25[1];
2085                    var30 = var25[0];
2086                    var31 = var25[4];
2087                    var32 = var25[5];
2088                    var21 = (float)(var19 + var63) / 256.0F;
2089                    var22 = (float)(var19 + var41) / 256.0F;
2090                    var23 = (float)(var20 + var42) / 256.0F;
2091                    var24 = (float)(var20 + var42 + 2) / 256.0F;
2092                }
2093                else if (var44 == 3)
2094                {
2095                    var61 = var25[2];
2096                    var30 = var25[1];
2097                    var31 = var25[5];
2098                    var32 = var25[6];
2099                }
2100                else if (var44 == 4)
2101                {
2102                    var61 = var25[3];
2103                    var30 = var25[2];
2104                    var31 = var25[6];
2105                    var32 = var25[7];
2106                }
2107                else if (var44 == 5)
2108                {
2109                    var61 = var25[0];
2110                    var30 = var25[3];
2111                    var31 = var25[7];
2112                    var32 = var25[4];
2113                }
2114    
2115                var5.addVertexWithUV(var61.xCoord, var61.yCoord, var61.zCoord, (double)var21, (double)var24);
2116                var5.addVertexWithUV(var30.xCoord, var30.yCoord, var30.zCoord, (double)var22, (double)var24);
2117                var5.addVertexWithUV(var31.xCoord, var31.yCoord, var31.zCoord, (double)var22, (double)var23);
2118                var5.addVertexWithUV(var32.xCoord, var32.yCoord, var32.zCoord, (double)var21, (double)var23);
2119            }
2120    
2121            if (var8)
2122            {
2123                double var64 = var25[0].yCoord;
2124                float var46 = 0.03125F;
2125                float var47 = 0.5F - var46 / 2.0F;
2126                float var48 = var47 + var46;
2127                int var49 = (Block.tripWire.blockIndexInTexture & 15) << 4;
2128                int var50 = Block.tripWire.blockIndexInTexture & 240;
2129                double var51 = (double)((float)var49 / 256.0F);
2130                double var53 = (double)((float)(var49 + 16) / 256.0F);
2131                double var55 = (double)((float)(var50 + (var8 ? 2 : 0)) / 256.0F);
2132                double var57 = (double)((float)(var50 + (var8 ? 4 : 2)) / 256.0F);
2133                double var59 = (double)(var10 ? 3.5F : 1.5F) / 16.0D;
2134                var17 = par1Block.getBlockBrightness(this.blockAccess, par2, par3, par4) * 0.75F;
2135                var5.setColorOpaque_F(var17, var17, var17);
2136    
2137                if (var7 == 2)
2138                {
2139                    var5.addVertexWithUV((double)((float)par2 + var47), (double)par3 + var59, (double)par4 + 0.25D, var51, var55);
2140                    var5.addVertexWithUV((double)((float)par2 + var48), (double)par3 + var59, (double)par4 + 0.25D, var51, var57);
2141                    var5.addVertexWithUV((double)((float)par2 + var48), (double)par3 + var59, (double)par4, var53, var57);
2142                    var5.addVertexWithUV((double)((float)par2 + var47), (double)par3 + var59, (double)par4, var53, var55);
2143                    var5.addVertexWithUV((double)((float)par2 + var47), var64, (double)par4 + 0.5D, var51, var55);
2144                    var5.addVertexWithUV((double)((float)par2 + var48), var64, (double)par4 + 0.5D, var51, var57);
2145                    var5.addVertexWithUV((double)((float)par2 + var48), (double)par3 + var59, (double)par4 + 0.25D, var53, var57);
2146                    var5.addVertexWithUV((double)((float)par2 + var47), (double)par3 + var59, (double)par4 + 0.25D, var53, var55);
2147                }
2148                else if (var7 == 0)
2149                {
2150                    var5.addVertexWithUV((double)((float)par2 + var47), (double)par3 + var59, (double)par4 + 0.75D, var51, var55);
2151                    var5.addVertexWithUV((double)((float)par2 + var48), (double)par3 + var59, (double)par4 + 0.75D, var51, var57);
2152                    var5.addVertexWithUV((double)((float)par2 + var48), var64, (double)par4 + 0.5D, var53, var57);
2153                    var5.addVertexWithUV((double)((float)par2 + var47), var64, (double)par4 + 0.5D, var53, var55);
2154                    var5.addVertexWithUV((double)((float)par2 + var47), (double)par3 + var59, (double)(par4 + 1), var51, var55);
2155                    var5.addVertexWithUV((double)((float)par2 + var48), (double)par3 + var59, (double)(par4 + 1), var51, var57);
2156                    var5.addVertexWithUV((double)((float)par2 + var48), (double)par3 + var59, (double)par4 + 0.75D, var53, var57);
2157                    var5.addVertexWithUV((double)((float)par2 + var47), (double)par3 + var59, (double)par4 + 0.75D, var53, var55);
2158                }
2159                else if (var7 == 1)
2160                {
2161                    var5.addVertexWithUV((double)par2, (double)par3 + var59, (double)((float)par4 + var48), var51, var57);
2162                    var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var59, (double)((float)par4 + var48), var53, var57);
2163                    var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var59, (double)((float)par4 + var47), var53, var55);
2164                    var5.addVertexWithUV((double)par2, (double)par3 + var59, (double)((float)par4 + var47), var51, var55);
2165                    var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var59, (double)((float)par4 + var48), var51, var57);
2166                    var5.addVertexWithUV((double)par2 + 0.5D, var64, (double)((float)par4 + var48), var53, var57);
2167                    var5.addVertexWithUV((double)par2 + 0.5D, var64, (double)((float)par4 + var47), var53, var55);
2168                    var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var59, (double)((float)par4 + var47), var51, var55);
2169                }
2170                else
2171                {
2172                    var5.addVertexWithUV((double)par2 + 0.5D, var64, (double)((float)par4 + var48), var51, var57);
2173                    var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var59, (double)((float)par4 + var48), var53, var57);
2174                    var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var59, (double)((float)par4 + var47), var53, var55);
2175                    var5.addVertexWithUV((double)par2 + 0.5D, var64, (double)((float)par4 + var47), var51, var55);
2176                    var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var59, (double)((float)par4 + var48), var51, var57);
2177                    var5.addVertexWithUV((double)(par2 + 1), (double)par3 + var59, (double)((float)par4 + var48), var53, var57);
2178                    var5.addVertexWithUV((double)(par2 + 1), (double)par3 + var59, (double)((float)par4 + var47), var53, var55);
2179                    var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var59, (double)((float)par4 + var47), var51, var55);
2180                }
2181            }
2182    
2183            return true;
2184        }
2185    
2186        /**
2187         * Renders a trip wire block at the given coordinates
2188         */
2189        public boolean renderBlockTripWire(Block par1Block, int par2, int par3, int par4)
2190        {
2191            Tessellator var5 = Tessellator.instance;
2192            int var6 = par1Block.getBlockTextureFromSide(0);
2193            int var7 = this.blockAccess.getBlockMetadata(par2, par3, par4);
2194            boolean var8 = (var7 & 4) == 4;
2195            boolean var9 = (var7 & 2) == 2;
2196    
2197            if (this.overrideBlockTexture >= 0)
2198            {
2199                var6 = this.overrideBlockTexture;
2200            }
2201    
2202            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
2203            float var10 = par1Block.getBlockBrightness(this.blockAccess, par2, par3, par4) * 0.75F;
2204            var5.setColorOpaque_F(var10, var10, var10);
2205            int var11 = (var6 & 15) << 4;
2206            int var12 = var6 & 240;
2207            double var13 = (double)((float)var11 / 256.0F);
2208            double var15 = (double)((float)(var11 + 16) / 256.0F);
2209            double var17 = (double)((float)(var12 + (var8 ? 2 : 0)) / 256.0F);
2210            double var19 = (double)((float)(var12 + (var8 ? 4 : 2)) / 256.0F);
2211            double var21 = (double)(var9 ? 3.5F : 1.5F) / 16.0D;
2212            boolean var23 = BlockTripWire.func_72148_a(this.blockAccess, par2, par3, par4, var7, 1);
2213            boolean var24 = BlockTripWire.func_72148_a(this.blockAccess, par2, par3, par4, var7, 3);
2214            boolean var25 = BlockTripWire.func_72148_a(this.blockAccess, par2, par3, par4, var7, 2);
2215            boolean var26 = BlockTripWire.func_72148_a(this.blockAccess, par2, par3, par4, var7, 0);
2216            float var27 = 0.03125F;
2217            float var28 = 0.5F - var27 / 2.0F;
2218            float var29 = var28 + var27;
2219    
2220            if (!var25 && !var24 && !var26 && !var23)
2221            {
2222                var25 = true;
2223                var26 = true;
2224            }
2225    
2226            if (var25)
2227            {
2228                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.25D, var13, var17);
2229                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.25D, var13, var19);
2230                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4, var15, var19);
2231                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4, var15, var17);
2232                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4, var15, var17);
2233                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4, var15, var19);
2234                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.25D, var13, var19);
2235                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.25D, var13, var17);
2236            }
2237    
2238            if (var25 || var26 && !var24 && !var23)
2239            {
2240                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.5D, var13, var17);
2241                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.5D, var13, var19);
2242                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.25D, var15, var19);
2243                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.25D, var15, var17);
2244                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.25D, var15, var17);
2245                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.25D, var15, var19);
2246                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.5D, var13, var19);
2247                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.5D, var13, var17);
2248            }
2249    
2250            if (var26 || var25 && !var24 && !var23)
2251            {
2252                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.75D, var13, var17);
2253                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.75D, var13, var19);
2254                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.5D, var15, var19);
2255                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.5D, var15, var17);
2256                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.5D, var15, var17);
2257                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.5D, var15, var19);
2258                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.75D, var13, var19);
2259                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.75D, var13, var17);
2260            }
2261    
2262            if (var26)
2263            {
2264                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)(par4 + 1), var13, var17);
2265                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)(par4 + 1), var13, var19);
2266                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.75D, var15, var19);
2267                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.75D, var15, var17);
2268                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)par4 + 0.75D, var15, var17);
2269                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)par4 + 0.75D, var15, var19);
2270                var5.addVertexWithUV((double)((float)par2 + var29), (double)par3 + var21, (double)(par4 + 1), var13, var19);
2271                var5.addVertexWithUV((double)((float)par2 + var28), (double)par3 + var21, (double)(par4 + 1), var13, var17);
2272            }
2273    
2274            if (var23)
2275            {
2276                var5.addVertexWithUV((double)par2, (double)par3 + var21, (double)((float)par4 + var29), var13, var19);
2277                var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var21, (double)((float)par4 + var29), var15, var19);
2278                var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var21, (double)((float)par4 + var28), var15, var17);
2279                var5.addVertexWithUV((double)par2, (double)par3 + var21, (double)((float)par4 + var28), var13, var17);
2280                var5.addVertexWithUV((double)par2, (double)par3 + var21, (double)((float)par4 + var28), var13, var17);
2281                var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var21, (double)((float)par4 + var28), var15, var17);
2282                var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var21, (double)((float)par4 + var29), var15, var19);
2283                var5.addVertexWithUV((double)par2, (double)par3 + var21, (double)((float)par4 + var29), var13, var19);
2284            }
2285    
2286            if (var23 || var24 && !var25 && !var26)
2287            {
2288                var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var21, (double)((float)par4 + var29), var13, var19);
2289                var5.addVertexWithUV((double)par2 + 0.5D, (double)par3 + var21, (double)((float)par4 + var29), var15, var19);
2290                var5.addVertexWithUV((double)par2 + 0.5D, (double)par3 + var21, (double)((float)par4 + var28), var15, var17);
2291                var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var21, (double)((float)par4 + var28), var13, var17);
2292                var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var21, (double)((float)par4 + var28), var13, var17);
2293                var5.addVertexWithUV((double)par2 + 0.5D, (double)par3 + var21, (double)((float)par4 + var28), var15, var17);
2294                var5.addVertexWithUV((double)par2 + 0.5D, (double)par3 + var21, (double)((float)par4 + var29), var15, var19);
2295                var5.addVertexWithUV((double)par2 + 0.25D, (double)par3 + var21, (double)((float)par4 + var29), var13, var19);
2296            }
2297    
2298            if (var24 || var23 && !var25 && !var26)
2299            {
2300                var5.addVertexWithUV((double)par2 + 0.5D, (double)par3 + var21, (double)((float)par4 + var29), var13, var19);
2301                var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var21, (double)((float)par4 + var29), var15, var19);
2302                var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var21, (double)((float)par4 + var28), var15, var17);
2303                var5.addVertexWithUV((double)par2 + 0.5D, (double)par3 + var21, (double)((float)par4 + var28), var13, var17);
2304                var5.addVertexWithUV((double)par2 + 0.5D, (double)par3 + var21, (double)((float)par4 + var28), var13, var17);
2305                var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var21, (double)((float)par4 + var28), var15, var17);
2306                var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var21, (double)((float)par4 + var29), var15, var19);
2307                var5.addVertexWithUV((double)par2 + 0.5D, (double)par3 + var21, (double)((float)par4 + var29), var13, var19);
2308            }
2309    
2310            if (var24)
2311            {
2312                var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var21, (double)((float)par4 + var29), var13, var19);
2313                var5.addVertexWithUV((double)(par2 + 1), (double)par3 + var21, (double)((float)par4 + var29), var15, var19);
2314                var5.addVertexWithUV((double)(par2 + 1), (double)par3 + var21, (double)((float)par4 + var28), var15, var17);
2315                var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var21, (double)((float)par4 + var28), var13, var17);
2316                var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var21, (double)((float)par4 + var28), var13, var17);
2317                var5.addVertexWithUV((double)(par2 + 1), (double)par3 + var21, (double)((float)par4 + var28), var15, var17);
2318                var5.addVertexWithUV((double)(par2 + 1), (double)par3 + var21, (double)((float)par4 + var29), var15, var19);
2319                var5.addVertexWithUV((double)par2 + 0.75D, (double)par3 + var21, (double)((float)par4 + var29), var13, var19);
2320            }
2321    
2322            return true;
2323        }
2324    
2325        /**
2326         * Renders a fire block at the given coordinates
2327         */
2328        public boolean renderBlockFire(Block par1Block, int par2, int par3, int par4)
2329        {
2330            Tessellator var5 = Tessellator.instance;
2331            int var6 = par1Block.getBlockTextureFromSide(0);
2332    
2333            if (this.overrideBlockTexture >= 0)
2334            {
2335                var6 = this.overrideBlockTexture;
2336            }
2337    
2338            var5.setColorOpaque_F(1.0F, 1.0F, 1.0F);
2339            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
2340            int var7 = (var6 & 15) << 4;
2341            int var8 = var6 & 240;
2342            double var9 = (double)((float)var7 / 256.0F);
2343            double var11 = (double)(((float)var7 + 15.99F) / 256.0F);
2344            double var13 = (double)((float)var8 / 256.0F);
2345            double var15 = (double)(((float)var8 + 15.99F) / 256.0F);
2346            float var17 = 1.4F;
2347            double var32;
2348            double var20;
2349            double var22;
2350            double var24;
2351            double var26;
2352            double var28;
2353            double var30;
2354    
2355            if (!this.blockAccess.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) && !Block.fire.canBlockCatchFire(this.blockAccess, par2, par3 - 1, par4, UP))
2356            {
2357                float var36 = 0.2F;
2358                float var19 = 0.0625F;
2359    
2360                if ((par2 + par3 + par4 & 1) == 1)
2361                {
2362                    var9 = (double)((float)var7 / 256.0F);
2363                    var11 = (double)(((float)var7 + 15.99F) / 256.0F);
2364                    var13 = (double)((float)(var8 + 16) / 256.0F);
2365                    var15 = (double)(((float)var8 + 15.99F + 16.0F) / 256.0F);
2366                }
2367    
2368                if ((par2 / 2 + par3 / 2 + par4 / 2 & 1) == 1)
2369                {
2370                    var20 = var11;
2371                    var11 = var9;
2372                    var9 = var20;
2373                }
2374    
2375                if (Block.fire.canBlockCatchFire(this.blockAccess, par2 - 1, par3, par4, EAST))
2376                {
2377                    var5.addVertexWithUV((double)((float)par2 + var36), (double)((float)par3 + var17 + var19), (double)(par4 + 1), var11, var13);
2378                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 1), var11, var15);
2379                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 0), var9, var15);
2380                    var5.addVertexWithUV((double)((float)par2 + var36), (double)((float)par3 + var17 + var19), (double)(par4 + 0), var9, var13);
2381                    var5.addVertexWithUV((double)((float)par2 + var36), (double)((float)par3 + var17 + var19), (double)(par4 + 0), var9, var13);
2382                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 0), var9, var15);
2383                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 1), var11, var15);
2384                    var5.addVertexWithUV((double)((float)par2 + var36), (double)((float)par3 + var17 + var19), (double)(par4 + 1), var11, var13);
2385                }
2386    
2387                if (Block.fire.canBlockCatchFire(this.blockAccess, par2 + 1, par3, par4, WEST))
2388                {
2389                    var5.addVertexWithUV((double)((float)(par2 + 1) - var36), (double)((float)par3 + var17 + var19), (double)(par4 + 0), var9, var13);
2390                    var5.addVertexWithUV((double)(par2 + 1 - 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 0), var9, var15);
2391                    var5.addVertexWithUV((double)(par2 + 1 - 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 1), var11, var15);
2392                    var5.addVertexWithUV((double)((float)(par2 + 1) - var36), (double)((float)par3 + var17 + var19), (double)(par4 + 1), var11, var13);
2393                    var5.addVertexWithUV((double)((float)(par2 + 1) - var36), (double)((float)par3 + var17 + var19), (double)(par4 + 1), var11, var13);
2394                    var5.addVertexWithUV((double)(par2 + 1 - 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 1), var11, var15);
2395                    var5.addVertexWithUV((double)(par2 + 1 - 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 0), var9, var15);
2396                    var5.addVertexWithUV((double)((float)(par2 + 1) - var36), (double)((float)par3 + var17 + var19), (double)(par4 + 0), var9, var13);
2397                }
2398    
2399                if (Block.fire.canBlockCatchFire(this.blockAccess, par2, par3, par4 - 1, SOUTH))
2400                {
2401                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17 + var19), (double)((float)par4 + var36), var11, var13);
2402                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 0), var11, var15);
2403                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 0) + var19), (double)(par4 + 0), var9, var15);
2404                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17 + var19), (double)((float)par4 + var36), var9, var13);
2405                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17 + var19), (double)((float)par4 + var36), var9, var13);
2406                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 0) + var19), (double)(par4 + 0), var9, var15);
2407                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 0), var11, var15);
2408                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17 + var19), (double)((float)par4 + var36), var11, var13);
2409                }
2410    
2411                if (Block.fire.canBlockCatchFire(this.blockAccess, par2, par3, par4 + 1, NORTH))
2412                {
2413                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17 + var19), (double)((float)(par4 + 1) - var36), var9, var13);
2414                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 0) + var19), (double)(par4 + 1 - 0), var9, var15);
2415                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 1 - 0), var11, var15);
2416                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17 + var19), (double)((float)(par4 + 1) - var36), var11, var13);
2417                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17 + var19), (double)((float)(par4 + 1) - var36), var11, var13);
2418                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + var19), (double)(par4 + 1 - 0), var11, var15);
2419                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 0) + var19), (double)(par4 + 1 - 0), var9, var15);
2420                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17 + var19), (double)((float)(par4 + 1) - var36), var9, var13);
2421                }
2422    
2423                if (Block.fire.canBlockCatchFire(this.blockAccess, par2, par3 + 1, par4, DOWN))
2424                {
2425                    var20 = (double)par2 + 0.5D + 0.5D;
2426                    var22 = (double)par2 + 0.5D - 0.5D;
2427                    var24 = (double)par4 + 0.5D + 0.5D;
2428                    var26 = (double)par4 + 0.5D - 0.5D;
2429                    var28 = (double)par2 + 0.5D - 0.5D;
2430                    var30 = (double)par2 + 0.5D + 0.5D;
2431                    var32 = (double)par4 + 0.5D - 0.5D;
2432                    double var34 = (double)par4 + 0.5D + 0.5D;
2433                    var9 = (double)((float)var7 / 256.0F);
2434                    var11 = (double)(((float)var7 + 15.99F) / 256.0F);
2435                    var13 = (double)((float)var8 / 256.0F);
2436                    var15 = (double)(((float)var8 + 15.99F) / 256.0F);
2437                    ++par3;
2438                    var17 = -0.2F;
2439    
2440                    if ((par2 + par3 + par4 & 1) == 0)
2441                    {
2442                        var5.addVertexWithUV(var28, (double)((float)par3 + var17), (double)(par4 + 0), var11, var13);
2443                        var5.addVertexWithUV(var20, (double)(par3 + 0), (double)(par4 + 0), var11, var15);
2444                        var5.addVertexWithUV(var20, (double)(par3 + 0), (double)(par4 + 1), var9, var15);
2445                        var5.addVertexWithUV(var28, (double)((float)par3 + var17), (double)(par4 + 1), var9, var13);
2446                        var9 = (double)((float)var7 / 256.0F);
2447                        var11 = (double)(((float)var7 + 15.99F) / 256.0F);
2448                        var13 = (double)((float)(var8 + 16) / 256.0F);
2449                        var15 = (double)(((float)var8 + 15.99F + 16.0F) / 256.0F);
2450                        var5.addVertexWithUV(var30, (double)((float)par3 + var17), (double)(par4 + 1), var11, var13);
2451                        var5.addVertexWithUV(var22, (double)(par3 + 0), (double)(par4 + 1), var11, var15);
2452                        var5.addVertexWithUV(var22, (double)(par3 + 0), (double)(par4 + 0), var9, var15);
2453                        var5.addVertexWithUV(var30, (double)((float)par3 + var17), (double)(par4 + 0), var9, var13);
2454                    }
2455                    else
2456                    {
2457                        var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17), var34, var11, var13);
2458                        var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), var26, var11, var15);
2459                        var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), var26, var9, var15);
2460                        var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17), var34, var9, var13);
2461                        var9 = (double)((float)var7 / 256.0F);
2462                        var11 = (double)(((float)var7 + 15.99F) / 256.0F);
2463                        var13 = (double)((float)(var8 + 16) / 256.0F);
2464                        var15 = (double)(((float)var8 + 15.99F + 16.0F) / 256.0F);
2465                        var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17), var32, var11, var13);
2466                        var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), var24, var11, var15);
2467                        var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), var24, var9, var15);
2468                        var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17), var32, var9, var13);
2469                    }
2470                }
2471            }
2472            else
2473            {
2474                double var18 = (double)par2 + 0.5D + 0.2D;
2475                var20 = (double)par2 + 0.5D - 0.2D;
2476                var22 = (double)par4 + 0.5D + 0.2D;
2477                var24 = (double)par4 + 0.5D - 0.2D;
2478                var26 = (double)par2 + 0.5D - 0.3D;
2479                var28 = (double)par2 + 0.5D + 0.3D;
2480                var30 = (double)par4 + 0.5D - 0.3D;
2481                var32 = (double)par4 + 0.5D + 0.3D;
2482                var5.addVertexWithUV(var26, (double)((float)par3 + var17), (double)(par4 + 1), var11, var13);
2483                var5.addVertexWithUV(var18, (double)(par3 + 0), (double)(par4 + 1), var11, var15);
2484                var5.addVertexWithUV(var18, (double)(par3 + 0), (double)(par4 + 0), var9, var15);
2485                var5.addVertexWithUV(var26, (double)((float)par3 + var17), (double)(par4 + 0), var9, var13);
2486                var5.addVertexWithUV(var28, (double)((float)par3 + var17), (double)(par4 + 0), var11, var13);
2487                var5.addVertexWithUV(var20, (double)(par3 + 0), (double)(par4 + 0), var11, var15);
2488                var5.addVertexWithUV(var20, (double)(par3 + 0), (double)(par4 + 1), var9, var15);
2489                var5.addVertexWithUV(var28, (double)((float)par3 + var17), (double)(par4 + 1), var9, var13);
2490                var9 = (double)((float)var7 / 256.0F);
2491                var11 = (double)(((float)var7 + 15.99F) / 256.0F);
2492                var13 = (double)((float)(var8 + 16) / 256.0F);
2493                var15 = (double)(((float)var8 + 15.99F + 16.0F) / 256.0F);
2494                var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17), var32, var11, var13);
2495                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), var24, var11, var15);
2496                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), var24, var9, var15);
2497                var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17), var32, var9, var13);
2498                var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17), var30, var11, var13);
2499                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), var22, var11, var15);
2500                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), var22, var9, var15);
2501                var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17), var30, var9, var13);
2502                var18 = (double)par2 + 0.5D - 0.5D;
2503                var20 = (double)par2 + 0.5D + 0.5D;
2504                var22 = (double)par4 + 0.5D - 0.5D;
2505                var24 = (double)par4 + 0.5D + 0.5D;
2506                var26 = (double)par2 + 0.5D - 0.4D;
2507                var28 = (double)par2 + 0.5D + 0.4D;
2508                var30 = (double)par4 + 0.5D - 0.4D;
2509                var32 = (double)par4 + 0.5D + 0.4D;
2510                var5.addVertexWithUV(var26, (double)((float)par3 + var17), (double)(par4 + 0), var9, var13);
2511                var5.addVertexWithUV(var18, (double)(par3 + 0), (double)(par4 + 0), var9, var15);
2512                var5.addVertexWithUV(var18, (double)(par3 + 0), (double)(par4 + 1), var11, var15);
2513                var5.addVertexWithUV(var26, (double)((float)par3 + var17), (double)(par4 + 1), var11, var13);
2514                var5.addVertexWithUV(var28, (double)((float)par3 + var17), (double)(par4 + 1), var9, var13);
2515                var5.addVertexWithUV(var20, (double)(par3 + 0), (double)(par4 + 1), var9, var15);
2516                var5.addVertexWithUV(var20, (double)(par3 + 0), (double)(par4 + 0), var11, var15);
2517                var5.addVertexWithUV(var28, (double)((float)par3 + var17), (double)(par4 + 0), var11, var13);
2518                var9 = (double)((float)var7 / 256.0F);
2519                var11 = (double)(((float)var7 + 15.99F) / 256.0F);
2520                var13 = (double)((float)var8 / 256.0F);
2521                var15 = (double)(((float)var8 + 15.99F) / 256.0F);
2522                var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17), var32, var9, var13);
2523                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), var24, var9, var15);
2524                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), var24, var11, var15);
2525                var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17), var32, var11, var13);
2526                var5.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + var17), var30, var9, var13);
2527                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), var22, var9, var15);
2528                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), var22, var11, var15);
2529                var5.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + var17), var30, var11, var13);
2530            }
2531    
2532            return true;
2533        }
2534    
2535        /**
2536         * Renders a redstone wire block at the given coordinates
2537         */
2538        public boolean renderBlockRedstoneWire(Block par1Block, int par2, int par3, int par4)
2539        {
2540            Tessellator var5 = Tessellator.instance;
2541            int var6 = this.blockAccess.getBlockMetadata(par2, par3, par4);
2542            int var7 = par1Block.getBlockTextureFromSideAndMetadata(1, var6);
2543    
2544            if (this.overrideBlockTexture >= 0)
2545            {
2546                var7 = this.overrideBlockTexture;
2547            }
2548    
2549            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
2550            float var8 = 1.0F;
2551            float var9 = (float)var6 / 15.0F;
2552            float var10 = var9 * 0.6F + 0.4F;
2553    
2554            if (var6 == 0)
2555            {
2556                var10 = 0.3F;
2557            }
2558    
2559            float var11 = var9 * var9 * 0.7F - 0.5F;
2560            float var12 = var9 * var9 * 0.6F - 0.7F;
2561    
2562            if (var11 < 0.0F)
2563            {
2564                var11 = 0.0F;
2565            }
2566    
2567            if (var12 < 0.0F)
2568            {
2569                var12 = 0.0F;
2570            }
2571    
2572            var5.setColorOpaque_F(var10, var11, var12);
2573            int var13 = (var7 & 15) << 4;
2574            int var14 = var7 & 240;
2575            double var15 = (double)((float)var13 / 256.0F);
2576            double var17 = (double)(((float)var13 + 15.99F) / 256.0F);
2577            double var19 = (double)((float)var14 / 256.0F);
2578            double var21 = (double)(((float)var14 + 15.99F) / 256.0F);
2579            boolean var29 = BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2 - 1, par3, par4, 1) || !this.blockAccess.isBlockNormalCube(par2 - 1, par3, par4) && BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2 - 1, par3 - 1, par4, -1);
2580            boolean var30 = BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2 + 1, par3, par4, 3) || !this.blockAccess.isBlockNormalCube(par2 + 1, par3, par4) && BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2 + 1, par3 - 1, par4, -1);
2581            boolean var31 = BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2, par3, par4 - 1, 2) || !this.blockAccess.isBlockNormalCube(par2, par3, par4 - 1) && BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2, par3 - 1, par4 - 1, -1);
2582            boolean var32 = BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2, par3, par4 + 1, 0) || !this.blockAccess.isBlockNormalCube(par2, par3, par4 + 1) && BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2, par3 - 1, par4 + 1, -1);
2583    
2584            if (!this.blockAccess.isBlockNormalCube(par2, par3 + 1, par4))
2585            {
2586                if (this.blockAccess.isBlockNormalCube(par2 - 1, par3, par4) && BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2 - 1, par3 + 1, par4, -1))
2587                {
2588                    var29 = true;
2589                }
2590    
2591                if (this.blockAccess.isBlockNormalCube(par2 + 1, par3, par4) && BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2 + 1, par3 + 1, par4, -1))
2592                {
2593                    var30 = true;
2594                }
2595    
2596                if (this.blockAccess.isBlockNormalCube(par2, par3, par4 - 1) && BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2, par3 + 1, par4 - 1, -1))
2597                {
2598                    var31 = true;
2599                }
2600    
2601                if (this.blockAccess.isBlockNormalCube(par2, par3, par4 + 1) && BlockRedstoneWire.isPowerProviderOrWire(this.blockAccess, par2, par3 + 1, par4 + 1, -1))
2602                {
2603                    var32 = true;
2604                }
2605            }
2606    
2607            float var34 = (float)(par2 + 0);
2608            float var35 = (float)(par2 + 1);
2609            float var36 = (float)(par4 + 0);
2610            float var37 = (float)(par4 + 1);
2611            byte var38 = 0;
2612    
2613            if ((var29 || var30) && !var31 && !var32)
2614            {
2615                var38 = 1;
2616            }
2617    
2618            if ((var31 || var32) && !var30 && !var29)
2619            {
2620                var38 = 2;
2621            }
2622    
2623            if (var38 != 0)
2624            {
2625                var15 = (double)((float)(var13 + 16) / 256.0F);
2626                var17 = (double)(((float)(var13 + 16) + 15.99F) / 256.0F);
2627                var19 = (double)((float)var14 / 256.0F);
2628                var21 = (double)(((float)var14 + 15.99F) / 256.0F);
2629            }
2630    
2631            if (var38 == 0)
2632            {
2633                if (!var29)
2634                {
2635                    var34 += 0.3125F;
2636                }
2637    
2638                if (!var29)
2639                {
2640                    var15 += 0.01953125D;
2641                }
2642    
2643                if (!var30)
2644                {
2645                    var35 -= 0.3125F;
2646                }
2647    
2648                if (!var30)
2649                {
2650                    var17 -= 0.01953125D;
2651                }
2652    
2653                if (!var31)
2654                {
2655                    var36 += 0.3125F;
2656                }
2657    
2658                if (!var31)
2659                {
2660                    var19 += 0.01953125D;
2661                }
2662    
2663                if (!var32)
2664                {
2665                    var37 -= 0.3125F;
2666                }
2667    
2668                if (!var32)
2669                {
2670                    var21 -= 0.01953125D;
2671                }
2672    
2673                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var37, var17, var21);
2674                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var36, var17, var19);
2675                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var36, var15, var19);
2676                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var37, var15, var21);
2677                var5.setColorOpaque_F(var8, var8, var8);
2678                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var37, var17, var21 + 0.0625D);
2679                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var36, var17, var19 + 0.0625D);
2680                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var36, var15, var19 + 0.0625D);
2681                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var37, var15, var21 + 0.0625D);
2682            }
2683            else if (var38 == 1)
2684            {
2685                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var37, var17, var21);
2686                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var36, var17, var19);
2687                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var36, var15, var19);
2688                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var37, var15, var21);
2689                var5.setColorOpaque_F(var8, var8, var8);
2690                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var37, var17, var21 + 0.0625D);
2691                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var36, var17, var19 + 0.0625D);
2692                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var36, var15, var19 + 0.0625D);
2693                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var37, var15, var21 + 0.0625D);
2694            }
2695            else if (var38 == 2)
2696            {
2697                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var37, var17, var21);
2698                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var36, var15, var21);
2699                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var36, var15, var19);
2700                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var37, var17, var19);
2701                var5.setColorOpaque_F(var8, var8, var8);
2702                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var37, var17, var21 + 0.0625D);
2703                var5.addVertexWithUV((double)var35, (double)par3 + 0.015625D, (double)var36, var15, var21 + 0.0625D);
2704                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var36, var15, var19 + 0.0625D);
2705                var5.addVertexWithUV((double)var34, (double)par3 + 0.015625D, (double)var37, var17, var19 + 0.0625D);
2706            }
2707    
2708            if (!this.blockAccess.isBlockNormalCube(par2, par3 + 1, par4))
2709            {
2710                var15 = (double)((float)(var13 + 16) / 256.0F);
2711                var17 = (double)(((float)(var13 + 16) + 15.99F) / 256.0F);
2712                var19 = (double)((float)var14 / 256.0F);
2713                var21 = (double)(((float)var14 + 15.99F) / 256.0F);
2714    
2715                if (this.blockAccess.isBlockNormalCube(par2 - 1, par3, par4) && this.blockAccess.getBlockId(par2 - 1, par3 + 1, par4) == Block.redstoneWire.blockID)
2716                {
2717                    var5.setColorOpaque_F(var8 * var10, var8 * var11, var8 * var12);
2718                    var5.addVertexWithUV((double)par2 + 0.015625D, (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 1), var17, var19);
2719                    var5.addVertexWithUV((double)par2 + 0.015625D, (double)(par3 + 0), (double)(par4 + 1), var15, var19);
2720                    var5.addVertexWithUV((double)par2 + 0.015625D, (double)(par3 + 0), (double)(par4 + 0), var15, var21);
2721                    var5.addVertexWithUV((double)par2 + 0.015625D, (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 0), var17, var21);
2722                    var5.setColorOpaque_F(var8, var8, var8);
2723                    var5.addVertexWithUV((double)par2 + 0.015625D, (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 1), var17, var19 + 0.0625D);
2724                    var5.addVertexWithUV((double)par2 + 0.015625D, (double)(par3 + 0), (double)(par4 + 1), var15, var19 + 0.0625D);
2725                    var5.addVertexWithUV((double)par2 + 0.015625D, (double)(par3 + 0), (double)(par4 + 0), var15, var21 + 0.0625D);
2726                    var5.addVertexWithUV((double)par2 + 0.015625D, (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 0), var17, var21 + 0.0625D);
2727                }
2728    
2729                if (this.blockAccess.isBlockNormalCube(par2 + 1, par3, par4) && this.blockAccess.getBlockId(par2 + 1, par3 + 1, par4) == Block.redstoneWire.blockID)
2730                {
2731                    var5.setColorOpaque_F(var8 * var10, var8 * var11, var8 * var12);
2732                    var5.addVertexWithUV((double)(par2 + 1) - 0.015625D, (double)(par3 + 0), (double)(par4 + 1), var15, var21);
2733                    var5.addVertexWithUV((double)(par2 + 1) - 0.015625D, (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 1), var17, var21);
2734                    var5.addVertexWithUV((double)(par2 + 1) - 0.015625D, (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 0), var17, var19);
2735                    var5.addVertexWithUV((double)(par2 + 1) - 0.015625D, (double)(par3 + 0), (double)(par4 + 0), var15, var19);
2736                    var5.setColorOpaque_F(var8, var8, var8);
2737                    var5.addVertexWithUV((double)(par2 + 1) - 0.015625D, (double)(par3 + 0), (double)(par4 + 1), var15, var21 + 0.0625D);
2738                    var5.addVertexWithUV((double)(par2 + 1) - 0.015625D, (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 1), var17, var21 + 0.0625D);
2739                    var5.addVertexWithUV((double)(par2 + 1) - 0.015625D, (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 0), var17, var19 + 0.0625D);
2740                    var5.addVertexWithUV((double)(par2 + 1) - 0.015625D, (double)(par3 + 0), (double)(par4 + 0), var15, var19 + 0.0625D);
2741                }
2742    
2743                if (this.blockAccess.isBlockNormalCube(par2, par3, par4 - 1) && this.blockAccess.getBlockId(par2, par3 + 1, par4 - 1) == Block.redstoneWire.blockID)
2744                {
2745                    var5.setColorOpaque_F(var8 * var10, var8 * var11, var8 * var12);
2746                    var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), (double)par4 + 0.015625D, var15, var21);
2747                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 1) + 0.021875F), (double)par4 + 0.015625D, var17, var21);
2748                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 1) + 0.021875F), (double)par4 + 0.015625D, var17, var19);
2749                    var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), (double)par4 + 0.015625D, var15, var19);
2750                    var5.setColorOpaque_F(var8, var8, var8);
2751                    var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), (double)par4 + 0.015625D, var15, var21 + 0.0625D);
2752                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 1) + 0.021875F), (double)par4 + 0.015625D, var17, var21 + 0.0625D);
2753                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 1) + 0.021875F), (double)par4 + 0.015625D, var17, var19 + 0.0625D);
2754                    var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), (double)par4 + 0.015625D, var15, var19 + 0.0625D);
2755                }
2756    
2757                if (this.blockAccess.isBlockNormalCube(par2, par3, par4 + 1) && this.blockAccess.getBlockId(par2, par3 + 1, par4 + 1) == Block.redstoneWire.blockID)
2758                {
2759                    var5.setColorOpaque_F(var8 * var10, var8 * var11, var8 * var12);
2760                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 1) - 0.015625D, var17, var19);
2761                    var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), (double)(par4 + 1) - 0.015625D, var15, var19);
2762                    var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), (double)(par4 + 1) - 0.015625D, var15, var21);
2763                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 1) - 0.015625D, var17, var21);
2764                    var5.setColorOpaque_F(var8, var8, var8);
2765                    var5.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 1) - 0.015625D, var17, var19 + 0.0625D);
2766                    var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), (double)(par4 + 1) - 0.015625D, var15, var19 + 0.0625D);
2767                    var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), (double)(par4 + 1) - 0.015625D, var15, var21 + 0.0625D);
2768                    var5.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 1) + 0.021875F), (double)(par4 + 1) - 0.015625D, var17, var21 + 0.0625D);
2769                }
2770            }
2771    
2772            return true;
2773        }
2774    
2775        /**
2776         * Renders a minecart track block at the given coordinates
2777         */
2778        public boolean renderBlockMinecartTrack(BlockRail par1BlockRail, int par2, int par3, int par4)
2779        {
2780            Tessellator var5 = Tessellator.instance;
2781            int var6 = this.blockAccess.getBlockMetadata(par2, par3, par4);
2782            int var7 = par1BlockRail.getBlockTextureFromSideAndMetadata(0, var6);
2783    
2784            if (this.overrideBlockTexture >= 0)
2785            {
2786                var7 = this.overrideBlockTexture;
2787            }
2788    
2789            if (par1BlockRail.isPowered())
2790            {
2791                var6 &= 7;
2792            }
2793    
2794            var5.setBrightness(par1BlockRail.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
2795            var5.setColorOpaque_F(1.0F, 1.0F, 1.0F);
2796            int var8 = (var7 & 15) << 4;
2797            int var9 = var7 & 240;
2798            double var10 = (double)((float)var8 / 256.0F);
2799            double var12 = (double)(((float)var8 + 15.99F) / 256.0F);
2800            double var14 = (double)((float)var9 / 256.0F);
2801            double var16 = (double)(((float)var9 + 15.99F) / 256.0F);
2802            double var18 = 0.0625D;
2803            double var20 = (double)(par2 + 1);
2804            double var22 = (double)(par2 + 1);
2805            double var24 = (double)(par2 + 0);
2806            double var26 = (double)(par2 + 0);
2807            double var28 = (double)(par4 + 0);
2808            double var30 = (double)(par4 + 1);
2809            double var32 = (double)(par4 + 1);
2810            double var34 = (double)(par4 + 0);
2811            double var36 = (double)par3 + var18;
2812            double var38 = (double)par3 + var18;
2813            double var40 = (double)par3 + var18;
2814            double var42 = (double)par3 + var18;
2815    
2816            if (var6 != 1 && var6 != 2 && var6 != 3 && var6 != 7)
2817            {
2818                if (var6 == 8)
2819                {
2820                    var20 = var22 = (double)(par2 + 0);
2821                    var24 = var26 = (double)(par2 + 1);
2822                    var28 = var34 = (double)(par4 + 1);
2823                    var30 = var32 = (double)(par4 + 0);
2824                }
2825                else if (var6 == 9)
2826                {
2827                    var20 = var26 = (double)(par2 + 0);
2828                    var22 = var24 = (double)(par2 + 1);
2829                    var28 = var30 = (double)(par4 + 0);
2830                    var32 = var34 = (double)(par4 + 1);
2831                }
2832            }
2833            else
2834            {
2835                var20 = var26 = (double)(par2 + 1);
2836                var22 = var24 = (double)(par2 + 0);
2837                var28 = var30 = (double)(par4 + 1);
2838                var32 = var34 = (double)(par4 + 0);
2839            }
2840    
2841            if (var6 != 2 && var6 != 4)
2842            {
2843                if (var6 == 3 || var6 == 5)
2844                {
2845                    ++var38;
2846                    ++var40;
2847                }
2848            }
2849            else
2850            {
2851                ++var36;
2852                ++var42;
2853            }
2854    
2855            var5.addVertexWithUV(var20, var36, var28, var12, var14);
2856            var5.addVertexWithUV(var22, var38, var30, var12, var16);
2857            var5.addVertexWithUV(var24, var40, var32, var10, var16);
2858            var5.addVertexWithUV(var26, var42, var34, var10, var14);
2859            var5.addVertexWithUV(var26, var42, var34, var10, var14);
2860            var5.addVertexWithUV(var24, var40, var32, var10, var16);
2861            var5.addVertexWithUV(var22, var38, var30, var12, var16);
2862            var5.addVertexWithUV(var20, var36, var28, var12, var14);
2863            return true;
2864        }
2865    
2866        /**
2867         * Renders a ladder block at the given coordinates
2868         */
2869        public boolean renderBlockLadder(Block par1Block, int par2, int par3, int par4)
2870        {
2871            Tessellator var5 = Tessellator.instance;
2872            int var6 = par1Block.getBlockTextureFromSide(0);
2873    
2874            if (this.overrideBlockTexture >= 0)
2875            {
2876                var6 = this.overrideBlockTexture;
2877            }
2878    
2879            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
2880            float var7 = 1.0F;
2881            var5.setColorOpaque_F(var7, var7, var7);
2882            int var22 = (var6 & 15) << 4;
2883            int var8 = var6 & 240;
2884            double var9 = (double)((float)var22 / 256.0F);
2885            double var11 = (double)(((float)var22 + 15.99F) / 256.0F);
2886            double var13 = (double)((float)var8 / 256.0F);
2887            double var15 = (double)(((float)var8 + 15.99F) / 256.0F);
2888            int var17 = this.blockAccess.getBlockMetadata(par2, par3, par4);
2889            double var18 = 0.0D;
2890            double var20 = 0.05000000074505806D;
2891    
2892            if (var17 == 5)
2893            {
2894                var5.addVertexWithUV((double)par2 + var20, (double)(par3 + 1) + var18, (double)(par4 + 1) + var18, var9, var13);
2895                var5.addVertexWithUV((double)par2 + var20, (double)(par3 + 0) - var18, (double)(par4 + 1) + var18, var9, var15);
2896                var5.addVertexWithUV((double)par2 + var20, (double)(par3 + 0) - var18, (double)(par4 + 0) - var18, var11, var15);
2897                var5.addVertexWithUV((double)par2 + var20, (double)(par3 + 1) + var18, (double)(par4 + 0) - var18, var11, var13);
2898            }
2899    
2900            if (var17 == 4)
2901            {
2902                var5.addVertexWithUV((double)(par2 + 1) - var20, (double)(par3 + 0) - var18, (double)(par4 + 1) + var18, var11, var15);
2903                var5.addVertexWithUV((double)(par2 + 1) - var20, (double)(par3 + 1) + var18, (double)(par4 + 1) + var18, var11, var13);
2904                var5.addVertexWithUV((double)(par2 + 1) - var20, (double)(par3 + 1) + var18, (double)(par4 + 0) - var18, var9, var13);
2905                var5.addVertexWithUV((double)(par2 + 1) - var20, (double)(par3 + 0) - var18, (double)(par4 + 0) - var18, var9, var15);
2906            }
2907    
2908            if (var17 == 3)
2909            {
2910                var5.addVertexWithUV((double)(par2 + 1) + var18, (double)(par3 + 0) - var18, (double)par4 + var20, var11, var15);
2911                var5.addVertexWithUV((double)(par2 + 1) + var18, (double)(par3 + 1) + var18, (double)par4 + var20, var11, var13);
2912                var5.addVertexWithUV((double)(par2 + 0) - var18, (double)(par3 + 1) + var18, (double)par4 + var20, var9, var13);
2913                var5.addVertexWithUV((double)(par2 + 0) - var18, (double)(par3 + 0) - var18, (double)par4 + var20, var9, var15);
2914            }
2915    
2916            if (var17 == 2)
2917            {
2918                var5.addVertexWithUV((double)(par2 + 1) + var18, (double)(par3 + 1) + var18, (double)(par4 + 1) - var20, var9, var13);
2919                var5.addVertexWithUV((double)(par2 + 1) + var18, (double)(par3 + 0) - var18, (double)(par4 + 1) - var20, var9, var15);
2920                var5.addVertexWithUV((double)(par2 + 0) - var18, (double)(par3 + 0) - var18, (double)(par4 + 1) - var20, var11, var15);
2921                var5.addVertexWithUV((double)(par2 + 0) - var18, (double)(par3 + 1) + var18, (double)(par4 + 1) - var20, var11, var13);
2922            }
2923    
2924            return true;
2925        }
2926    
2927        /**
2928         * Render block vine
2929         */
2930        public boolean renderBlockVine(Block par1Block, int par2, int par3, int par4)
2931        {
2932            Tessellator var5 = Tessellator.instance;
2933            int var6 = par1Block.getBlockTextureFromSide(0);
2934    
2935            if (this.overrideBlockTexture >= 0)
2936            {
2937                var6 = this.overrideBlockTexture;
2938            }
2939    
2940            float var7 = 1.0F;
2941            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
2942            int var8 = par1Block.colorMultiplier(this.blockAccess, par2, par3, par4);
2943            float var9 = (float)(var8 >> 16 & 255) / 255.0F;
2944            float var10 = (float)(var8 >> 8 & 255) / 255.0F;
2945            float var11 = (float)(var8 & 255) / 255.0F;
2946            var5.setColorOpaque_F(var7 * var9, var7 * var10, var7 * var11);
2947            var8 = (var6 & 15) << 4;
2948            int var21 = var6 & 240;
2949            double var22 = (double)((float)var8 / 256.0F);
2950            double var12 = (double)(((float)var8 + 15.99F) / 256.0F);
2951            double var14 = (double)((float)var21 / 256.0F);
2952            double var16 = (double)(((float)var21 + 15.99F) / 256.0F);
2953            double var18 = 0.05000000074505806D;
2954            int var20 = this.blockAccess.getBlockMetadata(par2, par3, par4);
2955    
2956            if ((var20 & 2) != 0)
2957            {
2958                var5.addVertexWithUV((double)par2 + var18, (double)(par3 + 1), (double)(par4 + 1), var22, var14);
2959                var5.addVertexWithUV((double)par2 + var18, (double)(par3 + 0), (double)(par4 + 1), var22, var16);
2960                var5.addVertexWithUV((double)par2 + var18, (double)(par3 + 0), (double)(par4 + 0), var12, var16);
2961                var5.addVertexWithUV((double)par2 + var18, (double)(par3 + 1), (double)(par4 + 0), var12, var14);
2962                var5.addVertexWithUV((double)par2 + var18, (double)(par3 + 1), (double)(par4 + 0), var12, var14);
2963                var5.addVertexWithUV((double)par2 + var18, (double)(par3 + 0), (double)(par4 + 0), var12, var16);
2964                var5.addVertexWithUV((double)par2 + var18, (double)(par3 + 0), (double)(par4 + 1), var22, var16);
2965                var5.addVertexWithUV((double)par2 + var18, (double)(par3 + 1), (double)(par4 + 1), var22, var14);
2966            }
2967    
2968            if ((var20 & 8) != 0)
2969            {
2970                var5.addVertexWithUV((double)(par2 + 1) - var18, (double)(par3 + 0), (double)(par4 + 1), var12, var16);
2971                var5.addVertexWithUV((double)(par2 + 1) - var18, (double)(par3 + 1), (double)(par4 + 1), var12, var14);
2972                var5.addVertexWithUV((double)(par2 + 1) - var18, (double)(par3 + 1), (double)(par4 + 0), var22, var14);
2973                var5.addVertexWithUV((double)(par2 + 1) - var18, (double)(par3 + 0), (double)(par4 + 0), var22, var16);
2974                var5.addVertexWithUV((double)(par2 + 1) - var18, (double)(par3 + 0), (double)(par4 + 0), var22, var16);
2975                var5.addVertexWithUV((double)(par2 + 1) - var18, (double)(par3 + 1), (double)(par4 + 0), var22, var14);
2976                var5.addVertexWithUV((double)(par2 + 1) - var18, (double)(par3 + 1), (double)(par4 + 1), var12, var14);
2977                var5.addVertexWithUV((double)(par2 + 1) - var18, (double)(par3 + 0), (double)(par4 + 1), var12, var16);
2978            }
2979    
2980            if ((var20 & 4) != 0)
2981            {
2982                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), (double)par4 + var18, var12, var16);
2983                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 1), (double)par4 + var18, var12, var14);
2984                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 1), (double)par4 + var18, var22, var14);
2985                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), (double)par4 + var18, var22, var16);
2986                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), (double)par4 + var18, var22, var16);
2987                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 1), (double)par4 + var18, var22, var14);
2988                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 1), (double)par4 + var18, var12, var14);
2989                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), (double)par4 + var18, var12, var16);
2990            }
2991    
2992            if ((var20 & 1) != 0)
2993            {
2994                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 1), (double)(par4 + 1) - var18, var22, var14);
2995                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), (double)(par4 + 1) - var18, var22, var16);
2996                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), (double)(par4 + 1) - var18, var12, var16);
2997                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 1), (double)(par4 + 1) - var18, var12, var14);
2998                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 1), (double)(par4 + 1) - var18, var12, var14);
2999                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 0), (double)(par4 + 1) - var18, var12, var16);
3000                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 0), (double)(par4 + 1) - var18, var22, var16);
3001                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 1), (double)(par4 + 1) - var18, var22, var14);
3002            }
3003    
3004            if (this.blockAccess.isBlockNormalCube(par2, par3 + 1, par4))
3005            {
3006                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 1) - var18, (double)(par4 + 0), var22, var14);
3007                var5.addVertexWithUV((double)(par2 + 1), (double)(par3 + 1) - var18, (double)(par4 + 1), var22, var16);
3008                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 1) - var18, (double)(par4 + 1), var12, var16);
3009                var5.addVertexWithUV((double)(par2 + 0), (double)(par3 + 1) - var18, (double)(par4 + 0), var12, var14);
3010            }
3011    
3012            return true;
3013        }
3014    
3015        public boolean renderBlockPane(BlockPane par1BlockPane, int par2, int par3, int par4)
3016        {
3017            int var5 = this.blockAccess.getHeight();
3018            Tessellator var6 = Tessellator.instance;
3019            var6.setBrightness(par1BlockPane.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
3020            float var7 = 1.0F;
3021            int var8 = par1BlockPane.colorMultiplier(this.blockAccess, par2, par3, par4);
3022            float var9 = (float)(var8 >> 16 & 255) / 255.0F;
3023            float var10 = (float)(var8 >> 8 & 255) / 255.0F;
3024            float var11 = (float)(var8 & 255) / 255.0F;
3025    
3026            if (EntityRenderer.anaglyphEnable)
3027            {
3028                float var12 = (var9 * 30.0F + var10 * 59.0F + var11 * 11.0F) / 100.0F;
3029                float var13 = (var9 * 30.0F + var10 * 70.0F) / 100.0F;
3030                float var14 = (var9 * 30.0F + var11 * 70.0F) / 100.0F;
3031                var9 = var12;
3032                var10 = var13;
3033                var11 = var14;
3034            }
3035    
3036            var6.setColorOpaque_F(var7 * var9, var7 * var10, var7 * var11);
3037            boolean var64 = false;
3038            boolean var67 = false;
3039            int var68;
3040            int var65;
3041            int var66;
3042    
3043            if (this.overrideBlockTexture >= 0)
3044            {
3045                var65 = this.overrideBlockTexture;
3046                var66 = this.overrideBlockTexture;
3047            }
3048            else
3049            {
3050                var68 = this.blockAccess.getBlockMetadata(par2, par3, par4);
3051                var65 = par1BlockPane.getBlockTextureFromSideAndMetadata(0, var68);
3052                var66 = par1BlockPane.getSideTextureIndex();
3053            }
3054    
3055            var68 = (var65 & 15) << 4;
3056            int var15 = var65 & 240;
3057            double var16 = (double)((float)var68 / 256.0F);
3058            double var18 = (double)(((float)var68 + 7.99F) / 256.0F);
3059            double var20 = (double)(((float)var68 + 15.99F) / 256.0F);
3060            double var22 = (double)((float)var15 / 256.0F);
3061            double var24 = (double)(((float)var15 + 15.99F) / 256.0F);
3062            int var26 = (var66 & 15) << 4;
3063            int var27 = var66 & 240;
3064            double var28 = (double)((float)(var26 + 7) / 256.0F);
3065            double var30 = (double)(((float)var26 + 8.99F) / 256.0F);
3066            double var32 = (double)((float)var27 / 256.0F);
3067            double var34 = (double)((float)(var27 + 8) / 256.0F);
3068            double var36 = (double)(((float)var27 + 15.99F) / 256.0F);
3069            double var38 = (double)par2;
3070            double var40 = (double)par2 + 0.5D;
3071            double var42 = (double)(par2 + 1);
3072            double var44 = (double)par4;
3073            double var46 = (double)par4 + 0.5D;
3074            double var48 = (double)(par4 + 1);
3075            double var50 = (double)par2 + 0.5D - 0.0625D;
3076            double var52 = (double)par2 + 0.5D + 0.0625D;
3077            double var54 = (double)par4 + 0.5D - 0.0625D;
3078            double var56 = (double)par4 + 0.5D + 0.0625D;
3079            boolean var58 = par1BlockPane.canThisPaneConnectToThisBlockID(this.blockAccess.getBlockId(par2, par3, par4 - 1));
3080            boolean var59 = par1BlockPane.canThisPaneConnectToThisBlockID(this.blockAccess.getBlockId(par2, par3, par4 + 1));
3081            boolean var60 = par1BlockPane.canThisPaneConnectToThisBlockID(this.blockAccess.getBlockId(par2 - 1, par3, par4));
3082            boolean var61 = par1BlockPane.canThisPaneConnectToThisBlockID(this.blockAccess.getBlockId(par2 + 1, par3, par4));
3083            boolean var62 = par1BlockPane.shouldSideBeRendered(this.blockAccess, par2, par3 + 1, par4, 1);
3084            boolean var63 = par1BlockPane.shouldSideBeRendered(this.blockAccess, par2, par3 - 1, par4, 0);
3085    
3086            if ((!var60 || !var61) && (var60 || var61 || var58 || var59))
3087            {
3088                if (var60 && !var61)
3089                {
3090                    var6.addVertexWithUV(var38, (double)(par3 + 1), var46, var16, var22);
3091                    var6.addVertexWithUV(var38, (double)(par3 + 0), var46, var16, var24);
3092                    var6.addVertexWithUV(var40, (double)(par3 + 0), var46, var18, var24);
3093                    var6.addVertexWithUV(var40, (double)(par3 + 1), var46, var18, var22);
3094                    var6.addVertexWithUV(var40, (double)(par3 + 1), var46, var16, var22);
3095                    var6.addVertexWithUV(var40, (double)(par3 + 0), var46, var16, var24);
3096                    var6.addVertexWithUV(var38, (double)(par3 + 0), var46, var18, var24);
3097                    var6.addVertexWithUV(var38, (double)(par3 + 1), var46, var18, var22);
3098    
3099                    if (!var59 && !var58)
3100                    {
3101                        var6.addVertexWithUV(var40, (double)(par3 + 1), var56, var28, var32);
3102                        var6.addVertexWithUV(var40, (double)(par3 + 0), var56, var28, var36);
3103                        var6.addVertexWithUV(var40, (double)(par3 + 0), var54, var30, var36);
3104                        var6.addVertexWithUV(var40, (double)(par3 + 1), var54, var30, var32);
3105                        var6.addVertexWithUV(var40, (double)(par3 + 1), var54, var28, var32);
3106                        var6.addVertexWithUV(var40, (double)(par3 + 0), var54, var28, var36);
3107                        var6.addVertexWithUV(var40, (double)(par3 + 0), var56, var30, var36);
3108                        var6.addVertexWithUV(var40, (double)(par3 + 1), var56, var30, var32);
3109                    }
3110    
3111                    if (var62 || par3 < var5 - 1 && this.blockAccess.isAirBlock(par2 - 1, par3 + 1, par4))
3112                    {
3113                        var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var56, var30, var34);
3114                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var56, var30, var36);
3115                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var54, var28, var36);
3116                        var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var54, var28, var34);
3117                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var56, var30, var34);
3118                        var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var56, var30, var36);
3119                        var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var54, var28, var36);
3120                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var54, var28, var34);
3121                    }
3122    
3123                    if (var63 || par3 > 1 && this.blockAccess.isAirBlock(par2 - 1, par3 - 1, par4))
3124                    {
3125                        var6.addVertexWithUV(var38, (double)par3 - 0.01D, var56, var30, var34);
3126                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var56, var30, var36);
3127                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var54, var28, var36);
3128                        var6.addVertexWithUV(var38, (double)par3 - 0.01D, var54, var28, var34);
3129                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var56, var30, var34);
3130                        var6.addVertexWithUV(var38, (double)par3 - 0.01D, var56, var30, var36);
3131                        var6.addVertexWithUV(var38, (double)par3 - 0.01D, var54, var28, var36);
3132                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var54, var28, var34);
3133                    }
3134                }
3135                else if (!var60 && var61)
3136                {
3137                    var6.addVertexWithUV(var40, (double)(par3 + 1), var46, var18, var22);
3138                    var6.addVertexWithUV(var40, (double)(par3 + 0), var46, var18, var24);
3139                    var6.addVertexWithUV(var42, (double)(par3 + 0), var46, var20, var24);
3140                    var6.addVertexWithUV(var42, (double)(par3 + 1), var46, var20, var22);
3141                    var6.addVertexWithUV(var42, (double)(par3 + 1), var46, var18, var22);
3142                    var6.addVertexWithUV(var42, (double)(par3 + 0), var46, var18, var24);
3143                    var6.addVertexWithUV(var40, (double)(par3 + 0), var46, var20, var24);
3144                    var6.addVertexWithUV(var40, (double)(par3 + 1), var46, var20, var22);
3145    
3146                    if (!var59 && !var58)
3147                    {
3148                        var6.addVertexWithUV(var40, (double)(par3 + 1), var54, var28, var32);
3149                        var6.addVertexWithUV(var40, (double)(par3 + 0), var54, var28, var36);
3150                        var6.addVertexWithUV(var40, (double)(par3 + 0), var56, var30, var36);
3151                        var6.addVertexWithUV(var40, (double)(par3 + 1), var56, var30, var32);
3152                        var6.addVertexWithUV(var40, (double)(par3 + 1), var56, var28, var32);
3153                        var6.addVertexWithUV(var40, (double)(par3 + 0), var56, var28, var36);
3154                        var6.addVertexWithUV(var40, (double)(par3 + 0), var54, var30, var36);
3155                        var6.addVertexWithUV(var40, (double)(par3 + 1), var54, var30, var32);
3156                    }
3157    
3158                    if (var62 || par3 < var5 - 1 && this.blockAccess.isAirBlock(par2 + 1, par3 + 1, par4))
3159                    {
3160                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var56, var30, var32);
3161                        var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var56, var30, var34);
3162                        var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var54, var28, var34);
3163                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var54, var28, var32);
3164                        var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var56, var30, var32);
3165                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var56, var30, var34);
3166                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var54, var28, var34);
3167                        var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var54, var28, var32);
3168                    }
3169    
3170                    if (var63 || par3 > 1 && this.blockAccess.isAirBlock(par2 + 1, par3 - 1, par4))
3171                    {
3172                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var56, var30, var32);
3173                        var6.addVertexWithUV(var42, (double)par3 - 0.01D, var56, var30, var34);
3174                        var6.addVertexWithUV(var42, (double)par3 - 0.01D, var54, var28, var34);
3175                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var54, var28, var32);
3176                        var6.addVertexWithUV(var42, (double)par3 - 0.01D, var56, var30, var32);
3177                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var56, var30, var34);
3178                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var54, var28, var34);
3179                        var6.addVertexWithUV(var42, (double)par3 - 0.01D, var54, var28, var32);
3180                    }
3181                }
3182            }
3183            else
3184            {
3185                var6.addVertexWithUV(var38, (double)(par3 + 1), var46, var16, var22);
3186                var6.addVertexWithUV(var38, (double)(par3 + 0), var46, var16, var24);
3187                var6.addVertexWithUV(var42, (double)(par3 + 0), var46, var20, var24);
3188                var6.addVertexWithUV(var42, (double)(par3 + 1), var46, var20, var22);
3189                var6.addVertexWithUV(var42, (double)(par3 + 1), var46, var16, var22);
3190                var6.addVertexWithUV(var42, (double)(par3 + 0), var46, var16, var24);
3191                var6.addVertexWithUV(var38, (double)(par3 + 0), var46, var20, var24);
3192                var6.addVertexWithUV(var38, (double)(par3 + 1), var46, var20, var22);
3193    
3194                if (var62)
3195                {
3196                    var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var56, var30, var36);
3197                    var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var56, var30, var32);
3198                    var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var54, var28, var32);
3199                    var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var54, var28, var36);
3200                    var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var56, var30, var36);
3201                    var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var56, var30, var32);
3202                    var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var54, var28, var32);
3203                    var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var54, var28, var36);
3204                }
3205                else
3206                {
3207                    if (par3 < var5 - 1 && this.blockAccess.isAirBlock(par2 - 1, par3 + 1, par4))
3208                    {
3209                        var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var56, var30, var34);
3210                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var56, var30, var36);
3211                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var54, var28, var36);
3212                        var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var54, var28, var34);
3213                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var56, var30, var34);
3214                        var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var56, var30, var36);
3215                        var6.addVertexWithUV(var38, (double)(par3 + 1) + 0.01D, var54, var28, var36);
3216                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var54, var28, var34);
3217                    }
3218    
3219                    if (par3 < var5 - 1 && this.blockAccess.isAirBlock(par2 + 1, par3 + 1, par4))
3220                    {
3221                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var56, var30, var32);
3222                        var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var56, var30, var34);
3223                        var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var54, var28, var34);
3224                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var54, var28, var32);
3225                        var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var56, var30, var32);
3226                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var56, var30, var34);
3227                        var6.addVertexWithUV(var40, (double)(par3 + 1) + 0.01D, var54, var28, var34);
3228                        var6.addVertexWithUV(var42, (double)(par3 + 1) + 0.01D, var54, var28, var32);
3229                    }
3230                }
3231    
3232                if (var63)
3233                {
3234                    var6.addVertexWithUV(var38, (double)par3 - 0.01D, var56, var30, var36);
3235                    var6.addVertexWithUV(var42, (double)par3 - 0.01D, var56, var30, var32);
3236                    var6.addVertexWithUV(var42, (double)par3 - 0.01D, var54, var28, var32);
3237                    var6.addVertexWithUV(var38, (double)par3 - 0.01D, var54, var28, var36);
3238                    var6.addVertexWithUV(var42, (double)par3 - 0.01D, var56, var30, var36);
3239                    var6.addVertexWithUV(var38, (double)par3 - 0.01D, var56, var30, var32);
3240                    var6.addVertexWithUV(var38, (double)par3 - 0.01D, var54, var28, var32);
3241                    var6.addVertexWithUV(var42, (double)par3 - 0.01D, var54, var28, var36);
3242                }
3243                else
3244                {
3245                    if (par3 > 1 && this.blockAccess.isAirBlock(par2 - 1, par3 - 1, par4))
3246                    {
3247                        var6.addVertexWithUV(var38, (double)par3 - 0.01D, var56, var30, var34);
3248                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var56, var30, var36);
3249                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var54, var28, var36);
3250                        var6.addVertexWithUV(var38, (double)par3 - 0.01D, var54, var28, var34);
3251                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var56, var30, var34);
3252                        var6.addVertexWithUV(var38, (double)par3 - 0.01D, var56, var30, var36);
3253                        var6.addVertexWithUV(var38, (double)par3 - 0.01D, var54, var28, var36);
3254                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var54, var28, var34);
3255                    }
3256    
3257                    if (par3 > 1 && this.blockAccess.isAirBlock(par2 + 1, par3 - 1, par4))
3258                    {
3259                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var56, var30, var32);
3260                        var6.addVertexWithUV(var42, (double)par3 - 0.01D, var56, var30, var34);
3261                        var6.addVertexWithUV(var42, (double)par3 - 0.01D, var54, var28, var34);
3262                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var54, var28, var32);
3263                        var6.addVertexWithUV(var42, (double)par3 - 0.01D, var56, var30, var32);
3264                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var56, var30, var34);
3265                        var6.addVertexWithUV(var40, (double)par3 - 0.01D, var54, var28, var34);
3266                        var6.addVertexWithUV(var42, (double)par3 - 0.01D, var54, var28, var32);
3267                    }
3268                }
3269            }
3270    
3271            if ((!var58 || !var59) && (var60 || var61 || var58 || var59))
3272            {
3273                if (var58 && !var59)
3274                {
3275                    var6.addVertexWithUV(var40, (double)(par3 + 1), var44, var16, var22);
3276                    var6.addVertexWithUV(var40, (double)(par3 + 0), var44, var16, var24);
3277                    var6.addVertexWithUV(var40, (double)(par3 + 0), var46, var18, var24);
3278                    var6.addVertexWithUV(var40, (double)(par3 + 1), var46, var18, var22);
3279                    var6.addVertexWithUV(var40, (double)(par3 + 1), var46, var16, var22);
3280                    var6.addVertexWithUV(var40, (double)(par3 + 0), var46, var16, var24);
3281                    var6.addVertexWithUV(var40, (double)(par3 + 0), var44, var18, var24);
3282                    var6.addVertexWithUV(var40, (double)(par3 + 1), var44, var18, var22);
3283    
3284                    if (!var61 && !var60)
3285                    {
3286                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var28, var32);
3287                        var6.addVertexWithUV(var50, (double)(par3 + 0), var46, var28, var36);
3288                        var6.addVertexWithUV(var52, (double)(par3 + 0), var46, var30, var36);
3289                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var30, var32);
3290                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var28, var32);
3291                        var6.addVertexWithUV(var52, (double)(par3 + 0), var46, var28, var36);
3292                        var6.addVertexWithUV(var50, (double)(par3 + 0), var46, var30, var36);
3293                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var30, var32);
3294                    }
3295    
3296                    if (var62 || par3 < var5 - 1 && this.blockAccess.isAirBlock(par2, par3 + 1, par4 - 1))
3297                    {
3298                        var6.addVertexWithUV(var50, (double)(par3 + 1), var44, var30, var32);
3299                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var30, var34);
3300                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var28, var34);
3301                        var6.addVertexWithUV(var52, (double)(par3 + 1), var44, var28, var32);
3302                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var30, var32);
3303                        var6.addVertexWithUV(var50, (double)(par3 + 1), var44, var30, var34);
3304                        var6.addVertexWithUV(var52, (double)(par3 + 1), var44, var28, var34);
3305                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var28, var32);
3306                    }
3307    
3308                    if (var63 || par3 > 1 && this.blockAccess.isAirBlock(par2, par3 - 1, par4 - 1))
3309                    {
3310                        var6.addVertexWithUV(var50, (double)par3, var44, var30, var32);
3311                        var6.addVertexWithUV(var50, (double)par3, var46, var30, var34);
3312                        var6.addVertexWithUV(var52, (double)par3, var46, var28, var34);
3313                        var6.addVertexWithUV(var52, (double)par3, var44, var28, var32);
3314                        var6.addVertexWithUV(var50, (double)par3, var46, var30, var32);
3315                        var6.addVertexWithUV(var50, (double)par3, var44, var30, var34);
3316                        var6.addVertexWithUV(var52, (double)par3, var44, var28, var34);
3317                        var6.addVertexWithUV(var52, (double)par3, var46, var28, var32);
3318                    }
3319                }
3320                else if (!var58 && var59)
3321                {
3322                    var6.addVertexWithUV(var40, (double)(par3 + 1), var46, var18, var22);
3323                    var6.addVertexWithUV(var40, (double)(par3 + 0), var46, var18, var24);
3324                    var6.addVertexWithUV(var40, (double)(par3 + 0), var48, var20, var24);
3325                    var6.addVertexWithUV(var40, (double)(par3 + 1), var48, var20, var22);
3326                    var6.addVertexWithUV(var40, (double)(par3 + 1), var48, var18, var22);
3327                    var6.addVertexWithUV(var40, (double)(par3 + 0), var48, var18, var24);
3328                    var6.addVertexWithUV(var40, (double)(par3 + 0), var46, var20, var24);
3329                    var6.addVertexWithUV(var40, (double)(par3 + 1), var46, var20, var22);
3330    
3331                    if (!var61 && !var60)
3332                    {
3333                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var28, var32);
3334                        var6.addVertexWithUV(var52, (double)(par3 + 0), var46, var28, var36);
3335                        var6.addVertexWithUV(var50, (double)(par3 + 0), var46, var30, var36);
3336                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var30, var32);
3337                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var28, var32);
3338                        var6.addVertexWithUV(var50, (double)(par3 + 0), var46, var28, var36);
3339                        var6.addVertexWithUV(var52, (double)(par3 + 0), var46, var30, var36);
3340                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var30, var32);
3341                    }
3342    
3343                    if (var62 || par3 < var5 - 1 && this.blockAccess.isAirBlock(par2, par3 + 1, par4 + 1))
3344                    {
3345                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var28, var34);
3346                        var6.addVertexWithUV(var50, (double)(par3 + 1), var48, var28, var36);
3347                        var6.addVertexWithUV(var52, (double)(par3 + 1), var48, var30, var36);
3348                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var30, var34);
3349                        var6.addVertexWithUV(var50, (double)(par3 + 1), var48, var28, var34);
3350                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var28, var36);
3351                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var30, var36);
3352                        var6.addVertexWithUV(var52, (double)(par3 + 1), var48, var30, var34);
3353                    }
3354    
3355                    if (var63 || par3 > 1 && this.blockAccess.isAirBlock(par2, par3 - 1, par4 + 1))
3356                    {
3357                        var6.addVertexWithUV(var50, (double)par3, var46, var28, var34);
3358                        var6.addVertexWithUV(var50, (double)par3, var48, var28, var36);
3359                        var6.addVertexWithUV(var52, (double)par3, var48, var30, var36);
3360                        var6.addVertexWithUV(var52, (double)par3, var46, var30, var34);
3361                        var6.addVertexWithUV(var50, (double)par3, var48, var28, var34);
3362                        var6.addVertexWithUV(var50, (double)par3, var46, var28, var36);
3363                        var6.addVertexWithUV(var52, (double)par3, var46, var30, var36);
3364                        var6.addVertexWithUV(var52, (double)par3, var48, var30, var34);
3365                    }
3366                }
3367            }
3368            else
3369            {
3370                var6.addVertexWithUV(var40, (double)(par3 + 1), var48, var16, var22);
3371                var6.addVertexWithUV(var40, (double)(par3 + 0), var48, var16, var24);
3372                var6.addVertexWithUV(var40, (double)(par3 + 0), var44, var20, var24);
3373                var6.addVertexWithUV(var40, (double)(par3 + 1), var44, var20, var22);
3374                var6.addVertexWithUV(var40, (double)(par3 + 1), var44, var16, var22);
3375                var6.addVertexWithUV(var40, (double)(par3 + 0), var44, var16, var24);
3376                var6.addVertexWithUV(var40, (double)(par3 + 0), var48, var20, var24);
3377                var6.addVertexWithUV(var40, (double)(par3 + 1), var48, var20, var22);
3378    
3379                if (var62)
3380                {
3381                    var6.addVertexWithUV(var52, (double)(par3 + 1), var48, var30, var36);
3382                    var6.addVertexWithUV(var52, (double)(par3 + 1), var44, var30, var32);
3383                    var6.addVertexWithUV(var50, (double)(par3 + 1), var44, var28, var32);
3384                    var6.addVertexWithUV(var50, (double)(par3 + 1), var48, var28, var36);
3385                    var6.addVertexWithUV(var52, (double)(par3 + 1), var44, var30, var36);
3386                    var6.addVertexWithUV(var52, (double)(par3 + 1), var48, var30, var32);
3387                    var6.addVertexWithUV(var50, (double)(par3 + 1), var48, var28, var32);
3388                    var6.addVertexWithUV(var50, (double)(par3 + 1), var44, var28, var36);
3389                }
3390                else
3391                {
3392                    if (par3 < var5 - 1 && this.blockAccess.isAirBlock(par2, par3 + 1, par4 - 1))
3393                    {
3394                        var6.addVertexWithUV(var50, (double)(par3 + 1), var44, var30, var32);
3395                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var30, var34);
3396                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var28, var34);
3397                        var6.addVertexWithUV(var52, (double)(par3 + 1), var44, var28, var32);
3398                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var30, var32);
3399                        var6.addVertexWithUV(var50, (double)(par3 + 1), var44, var30, var34);
3400                        var6.addVertexWithUV(var52, (double)(par3 + 1), var44, var28, var34);
3401                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var28, var32);
3402                    }
3403    
3404                    if (par3 < var5 - 1 && this.blockAccess.isAirBlock(par2, par3 + 1, par4 + 1))
3405                    {
3406                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var28, var34);
3407                        var6.addVertexWithUV(var50, (double)(par3 + 1), var48, var28, var36);
3408                        var6.addVertexWithUV(var52, (double)(par3 + 1), var48, var30, var36);
3409                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var30, var34);
3410                        var6.addVertexWithUV(var50, (double)(par3 + 1), var48, var28, var34);
3411                        var6.addVertexWithUV(var50, (double)(par3 + 1), var46, var28, var36);
3412                        var6.addVertexWithUV(var52, (double)(par3 + 1), var46, var30, var36);
3413                        var6.addVertexWithUV(var52, (double)(par3 + 1), var48, var30, var34);
3414                    }
3415                }
3416    
3417                if (var63)
3418                {
3419                    var6.addVertexWithUV(var52, (double)par3, var48, var30, var36);
3420                    var6.addVertexWithUV(var52, (double)par3, var44, var30, var32);
3421                    var6.addVertexWithUV(var50, (double)par3, var44, var28, var32);
3422                    var6.addVertexWithUV(var50, (double)par3, var48, var28, var36);
3423                    var6.addVertexWithUV(var52, (double)par3, var44, var30, var36);
3424                    var6.addVertexWithUV(var52, (double)par3, var48, var30, var32);
3425                    var6.addVertexWithUV(var50, (double)par3, var48, var28, var32);
3426                    var6.addVertexWithUV(var50, (double)par3, var44, var28, var36);
3427                }
3428                else
3429                {
3430                    if (par3 > 1 && this.blockAccess.isAirBlock(par2, par3 - 1, par4 - 1))
3431                    {
3432                        var6.addVertexWithUV(var50, (double)par3, var44, var30, var32);
3433                        var6.addVertexWithUV(var50, (double)par3, var46, var30, var34);
3434                        var6.addVertexWithUV(var52, (double)par3, var46, var28, var34);
3435                        var6.addVertexWithUV(var52, (double)par3, var44, var28, var32);
3436                        var6.addVertexWithUV(var50, (double)par3, var46, var30, var32);
3437                        var6.addVertexWithUV(var50, (double)par3, var44, var30, var34);
3438                        var6.addVertexWithUV(var52, (double)par3, var44, var28, var34);
3439                        var6.addVertexWithUV(var52, (double)par3, var46, var28, var32);
3440                    }
3441    
3442                    if (par3 > 1 && this.blockAccess.isAirBlock(par2, par3 - 1, par4 + 1))
3443                    {
3444                        var6.addVertexWithUV(var50, (double)par3, var46, var28, var34);
3445                        var6.addVertexWithUV(var50, (double)par3, var48, var28, var36);
3446                        var6.addVertexWithUV(var52, (double)par3, var48, var30, var36);
3447                        var6.addVertexWithUV(var52, (double)par3, var46, var30, var34);
3448                        var6.addVertexWithUV(var50, (double)par3, var48, var28, var34);
3449                        var6.addVertexWithUV(var50, (double)par3, var46, var28, var36);
3450                        var6.addVertexWithUV(var52, (double)par3, var46, var30, var36);
3451                        var6.addVertexWithUV(var52, (double)par3, var48, var30, var34);
3452                    }
3453                }
3454            }
3455    
3456            return true;
3457        }
3458    
3459        /**
3460         * Renders any block requiring croseed squares such as reeds, flowers, and mushrooms
3461         */
3462        public boolean renderCrossedSquares(Block par1Block, int par2, int par3, int par4)
3463        {
3464            Tessellator var5 = Tessellator.instance;
3465            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
3466            float var6 = 1.0F;
3467            int var7 = par1Block.colorMultiplier(this.blockAccess, par2, par3, par4);
3468            float var8 = (float)(var7 >> 16 & 255) / 255.0F;
3469            float var9 = (float)(var7 >> 8 & 255) / 255.0F;
3470            float var10 = (float)(var7 & 255) / 255.0F;
3471    
3472            if (EntityRenderer.anaglyphEnable)
3473            {
3474                float var11 = (var8 * 30.0F + var9 * 59.0F + var10 * 11.0F) / 100.0F;
3475                float var12 = (var8 * 30.0F + var9 * 70.0F) / 100.0F;
3476                float var13 = (var8 * 30.0F + var10 * 70.0F) / 100.0F;
3477                var8 = var11;
3478                var9 = var12;
3479                var10 = var13;
3480            }
3481    
3482            var5.setColorOpaque_F(var6 * var8, var6 * var9, var6 * var10);
3483            double var19 = (double)par2;
3484            double var20 = (double)par3;
3485            double var15 = (double)par4;
3486    
3487            if (par1Block == Block.tallGrass)
3488            {
3489                long var17 = (long)(par2 * 3129871) ^(long)par4 * 116129781L ^(long)par3;
3490                var17 = var17 * var17 * 42317861L + var17 * 11L;
3491                var19 += ((double)((float)(var17 >> 16 & 15L) / 15.0F) - 0.5D) * 0.5D;
3492                var20 += ((double)((float)(var17 >> 20 & 15L) / 15.0F) - 1.0D) * 0.2D;
3493                var15 += ((double)((float)(var17 >> 24 & 15L) / 15.0F) - 0.5D) * 0.5D;
3494            }
3495    
3496            this.drawCrossedSquares(par1Block, this.blockAccess.getBlockMetadata(par2, par3, par4), var19, var20, var15, 1.0F);
3497            return true;
3498        }
3499    
3500        /**
3501         * Render block stem
3502         */
3503        public boolean renderBlockStem(Block par1Block, int par2, int par3, int par4)
3504        {
3505            BlockStem var5 = (BlockStem)par1Block;
3506            Tessellator var6 = Tessellator.instance;
3507            var6.setBrightness(var5.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
3508            float var7 = 1.0F;
3509            int var8 = var5.colorMultiplier(this.blockAccess, par2, par3, par4);
3510            float var9 = (float)(var8 >> 16 & 255) / 255.0F;
3511            float var10 = (float)(var8 >> 8 & 255) / 255.0F;
3512            float var11 = (float)(var8 & 255) / 255.0F;
3513    
3514            if (EntityRenderer.anaglyphEnable)
3515            {
3516                float var12 = (var9 * 30.0F + var10 * 59.0F + var11 * 11.0F) / 100.0F;
3517                float var13 = (var9 * 30.0F + var10 * 70.0F) / 100.0F;
3518                float var14 = (var9 * 30.0F + var11 * 70.0F) / 100.0F;
3519                var9 = var12;
3520                var10 = var13;
3521                var11 = var14;
3522            }
3523    
3524            var6.setColorOpaque_F(var7 * var9, var7 * var10, var7 * var11);
3525            var5.setBlockBoundsBasedOnState(this.blockAccess, par2, par3, par4);
3526            int var15 = var5.getState(this.blockAccess, par2, par3, par4);
3527    
3528            if (var15 < 0)
3529            {
3530                this.renderBlockStemSmall(var5, this.blockAccess.getBlockMetadata(par2, par3, par4), this.field_83024_j, (double)par2, (double)((float)par3 - 0.0625F), (double)par4);
3531            }
3532            else
3533            {
3534                this.renderBlockStemSmall(var5, this.blockAccess.getBlockMetadata(par2, par3, par4), 0.5D, (double)par2, (double)((float)par3 - 0.0625F), (double)par4);
3535                this.renderBlockStemBig(var5, this.blockAccess.getBlockMetadata(par2, par3, par4), var15, this.field_83024_j, (double)par2, (double)((float)par3 - 0.0625F), (double)par4);
3536            }
3537    
3538            return true;
3539        }
3540    
3541        /**
3542         * Render block crops
3543         */
3544        public boolean renderBlockCrops(Block par1Block, int par2, int par3, int par4)
3545        {
3546            Tessellator var5 = Tessellator.instance;
3547            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
3548            var5.setColorOpaque_F(1.0F, 1.0F, 1.0F);
3549            this.renderBlockCropsImpl(par1Block, this.blockAccess.getBlockMetadata(par2, par3, par4), (double)par2, (double)((float)par3 - 0.0625F), (double)par4);
3550            return true;
3551        }
3552    
3553        /**
3554         * Renders a torch at the given coordinates, with the base slanting at the given delta
3555         */
3556        public void renderTorchAtAngle(Block par1Block, double par2, double par4, double par6, double par8, double par10)
3557        {
3558            Tessellator var12 = Tessellator.instance;
3559            int var13 = par1Block.getBlockTextureFromSide(0);
3560    
3561            if (this.overrideBlockTexture >= 0)
3562            {
3563                var13 = this.overrideBlockTexture;
3564            }
3565    
3566            int var14 = (var13 & 15) << 4;
3567            int var15 = var13 & 240;
3568            float var16 = (float)var14 / 256.0F;
3569            float var17 = ((float)var14 + 15.99F) / 256.0F;
3570            float var18 = (float)var15 / 256.0F;
3571            float var19 = ((float)var15 + 15.99F) / 256.0F;
3572            double var20 = (double)var16 + 0.02734375D;
3573            double var22 = (double)var18 + 0.0234375D;
3574            double var24 = (double)var16 + 0.03515625D;
3575            double var26 = (double)var18 + 0.03125D;
3576            double var28 = (double)var16 + 0.02734375D;
3577            double var30 = (double)var18 + 0.05078125D;
3578            double var32 = (double)var16 + 0.03515625D;
3579            double var34 = (double)var18 + 0.05859375D;
3580            par2 += 0.5D;
3581            par6 += 0.5D;
3582            double var36 = par2 - 0.5D;
3583            double var38 = par2 + 0.5D;
3584            double var40 = par6 - 0.5D;
3585            double var42 = par6 + 0.5D;
3586            double var44 = 0.0625D;
3587            double var46 = 0.625D;
3588            var12.addVertexWithUV(par2 + par8 * (1.0D - var46) - var44, par4 + var46, par6 + par10 * (1.0D - var46) - var44, var20, var22);
3589            var12.addVertexWithUV(par2 + par8 * (1.0D - var46) - var44, par4 + var46, par6 + par10 * (1.0D - var46) + var44, var20, var26);
3590            var12.addVertexWithUV(par2 + par8 * (1.0D - var46) + var44, par4 + var46, par6 + par10 * (1.0D - var46) + var44, var24, var26);
3591            var12.addVertexWithUV(par2 + par8 * (1.0D - var46) + var44, par4 + var46, par6 + par10 * (1.0D - var46) - var44, var24, var22);
3592            var12.addVertexWithUV(par2 + var44 + par8, par4, par6 - var44 + par10, var32, var30);
3593            var12.addVertexWithUV(par2 + var44 + par8, par4, par6 + var44 + par10, var32, var34);
3594            var12.addVertexWithUV(par2 - var44 + par8, par4, par6 + var44 + par10, var28, var34);
3595            var12.addVertexWithUV(par2 - var44 + par8, par4, par6 - var44 + par10, var28, var30);
3596            var12.addVertexWithUV(par2 - var44, par4 + 1.0D, var40, (double)var16, (double)var18);
3597            var12.addVertexWithUV(par2 - var44 + par8, par4 + 0.0D, var40 + par10, (double)var16, (double)var19);
3598            var12.addVertexWithUV(par2 - var44 + par8, par4 + 0.0D, var42 + par10, (double)var17, (double)var19);
3599            var12.addVertexWithUV(par2 - var44, par4 + 1.0D, var42, (double)var17, (double)var18);
3600            var12.addVertexWithUV(par2 + var44, par4 + 1.0D, var42, (double)var16, (double)var18);
3601            var12.addVertexWithUV(par2 + par8 + var44, par4 + 0.0D, var42 + par10, (double)var16, (double)var19);
3602            var12.addVertexWithUV(par2 + par8 + var44, par4 + 0.0D, var40 + par10, (double)var17, (double)var19);
3603            var12.addVertexWithUV(par2 + var44, par4 + 1.0D, var40, (double)var17, (double)var18);
3604            var12.addVertexWithUV(var36, par4 + 1.0D, par6 + var44, (double)var16, (double)var18);
3605            var12.addVertexWithUV(var36 + par8, par4 + 0.0D, par6 + var44 + par10, (double)var16, (double)var19);
3606            var12.addVertexWithUV(var38 + par8, par4 + 0.0D, par6 + var44 + par10, (double)var17, (double)var19);
3607            var12.addVertexWithUV(var38, par4 + 1.0D, par6 + var44, (double)var17, (double)var18);
3608            var12.addVertexWithUV(var38, par4 + 1.0D, par6 - var44, (double)var16, (double)var18);
3609            var12.addVertexWithUV(var38 + par8, par4 + 0.0D, par6 - var44 + par10, (double)var16, (double)var19);
3610            var12.addVertexWithUV(var36 + par8, par4 + 0.0D, par6 - var44 + par10, (double)var17, (double)var19);
3611            var12.addVertexWithUV(var36, par4 + 1.0D, par6 - var44, (double)var17, (double)var18);
3612        }
3613    
3614        /**
3615         * Utility function to draw crossed swuares
3616         */
3617        public void drawCrossedSquares(Block par1Block, int par2, double par3, double par5, double par7, float par9)
3618        {
3619            Tessellator var10 = Tessellator.instance;
3620            int var11 = par1Block.getBlockTextureFromSideAndMetadata(0, par2);
3621    
3622            if (this.overrideBlockTexture >= 0)
3623            {
3624                var11 = this.overrideBlockTexture;
3625            }
3626    
3627            int var12 = (var11 & 15) << 4;
3628            int var13 = var11 & 240;
3629            double var14 = (double)((float)var12 / 256.0F);
3630            double var16 = (double)(((float)var12 + 15.99F) / 256.0F);
3631            double var18 = (double)((float)var13 / 256.0F);
3632            double var20 = (double)(((float)var13 + 15.99F) / 256.0F);
3633            double var22 = 0.45D * (double)par9;
3634            double var24 = par3 + 0.5D - var22;
3635            double var26 = par3 + 0.5D + var22;
3636            double var28 = par7 + 0.5D - var22;
3637            double var30 = par7 + 0.5D + var22;
3638            var10.addVertexWithUV(var24, par5 + (double)par9, var28, var14, var18);
3639            var10.addVertexWithUV(var24, par5 + 0.0D, var28, var14, var20);
3640            var10.addVertexWithUV(var26, par5 + 0.0D, var30, var16, var20);
3641            var10.addVertexWithUV(var26, par5 + (double)par9, var30, var16, var18);
3642            var10.addVertexWithUV(var26, par5 + (double)par9, var30, var14, var18);
3643            var10.addVertexWithUV(var26, par5 + 0.0D, var30, var14, var20);
3644            var10.addVertexWithUV(var24, par5 + 0.0D, var28, var16, var20);
3645            var10.addVertexWithUV(var24, par5 + (double)par9, var28, var16, var18);
3646            var10.addVertexWithUV(var24, par5 + (double)par9, var30, var14, var18);
3647            var10.addVertexWithUV(var24, par5 + 0.0D, var30, var14, var20);
3648            var10.addVertexWithUV(var26, par5 + 0.0D, var28, var16, var20);
3649            var10.addVertexWithUV(var26, par5 + (double)par9, var28, var16, var18);
3650            var10.addVertexWithUV(var26, par5 + (double)par9, var28, var14, var18);
3651            var10.addVertexWithUV(var26, par5 + 0.0D, var28, var14, var20);
3652            var10.addVertexWithUV(var24, par5 + 0.0D, var30, var16, var20);
3653            var10.addVertexWithUV(var24, par5 + (double)par9, var30, var16, var18);
3654        }
3655    
3656        /**
3657         * Render block stem small
3658         */
3659        public void renderBlockStemSmall(Block par1Block, int par2, double par3, double par5, double par7, double par9)
3660        {
3661            Tessellator var11 = Tessellator.instance;
3662            int var12 = par1Block.getBlockTextureFromSideAndMetadata(0, par2);
3663    
3664            if (this.overrideBlockTexture >= 0)
3665            {
3666                var12 = this.overrideBlockTexture;
3667            }
3668    
3669            int var13 = (var12 & 15) << 4;
3670            int var14 = var12 & 240;
3671            double var15 = (double)((float)var13 / 256.0F);
3672            double var17 = (double)(((float)var13 + 15.99F) / 256.0F);
3673            double var19 = (double)((float)var14 / 256.0F);
3674            double var21 = ((double)var14 + 15.989999771118164D * par3) / 256.0D;
3675            double var23 = par5 + 0.5D - 0.44999998807907104D;
3676            double var25 = par5 + 0.5D + 0.44999998807907104D;
3677            double var27 = par9 + 0.5D - 0.44999998807907104D;
3678            double var29 = par9 + 0.5D + 0.44999998807907104D;
3679            var11.addVertexWithUV(var23, par7 + par3, var27, var15, var19);
3680            var11.addVertexWithUV(var23, par7 + 0.0D, var27, var15, var21);
3681            var11.addVertexWithUV(var25, par7 + 0.0D, var29, var17, var21);
3682            var11.addVertexWithUV(var25, par7 + par3, var29, var17, var19);
3683            var11.addVertexWithUV(var25, par7 + par3, var29, var15, var19);
3684            var11.addVertexWithUV(var25, par7 + 0.0D, var29, var15, var21);
3685            var11.addVertexWithUV(var23, par7 + 0.0D, var27, var17, var21);
3686            var11.addVertexWithUV(var23, par7 + par3, var27, var17, var19);
3687            var11.addVertexWithUV(var23, par7 + par3, var29, var15, var19);
3688            var11.addVertexWithUV(var23, par7 + 0.0D, var29, var15, var21);
3689            var11.addVertexWithUV(var25, par7 + 0.0D, var27, var17, var21);
3690            var11.addVertexWithUV(var25, par7 + par3, var27, var17, var19);
3691            var11.addVertexWithUV(var25, par7 + par3, var27, var15, var19);
3692            var11.addVertexWithUV(var25, par7 + 0.0D, var27, var15, var21);
3693            var11.addVertexWithUV(var23, par7 + 0.0D, var29, var17, var21);
3694            var11.addVertexWithUV(var23, par7 + par3, var29, var17, var19);
3695        }
3696    
3697        /**
3698         * Render BlockLilyPad
3699         */
3700        public boolean renderBlockLilyPad(Block par1Block, int par2, int par3, int par4)
3701        {
3702            Tessellator var5 = Tessellator.instance;
3703            int var6 = par1Block.blockIndexInTexture;
3704    
3705            if (this.overrideBlockTexture >= 0)
3706            {
3707                var6 = this.overrideBlockTexture;
3708            }
3709    
3710            int var7 = (var6 & 15) << 4;
3711            int var8 = var6 & 240;
3712            float var9 = 0.015625F;
3713            double var10 = (double)((float)var7 / 256.0F);
3714            double var12 = (double)(((float)var7 + 15.99F) / 256.0F);
3715            double var14 = (double)((float)var8 / 256.0F);
3716            double var16 = (double)(((float)var8 + 15.99F) / 256.0F);
3717            long var18 = (long)(par2 * 3129871) ^(long)par4 * 116129781L ^(long)par3;
3718            var18 = var18 * var18 * 42317861L + var18 * 11L;
3719            int var20 = (int)(var18 >> 16 & 3L);
3720            var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
3721            float var21 = (float)par2 + 0.5F;
3722            float var22 = (float)par4 + 0.5F;
3723            float var23 = (float)(var20 & 1) * 0.5F * (float)(1 - var20 / 2 % 2 * 2);
3724            float var24 = (float)(var20 + 1 & 1) * 0.5F * (float)(1 - (var20 + 1) / 2 % 2 * 2);
3725            var5.setColorOpaque_I(par1Block.getBlockColor());
3726            var5.addVertexWithUV((double)(var21 + var23 - var24), (double)((float)par3 + var9), (double)(var22 + var23 + var24), var10, var14);
3727            var5.addVertexWithUV((double)(var21 + var23 + var24), (double)((float)par3 + var9), (double)(var22 - var23 + var24), var12, var14);
3728            var5.addVertexWithUV((double)(var21 - var23 + var24), (double)((float)par3 + var9), (double)(var22 - var23 - var24), var12, var16);
3729            var5.addVertexWithUV((double)(var21 - var23 - var24), (double)((float)par3 + var9), (double)(var22 + var23 - var24), var10, var16);
3730            var5.setColorOpaque_I((par1Block.getBlockColor() & 16711422) >> 1);
3731            var5.addVertexWithUV((double)(var21 - var23 - var24), (double)((float)par3 + var9), (double)(var22 + var23 - var24), var10, var16);
3732            var5.addVertexWithUV((double)(var21 - var23 + var24), (double)((float)par3 + var9), (double)(var22 - var23 - var24), var12, var16);
3733            var5.addVertexWithUV((double)(var21 + var23 + var24), (double)((float)par3 + var9), (double)(var22 - var23 + var24), var12, var14);
3734            var5.addVertexWithUV((double)(var21 + var23 - var24), (double)((float)par3 + var9), (double)(var22 + var23 + var24), var10, var14);
3735            return true;
3736        }
3737    
3738        /**
3739         * Render block stem big
3740         */
3741        public void renderBlockStemBig(Block par1Block, int par2, int par3, double par4, double par6, double par8, double par10)
3742        {
3743            Tessellator var12 = Tessellator.instance;
3744            int var13 = par1Block.getBlockTextureFromSideAndMetadata(0, par2) + 16;
3745    
3746            if (this.overrideBlockTexture >= 0)
3747            {
3748                var13 = this.overrideBlockTexture;
3749            }
3750    
3751            int var14 = (var13 & 15) << 4;
3752            int var15 = var13 & 240;
3753            double var16 = (double)((float)var14 / 256.0F);
3754            double var18 = (double)(((float)var14 + 15.99F) / 256.0F);
3755            double var20 = (double)((float)var15 / 256.0F);
3756            double var22 = ((double)var15 + 15.989999771118164D * par4) / 256.0D;
3757            double var24 = par6 + 0.5D - 0.5D;
3758            double var26 = par6 + 0.5D + 0.5D;
3759            double var28 = par10 + 0.5D - 0.5D;
3760            double var30 = par10 + 0.5D + 0.5D;
3761            double var32 = par6 + 0.5D;
3762            double var34 = par10 + 0.5D;
3763    
3764            if ((par3 + 1) / 2 % 2 == 1)
3765            {
3766                double var36 = var18;
3767                var18 = var16;
3768                var16 = var36;
3769            }
3770    
3771            if (par3 < 2)
3772            {
3773                var12.addVertexWithUV(var24, par8 + par4, var34, var16, var20);
3774                var12.addVertexWithUV(var24, par8 + 0.0D, var34, var16, var22);
3775                var12.addVertexWithUV(var26, par8 + 0.0D, var34, var18, var22);
3776                var12.addVertexWithUV(var26, par8 + par4, var34, var18, var20);
3777                var12.addVertexWithUV(var26, par8 + par4, var34, var18, var20);
3778                var12.addVertexWithUV(var26, par8 + 0.0D, var34, var18, var22);
3779                var12.addVertexWithUV(var24, par8 + 0.0D, var34, var16, var22);
3780                var12.addVertexWithUV(var24, par8 + par4, var34, var16, var20);
3781            }
3782            else
3783            {
3784                var12.addVertexWithUV(var32, par8 + par4, var30, var16, var20);
3785                var12.addVertexWithUV(var32, par8 + 0.0D, var30, var16, var22);
3786                var12.addVertexWithUV(var32, par8 + 0.0D, var28, var18, var22);
3787                var12.addVertexWithUV(var32, par8 + par4, var28, var18, var20);
3788                var12.addVertexWithUV(var32, par8 + par4, var28, var18, var20);
3789                var12.addVertexWithUV(var32, par8 + 0.0D, var28, var18, var22);
3790                var12.addVertexWithUV(var32, par8 + 0.0D, var30, var16, var22);
3791                var12.addVertexWithUV(var32, par8 + par4, var30, var16, var20);
3792            }
3793        }
3794    
3795        /**
3796         * Render block crops implementation
3797         */
3798        public void renderBlockCropsImpl(Block par1Block, int par2, double par3, double par5, double par7)
3799        {
3800            Tessellator var9 = Tessellator.instance;
3801            int var10 = par1Block.getBlockTextureFromSideAndMetadata(0, par2);
3802    
3803            if (this.overrideBlockTexture >= 0)
3804            {
3805                var10 = this.overrideBlockTexture;
3806            }
3807    
3808            int var11 = (var10 & 15) << 4;
3809            int var12 = var10 & 240;
3810            double var13 = (double)((float)var11 / 256.0F);
3811            double var15 = (double)(((float)var11 + 15.99F) / 256.0F);
3812            double var17 = (double)((float)var12 / 256.0F);
3813            double var19 = (double)(((float)var12 + 15.99F) / 256.0F);
3814            double var21 = par3 + 0.5D - 0.25D;
3815            double var23 = par3 + 0.5D + 0.25D;
3816            double var25 = par7 + 0.5D - 0.5D;
3817            double var27 = par7 + 0.5D + 0.5D;
3818            var9.addVertexWithUV(var21, par5 + 1.0D, var25, var13, var17);
3819            var9.addVertexWithUV(var21, par5 + 0.0D, var25, var13, var19);
3820            var9.addVertexWithUV(var21, par5 + 0.0D, var27, var15, var19);
3821            var9.addVertexWithUV(var21, par5 + 1.0D, var27, var15, var17);
3822            var9.addVertexWithUV(var21, par5 + 1.0D, var27, var13, var17);
3823            var9.addVertexWithUV(var21, par5 + 0.0D, var27, var13, var19);
3824            var9.addVertexWithUV(var21, par5 + 0.0D, var25, var15, var19);
3825            var9.addVertexWithUV(var21, par5 + 1.0D, var25, var15, var17);
3826            var9.addVertexWithUV(var23, par5 + 1.0D, var27, var13, var17);
3827            var9.addVertexWithUV(var23, par5 + 0.0D, var27, var13, var19);
3828            var9.addVertexWithUV(var23, par5 + 0.0D, var25, var15, var19);
3829            var9.addVertexWithUV(var23, par5 + 1.0D, var25, var15, var17);
3830            var9.addVertexWithUV(var23, par5 + 1.0D, var25, var13, var17);
3831            var9.addVertexWithUV(var23, par5 + 0.0D, var25, var13, var19);
3832            var9.addVertexWithUV(var23, par5 + 0.0D, var27, var15, var19);
3833            var9.addVertexWithUV(var23, par5 + 1.0D, var27, var15, var17);
3834            var21 = par3 + 0.5D - 0.5D;
3835            var23 = par3 + 0.5D + 0.5D;
3836            var25 = par7 + 0.5D - 0.25D;
3837            var27 = par7 + 0.5D + 0.25D;
3838            var9.addVertexWithUV(var21, par5 + 1.0D, var25, var13, var17);
3839            var9.addVertexWithUV(var21, par5 + 0.0D, var25, var13, var19);
3840            var9.addVertexWithUV(var23, par5 + 0.0D, var25, var15, var19);
3841            var9.addVertexWithUV(var23, par5 + 1.0D, var25, var15, var17);
3842            var9.addVertexWithUV(var23, par5 + 1.0D, var25, var13, var17);
3843            var9.addVertexWithUV(var23, par5 + 0.0D, var25, var13, var19);
3844            var9.addVertexWithUV(var21, par5 + 0.0D, var25, var15, var19);
3845            var9.addVertexWithUV(var21, par5 + 1.0D, var25, var15, var17);
3846            var9.addVertexWithUV(var23, par5 + 1.0D, var27, var13, var17);
3847            var9.addVertexWithUV(var23, par5 + 0.0D, var27, var13, var19);
3848            var9.addVertexWithUV(var21, par5 + 0.0D, var27, var15, var19);
3849            var9.addVertexWithUV(var21, par5 + 1.0D, var27, var15, var17);
3850            var9.addVertexWithUV(var21, par5 + 1.0D, var27, var13, var17);
3851            var9.addVertexWithUV(var21, par5 + 0.0D, var27, var13, var19);
3852            var9.addVertexWithUV(var23, par5 + 0.0D, var27, var15, var19);
3853            var9.addVertexWithUV(var23, par5 + 1.0D, var27, var15, var17);
3854        }
3855    
3856        /**
3857         * Renders a block based on the BlockFluids class at the given coordinates
3858         */
3859        public boolean renderBlockFluids(Block par1Block, int par2, int par3, int par4)
3860        {
3861            Tessellator var5 = Tessellator.instance;
3862            int var6 = par1Block.colorMultiplier(this.blockAccess, par2, par3, par4);
3863            float var7 = (float)(var6 >> 16 & 255) / 255.0F;
3864            float var8 = (float)(var6 >> 8 & 255) / 255.0F;
3865            float var9 = (float)(var6 & 255) / 255.0F;
3866            boolean var10 = par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 + 1, par4, 1);
3867            boolean var11 = par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 - 1, par4, 0);
3868            boolean[] var12 = new boolean[] {par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 - 1, 2), par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 + 1, 3), par1Block.shouldSideBeRendered(this.blockAccess, par2 - 1, par3, par4, 4), par1Block.shouldSideBeRendered(this.blockAccess, par2 + 1, par3, par4, 5)};
3869    
3870            if (!var10 && !var11 && !var12[0] && !var12[1] && !var12[2] && !var12[3])
3871            {
3872                return false;
3873            }
3874            else
3875            {
3876                boolean var13 = false;
3877                float var14 = 0.5F;
3878                float var15 = 1.0F;
3879                float var16 = 0.8F;
3880                float var17 = 0.6F;
3881                double var18 = 0.0D;
3882                double var20 = 1.0D;
3883                Material var22 = par1Block.blockMaterial;
3884                int var23 = this.blockAccess.getBlockMetadata(par2, par3, par4);
3885                double var24 = (double)this.getFluidHeight(par2, par3, par4, var22);
3886                double var26 = (double)this.getFluidHeight(par2, par3, par4 + 1, var22);
3887                double var28 = (double)this.getFluidHeight(par2 + 1, par3, par4 + 1, var22);
3888                double var30 = (double)this.getFluidHeight(par2 + 1, par3, par4, var22);
3889                double var32 = 0.0010000000474974513D;
3890                int var34;
3891                int var37;
3892    
3893                if (this.renderAllFaces || var10)
3894                {
3895                    var13 = true;
3896                    var34 = par1Block.getBlockTextureFromSideAndMetadata(1, var23);
3897                    float var35 = (float)BlockFluid.getFlowDirection(this.blockAccess, par2, par3, par4, var22);
3898    
3899                    if (var35 > -999.0F)
3900                    {
3901                        var34 = par1Block.getBlockTextureFromSideAndMetadata(2, var23);
3902                    }
3903    
3904                    var24 -= var32;
3905                    var26 -= var32;
3906                    var28 -= var32;
3907                    var30 -= var32;
3908                    int var36 = (var34 & 15) << 4;
3909                    var37 = var34 & 240;
3910                    double var38 = ((double)var36 + 8.0D) / 256.0D;
3911                    double var40 = ((double)var37 + 8.0D) / 256.0D;
3912    
3913                    if (var35 < -999.0F)
3914                    {
3915                        var35 = 0.0F;
3916                    }
3917                    else
3918                    {
3919                        var38 = (double)((float)(var36 + 16) / 256.0F);
3920                        var40 = (double)((float)(var37 + 16) / 256.0F);
3921                    }
3922    
3923                    double var42 = (double)(MathHelper.sin(var35) * 8.0F) / 256.0D;
3924                    double var44 = (double)(MathHelper.cos(var35) * 8.0F) / 256.0D;
3925                    var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
3926                    float var46 = 1.0F;
3927                    var5.setColorOpaque_F(var15 * var46 * var7, var15 * var46 * var8, var15 * var46 * var9);
3928                    var5.addVertexWithUV((double)(par2 + 0), (double)par3 + var24, (double)(par4 + 0), var38 - var44 - var42, var40 - var44 + var42);
3929                    var5.addVertexWithUV((double)(par2 + 0), (double)par3 + var26, (double)(par4 + 1), var38 - var44 + var42, var40 + var44 + var42);
3930                    var5.addVertexWithUV((double)(par2 + 1), (double)par3 + var28, (double)(par4 + 1), var38 + var44 + var42, var40 + var44 - var42);
3931                    var5.addVertexWithUV((double)(par2 + 1), (double)par3 + var30, (double)(par4 + 0), var38 + var44 - var42, var40 - var44 - var42);
3932                }
3933    
3934                if (this.renderAllFaces || var11)
3935                {
3936                    var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4));
3937                    float var65 = 1.0F;
3938                    var5.setColorOpaque_F(var14 * var65, var14 * var65, var14 * var65);
3939                    this.renderBottomFace(par1Block, (double)par2, (double)par3 + var32, (double)par4, par1Block.getBlockTextureFromSide(0));
3940                    var13 = true;
3941                }
3942    
3943                for (var34 = 0; var34 < 4; ++var34)
3944                {
3945                    int var64 = par2;
3946                    var37 = par4;
3947    
3948                    if (var34 == 0)
3949                    {
3950                        var37 = par4 - 1;
3951                    }
3952    
3953                    if (var34 == 1)
3954                    {
3955                        ++var37;
3956                    }
3957    
3958                    if (var34 == 2)
3959                    {
3960                        var64 = par2 - 1;
3961                    }
3962    
3963                    if (var34 == 3)
3964                    {
3965                        ++var64;
3966                    }
3967    
3968                    int var66 = par1Block.getBlockTextureFromSideAndMetadata(var34 + 2, var23);
3969                    int var39 = (var66 & 15) << 4;
3970                    int var67 = var66 & 240;
3971    
3972                    if (this.renderAllFaces || var12[var34])
3973                    {
3974                        double var43;
3975                        double var41;
3976                        double var47;
3977                        double var45;
3978                        double var51;
3979                        double var49;
3980    
3981                        if (var34 == 0)
3982                        {
3983                            var41 = var24;
3984                            var43 = var30;
3985                            var45 = (double)par2;
3986                            var49 = (double)(par2 + 1);
3987                            var47 = (double)par4 + var32;
3988                            var51 = (double)par4 + var32;
3989                        }
3990                        else if (var34 == 1)
3991                        {
3992                            var41 = var28;
3993                            var43 = var26;
3994                            var45 = (double)(par2 + 1);
3995                            var49 = (double)par2;
3996                            var47 = (double)(par4 + 1) - var32;
3997                            var51 = (double)(par4 + 1) - var32;
3998                        }
3999                        else if (var34 == 2)
4000                        {
4001                            var41 = var26;
4002                            var43 = var24;
4003                            var45 = (double)par2 + var32;
4004                            var49 = (double)par2 + var32;
4005                            var47 = (double)(par4 + 1);
4006                            var51 = (double)par4;
4007                        }
4008                        else
4009                        {
4010                            var41 = var30;
4011                            var43 = var28;
4012                            var45 = (double)(par2 + 1) - var32;
4013                            var49 = (double)(par2 + 1) - var32;
4014                            var47 = (double)par4;
4015                            var51 = (double)(par4 + 1);
4016                        }
4017    
4018                        var13 = true;
4019                        double var53 = (double)((float)(var39 + 0) / 256.0F);
4020                        double var55 = ((double)(var39 + 16) - 0.01D) / 256.0D;
4021                        double var57 = ((double)var67 + (1.0D - var41) * 16.0D) / 256.0D;
4022                        double var59 = ((double)var67 + (1.0D - var43) * 16.0D) / 256.0D;
4023                        double var61 = ((double)(var67 + 16) - 0.01D) / 256.0D;
4024                        var5.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, var64, par3, var37));
4025                        float var63 = 1.0F;
4026    
4027                        if (var34 < 2)
4028                        {
4029                            var63 *= var16;
4030                        }
4031                        else
4032                        {
4033                            var63 *= var17;
4034                        }
4035    
4036                        var5.setColorOpaque_F(var15 * var63 * var7, var15 * var63 * var8, var15 * var63 * var9);
4037                        var5.addVertexWithUV(var45, (double)par3 + var41, var47, var53, var57);
4038                        var5.addVertexWithUV(var49, (double)par3 + var43, var51, var55, var59);
4039                        var5.addVertexWithUV(var49, (double)(par3 + 0), var51, var55, var61);
4040                        var5.addVertexWithUV(var45, (double)(par3 + 0), var47, var53, var61);
4041                    }
4042                }
4043    
4044                this.field_83027_i = var18;
4045                this.field_83024_j = var20;
4046                return var13;
4047            }
4048        }
4049    
4050        /**
4051         * Get fluid height
4052         */
4053        public float getFluidHeight(int par1, int par2, int par3, Material par4Material)
4054        {
4055            int var5 = 0;
4056            float var6 = 0.0F;
4057    
4058            for (int var7 = 0; var7 < 4; ++var7)
4059            {
4060                int var8 = par1 - (var7 & 1);
4061                int var10 = par3 - (var7 >> 1 & 1);
4062    
4063                if (this.blockAccess.getBlockMaterial(var8, par2 + 1, var10) == par4Material)
4064                {
4065                    return 1.0F;
4066                }
4067    
4068                Material var11 = this.blockAccess.getBlockMaterial(var8, par2, var10);
4069    
4070                if (var11 == par4Material)
4071                {
4072                    int var12 = this.blockAccess.getBlockMetadata(var8, par2, var10);
4073    
4074                    if (var12 >= 8 || var12 == 0)
4075                    {
4076                        var6 += BlockFluid.getFluidHeightPercent(var12) * 10.0F;
4077                        var5 += 10;
4078                    }
4079    
4080                    var6 += BlockFluid.getFluidHeightPercent(var12);
4081                    ++var5;
4082                }
4083                else if (!var11.isSolid())
4084                {
4085                    ++var6;
4086                    ++var5;
4087                }
4088            }
4089    
4090            return 1.0F - var6 / (float)var5;
4091        }
4092    
4093        public void func_78588_a(Block par1Block, World par2World, int par3, int par4, int par5, int par6)
4094        {
4095            float var7 = 0.5F;
4096            float var8 = 1.0F;
4097            float var9 = 0.8F;
4098            float var10 = 0.6F;
4099            Tessellator var11 = Tessellator.instance;
4100            var11.startDrawingQuads();
4101            var11.setBrightness(par1Block.getMixedBrightnessForBlock(par2World, par3, par4, par5));
4102            float var12 = 1.0F;
4103            float var13 = 1.0F;
4104    
4105            if (var13 < var12)
4106            {
4107                var13 = var12;
4108            }
4109    
4110            var11.setColorOpaque_F(var7 * var13, var7 * var13, var7 * var13);
4111            this.renderBottomFace(par1Block, -0.5D, -0.5D, -0.5D, par1Block.getBlockTextureFromSideAndMetadata(0, par6));
4112            var13 = 1.0F;
4113    
4114            if (var13 < var12)
4115            {
4116                var13 = var12;
4117            }
4118    
4119            var11.setColorOpaque_F(var8 * var13, var8 * var13, var8 * var13);
4120            this.renderTopFace(par1Block, -0.5D, -0.5D, -0.5D, par1Block.getBlockTextureFromSideAndMetadata(1, par6));
4121            var13 = 1.0F;
4122    
4123            if (var13 < var12)
4124            {
4125                var13 = var12;
4126            }
4127    
4128            var11.setColorOpaque_F(var9 * var13, var9 * var13, var9 * var13);
4129            this.renderEastFace(par1Block, -0.5D, -0.5D, -0.5D, par1Block.getBlockTextureFromSideAndMetadata(2, par6));
4130            var13 = 1.0F;
4131    
4132            if (var13 < var12)
4133            {
4134                var13 = var12;
4135            }
4136    
4137            var11.setColorOpaque_F(var9 * var13, var9 * var13, var9 * var13);
4138            this.renderWestFace(par1Block, -0.5D, -0.5D, -0.5D, par1Block.getBlockTextureFromSideAndMetadata(3, par6));
4139            var13 = 1.0F;
4140    
4141            if (var13 < var12)
4142            {
4143                var13 = var12;
4144            }
4145    
4146            var11.setColorOpaque_F(var10 * var13, var10 * var13, var10 * var13);
4147            this.renderNorthFace(par1Block, -0.5D, -0.5D, -0.5D, par1Block.getBlockTextureFromSideAndMetadata(4, par6));
4148            var13 = 1.0F;
4149    
4150            if (var13 < var12)
4151            {
4152                var13 = var12;
4153            }
4154    
4155            var11.setColorOpaque_F(var10 * var13, var10 * var13, var10 * var13);
4156            this.renderSouthFace(par1Block, -0.5D, -0.5D, -0.5D, par1Block.getBlockTextureFromSideAndMetadata(5, par6));
4157            var11.draw();
4158        }
4159    
4160        /**
4161         * Renders a standard cube block at the given coordinates
4162         */
4163        public boolean renderStandardBlock(Block par1Block, int par2, int par3, int par4)
4164        {
4165            int var5 = par1Block.colorMultiplier(this.blockAccess, par2, par3, par4);
4166            float var6 = (float)(var5 >> 16 & 255) / 255.0F;
4167            float var7 = (float)(var5 >> 8 & 255) / 255.0F;
4168            float var8 = (float)(var5 & 255) / 255.0F;
4169    
4170            if (EntityRenderer.anaglyphEnable)
4171            {
4172                float var9 = (var6 * 30.0F + var7 * 59.0F + var8 * 11.0F) / 100.0F;
4173                float var10 = (var6 * 30.0F + var7 * 70.0F) / 100.0F;
4174                float var11 = (var6 * 30.0F + var8 * 70.0F) / 100.0F;
4175                var6 = var9;
4176                var7 = var10;
4177                var8 = var11;
4178            }
4179    
4180            return Minecraft.isAmbientOcclusionEnabled() && Block.lightValue[par1Block.blockID] == 0 ? this.renderStandardBlockWithAmbientOcclusion(par1Block, par2, par3, par4, var6, var7, var8) : this.renderStandardBlockWithColorMultiplier(par1Block, par2, par3, par4, var6, var7, var8);
4181        }
4182    
4183        /**
4184         * Renders a log block at the given coordinates
4185         */
4186        public boolean renderBlockLog(Block par1Block, int par2, int par3, int par4)
4187        {
4188            int var5 = this.blockAccess.getBlockMetadata(par2, par3, par4);
4189            int var6 = var5 & 12;
4190    
4191            if (var6 == 4)
4192            {
4193                this.uvRotateEast = 1;
4194                this.uvRotateWest = 1;
4195                this.uvRotateTop = 1;
4196                this.uvRotateBottom = 1;
4197            }
4198            else if (var6 == 8)
4199            {
4200                this.uvRotateSouth = 1;
4201                this.uvRotateNorth = 1;
4202            }
4203    
4204            boolean var7 = this.renderStandardBlock(par1Block, par2, par3, par4);
4205            this.uvRotateSouth = 0;
4206            this.uvRotateEast = 0;
4207            this.uvRotateWest = 0;
4208            this.uvRotateNorth = 0;
4209            this.uvRotateTop = 0;
4210            this.uvRotateBottom = 0;
4211            return var7;
4212        }
4213    
4214        public boolean renderStandardBlockWithAmbientOcclusion(Block par1Block, int par2, int par3, int par4, float par5, float par6, float par7)
4215        {
4216            this.enableAO = true;
4217            boolean var8 = false;
4218            float var9 = this.lightValueOwn;
4219            float var10 = this.lightValueOwn;
4220            float var11 = this.lightValueOwn;
4221            float var12 = this.lightValueOwn;
4222            boolean var13 = true;
4223            boolean var14 = true;
4224            boolean var15 = true;
4225            boolean var16 = true;
4226            boolean var17 = true;
4227            boolean var18 = true;
4228            this.lightValueOwn = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4);
4229            this.aoLightValueXNeg = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4);
4230            this.aoLightValueYNeg = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4);
4231            this.aoLightValueZNeg = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 - 1);
4232            this.aoLightValueXPos = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4);
4233            this.aoLightValueYPos = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4);
4234            this.aoLightValueZPos = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 + 1);
4235            int var19 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4);
4236            int var20 = var19;
4237            int var21 = var19;
4238            int var22 = var19;
4239            int var23 = var19;
4240            int var24 = var19;
4241            int var25 = var19;
4242    
4243            if (this.field_83027_i <= 0.0D)
4244            {
4245                var21 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4);
4246            }
4247    
4248            if (this.field_83024_j >= 1.0D)
4249            {
4250                var24 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4);
4251            }
4252    
4253            if (this.field_83021_g <= 0.0D)
4254            {
4255                var20 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4);
4256            }
4257    
4258            if (this.field_83026_h >= 1.0D)
4259            {
4260                var23 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4);
4261            }
4262    
4263            if (this.field_83025_k <= 0.0D)
4264            {
4265                var22 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1);
4266            }
4267    
4268            if (this.field_83022_l >= 1.0D)
4269            {
4270                var25 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1);
4271            }
4272    
4273            Tessellator var26 = Tessellator.instance;
4274            var26.setBrightness(983055);
4275            this.aoGrassXYZPPC = Block.canBlockGrass[this.blockAccess.getBlockId(par2 + 1, par3 + 1, par4)];
4276            this.aoGrassXYZPNC = Block.canBlockGrass[this.blockAccess.getBlockId(par2 + 1, par3 - 1, par4)];
4277            this.aoGrassXYZPCP = Block.canBlockGrass[this.blockAccess.getBlockId(par2 + 1, par3, par4 + 1)];
4278            this.aoGrassXYZPCN = Block.canBlockGrass[this.blockAccess.getBlockId(par2 + 1, par3, par4 - 1)];
4279            this.aoGrassXYZNPC = Block.canBlockGrass[this.blockAccess.getBlockId(par2 - 1, par3 + 1, par4)];
4280            this.aoGrassXYZNNC = Block.canBlockGrass[this.blockAccess.getBlockId(par2 - 1, par3 - 1, par4)];
4281            this.aoGrassXYZNCN = Block.canBlockGrass[this.blockAccess.getBlockId(par2 - 1, par3, par4 - 1)];
4282            this.aoGrassXYZNCP = Block.canBlockGrass[this.blockAccess.getBlockId(par2 - 1, par3, par4 + 1)];
4283            this.aoGrassXYZCPP = Block.canBlockGrass[this.blockAccess.getBlockId(par2, par3 + 1, par4 + 1)];
4284            this.aoGrassXYZCPN = Block.canBlockGrass[this.blockAccess.getBlockId(par2, par3 + 1, par4 - 1)];
4285            this.aoGrassXYZCNP = Block.canBlockGrass[this.blockAccess.getBlockId(par2, par3 - 1, par4 + 1)];
4286            this.aoGrassXYZCNN = Block.canBlockGrass[this.blockAccess.getBlockId(par2, par3 - 1, par4 - 1)];
4287    
4288            if (par1Block.blockIndexInTexture == 3)
4289            {
4290                var18 = false;
4291                var17 = false;
4292                var16 = false;
4293                var15 = false;
4294                var13 = false;
4295            }
4296    
4297            if (this.overrideBlockTexture >= 0)
4298            {
4299                var18 = false;
4300                var17 = false;
4301                var16 = false;
4302                var15 = false;
4303                var13 = false;
4304            }
4305    
4306            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 - 1, par4, 0))
4307            {
4308                if (this.aoType > 0)
4309                {
4310                    if (this.field_83027_i <= 0.0D)
4311                    {
4312                        --par3;
4313                    }
4314    
4315                    this.aoBrightnessXYNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4);
4316                    this.aoBrightnessYZNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1);
4317                    this.aoBrightnessYZNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1);
4318                    this.aoBrightnessXYPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4);
4319                    this.aoLightValueScratchXYNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4);
4320                    this.aoLightValueScratchYZNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 - 1);
4321                    this.aoLightValueScratchYZNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 + 1);
4322                    this.aoLightValueScratchXYPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4);
4323    
4324                    if (!this.aoGrassXYZCNN && !this.aoGrassXYZNNC)
4325                    {
4326                        this.aoLightValueScratchXYZNNN = this.aoLightValueScratchXYNN;
4327                        this.aoBrightnessXYZNNN = this.aoBrightnessXYNN;
4328                    }
4329                    else
4330                    {
4331                        this.aoLightValueScratchXYZNNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4 - 1);
4332                        this.aoBrightnessXYZNNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4 - 1);
4333                    }
4334    
4335                    if (!this.aoGrassXYZCNP && !this.aoGrassXYZNNC)
4336                    {
4337                        this.aoLightValueScratchXYZNNP = this.aoLightValueScratchXYNN;
4338                        this.aoBrightnessXYZNNP = this.aoBrightnessXYNN;
4339                    }
4340                    else
4341                    {
4342                        this.aoLightValueScratchXYZNNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4 + 1);
4343                        this.aoBrightnessXYZNNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4 + 1);
4344                    }
4345    
4346                    if (!this.aoGrassXYZCNN && !this.aoGrassXYZPNC)
4347                    {
4348                        this.aoLightValueScratchXYZPNN = this.aoLightValueScratchXYPN;
4349                        this.aoBrightnessXYZPNN = this.aoBrightnessXYPN;
4350                    }
4351                    else
4352                    {
4353                        this.aoLightValueScratchXYZPNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4 - 1);
4354                        this.aoBrightnessXYZPNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4 - 1);
4355                    }
4356    
4357                    if (!this.aoGrassXYZCNP && !this.aoGrassXYZPNC)
4358                    {
4359                        this.aoLightValueScratchXYZPNP = this.aoLightValueScratchXYPN;
4360                        this.aoBrightnessXYZPNP = this.aoBrightnessXYPN;
4361                    }
4362                    else
4363                    {
4364                        this.aoLightValueScratchXYZPNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4 + 1);
4365                        this.aoBrightnessXYZPNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4 + 1);
4366                    }
4367    
4368                    if (this.field_83027_i <= 0.0D)
4369                    {
4370                        ++par3;
4371                    }
4372    
4373                    var9 = (this.aoLightValueScratchXYZNNP + this.aoLightValueScratchXYNN + this.aoLightValueScratchYZNP + this.aoLightValueYNeg) / 4.0F;
4374                    var12 = (this.aoLightValueScratchYZNP + this.aoLightValueYNeg + this.aoLightValueScratchXYZPNP + this.aoLightValueScratchXYPN) / 4.0F;
4375                    var11 = (this.aoLightValueYNeg + this.aoLightValueScratchYZNN + this.aoLightValueScratchXYPN + this.aoLightValueScratchXYZPNN) / 4.0F;
4376                    var10 = (this.aoLightValueScratchXYNN + this.aoLightValueScratchXYZNNN + this.aoLightValueYNeg + this.aoLightValueScratchYZNN) / 4.0F;
4377                    this.brightnessTopLeft = this.getAoBrightness(this.aoBrightnessXYZNNP, this.aoBrightnessXYNN, this.aoBrightnessYZNP, var21);
4378                    this.brightnessTopRight = this.getAoBrightness(this.aoBrightnessYZNP, this.aoBrightnessXYZPNP, this.aoBrightnessXYPN, var21);
4379                    this.brightnessBottomRight = this.getAoBrightness(this.aoBrightnessYZNN, this.aoBrightnessXYPN, this.aoBrightnessXYZPNN, var21);
4380                    this.brightnessBottomLeft = this.getAoBrightness(this.aoBrightnessXYNN, this.aoBrightnessXYZNNN, this.aoBrightnessYZNN, var21);
4381                }
4382                else
4383                {
4384                    var12 = this.aoLightValueYNeg;
4385                    var11 = this.aoLightValueYNeg;
4386                    var10 = this.aoLightValueYNeg;
4387                    var9 = this.aoLightValueYNeg;
4388                    this.brightnessTopLeft = this.brightnessBottomLeft = this.brightnessBottomRight = this.brightnessTopRight = this.aoBrightnessXYNN;
4389                }
4390    
4391                this.colorRedTopLeft = this.colorRedBottomLeft = this.colorRedBottomRight = this.colorRedTopRight = (var13 ? par5 : 1.0F) * 0.5F;
4392                this.colorGreenTopLeft = this.colorGreenBottomLeft = this.colorGreenBottomRight = this.colorGreenTopRight = (var13 ? par6 : 1.0F) * 0.5F;
4393                this.colorBlueTopLeft = this.colorBlueBottomLeft = this.colorBlueBottomRight = this.colorBlueTopRight = (var13 ? par7 : 1.0F) * 0.5F;
4394                this.colorRedTopLeft *= var9;
4395                this.colorGreenTopLeft *= var9;
4396                this.colorBlueTopLeft *= var9;
4397                this.colorRedBottomLeft *= var10;
4398                this.colorGreenBottomLeft *= var10;
4399                this.colorBlueBottomLeft *= var10;
4400                this.colorRedBottomRight *= var11;
4401                this.colorGreenBottomRight *= var11;
4402                this.colorBlueBottomRight *= var11;
4403                this.colorRedTopRight *= var12;
4404                this.colorGreenTopRight *= var12;
4405                this.colorBlueTopRight *= var12;
4406                this.renderBottomFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0));
4407                var8 = true;
4408            }
4409    
4410            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 + 1, par4, 1))
4411            {
4412                if (this.aoType > 0)
4413                {
4414                    if (this.field_83024_j >= 1.0D)
4415                    {
4416                        ++par3;
4417                    }
4418    
4419                    this.aoBrightnessXYNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4);
4420                    this.aoBrightnessXYPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4);
4421                    this.aoBrightnessYZPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1);
4422                    this.aoBrightnessYZPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1);
4423                    this.aoLightValueScratchXYNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4);
4424                    this.aoLightValueScratchXYPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4);
4425                    this.aoLightValueScratchYZPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 - 1);
4426                    this.aoLightValueScratchYZPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 + 1);
4427    
4428                    if (!this.aoGrassXYZCPN && !this.aoGrassXYZNPC)
4429                    {
4430                        this.aoLightValueScratchXYZNPN = this.aoLightValueScratchXYNP;
4431                        this.aoBrightnessXYZNPN = this.aoBrightnessXYNP;
4432                    }
4433                    else
4434                    {
4435                        this.aoLightValueScratchXYZNPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4 - 1);
4436                        this.aoBrightnessXYZNPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4 - 1);
4437                    }
4438    
4439                    if (!this.aoGrassXYZCPN && !this.aoGrassXYZPPC)
4440                    {
4441                        this.aoLightValueScratchXYZPPN = this.aoLightValueScratchXYPP;
4442                        this.aoBrightnessXYZPPN = this.aoBrightnessXYPP;
4443                    }
4444                    else
4445                    {
4446                        this.aoLightValueScratchXYZPPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4 - 1);
4447                        this.aoBrightnessXYZPPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4 - 1);
4448                    }
4449    
4450                    if (!this.aoGrassXYZCPP && !this.aoGrassXYZNPC)
4451                    {
4452                        this.aoLightValueScratchXYZNPP = this.aoLightValueScratchXYNP;
4453                        this.aoBrightnessXYZNPP = this.aoBrightnessXYNP;
4454                    }
4455                    else
4456                    {
4457                        this.aoLightValueScratchXYZNPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4 + 1);
4458                        this.aoBrightnessXYZNPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4 + 1);
4459                    }
4460    
4461                    if (!this.aoGrassXYZCPP && !this.aoGrassXYZPPC)
4462                    {
4463                        this.aoLightValueScratchXYZPPP = this.aoLightValueScratchXYPP;
4464                        this.aoBrightnessXYZPPP = this.aoBrightnessXYPP;
4465                    }
4466                    else
4467                    {
4468                        this.aoLightValueScratchXYZPPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4 + 1);
4469                        this.aoBrightnessXYZPPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4 + 1);
4470                    }
4471    
4472                    if (this.field_83024_j >= 1.0D)
4473                    {
4474                        --par3;
4475                    }
4476    
4477                    var12 = (this.aoLightValueScratchXYZNPP + this.aoLightValueScratchXYNP + this.aoLightValueScratchYZPP + this.aoLightValueYPos) / 4.0F;
4478                    var9 = (this.aoLightValueScratchYZPP + this.aoLightValueYPos + this.aoLightValueScratchXYZPPP + this.aoLightValueScratchXYPP) / 4.0F;
4479                    var10 = (this.aoLightValueYPos + this.aoLightValueScratchYZPN + this.aoLightValueScratchXYPP + this.aoLightValueScratchXYZPPN) / 4.0F;
4480                    var11 = (this.aoLightValueScratchXYNP + this.aoLightValueScratchXYZNPN + this.aoLightValueYPos + this.aoLightValueScratchYZPN) / 4.0F;
4481                    this.brightnessTopRight = this.getAoBrightness(this.aoBrightnessXYZNPP, this.aoBrightnessXYNP, this.aoBrightnessYZPP, var24);
4482                    this.brightnessTopLeft = this.getAoBrightness(this.aoBrightnessYZPP, this.aoBrightnessXYZPPP, this.aoBrightnessXYPP, var24);
4483                    this.brightnessBottomLeft = this.getAoBrightness(this.aoBrightnessYZPN, this.aoBrightnessXYPP, this.aoBrightnessXYZPPN, var24);
4484                    this.brightnessBottomRight = this.getAoBrightness(this.aoBrightnessXYNP, this.aoBrightnessXYZNPN, this.aoBrightnessYZPN, var24);
4485                }
4486                else
4487                {
4488                    var12 = this.aoLightValueYPos;
4489                    var11 = this.aoLightValueYPos;
4490                    var10 = this.aoLightValueYPos;
4491                    var9 = this.aoLightValueYPos;
4492                    this.brightnessTopLeft = this.brightnessBottomLeft = this.brightnessBottomRight = this.brightnessTopRight = var24;
4493                }
4494    
4495                this.colorRedTopLeft = this.colorRedBottomLeft = this.colorRedBottomRight = this.colorRedTopRight = var14 ? par5 : 1.0F;
4496                this.colorGreenTopLeft = this.colorGreenBottomLeft = this.colorGreenBottomRight = this.colorGreenTopRight = var14 ? par6 : 1.0F;
4497                this.colorBlueTopLeft = this.colorBlueBottomLeft = this.colorBlueBottomRight = this.colorBlueTopRight = var14 ? par7 : 1.0F;
4498                this.colorRedTopLeft *= var9;
4499                this.colorGreenTopLeft *= var9;
4500                this.colorBlueTopLeft *= var9;
4501                this.colorRedBottomLeft *= var10;
4502                this.colorGreenBottomLeft *= var10;
4503                this.colorBlueBottomLeft *= var10;
4504                this.colorRedBottomRight *= var11;
4505                this.colorGreenBottomRight *= var11;
4506                this.colorBlueBottomRight *= var11;
4507                this.colorRedTopRight *= var12;
4508                this.colorGreenTopRight *= var12;
4509                this.colorBlueTopRight *= var12;
4510                this.renderTopFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1));
4511                var8 = true;
4512            }
4513    
4514            int var27;
4515    
4516            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 - 1, 2))
4517            {
4518                if (this.aoType > 0)
4519                {
4520                    if (this.field_83025_k <= 0.0D)
4521                    {
4522                        --par4;
4523                    }
4524    
4525                    this.aoLightValueScratchXZNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4);
4526                    this.aoLightValueScratchYZNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4);
4527                    this.aoLightValueScratchYZPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4);
4528                    this.aoLightValueScratchXZPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4);
4529                    this.aoBrightnessXZNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4);
4530                    this.aoBrightnessYZNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4);
4531                    this.aoBrightnessYZPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4);
4532                    this.aoBrightnessXZPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4);
4533    
4534                    if (!this.aoGrassXYZNCN && !this.aoGrassXYZCNN)
4535                    {
4536                        this.aoLightValueScratchXYZNNN = this.aoLightValueScratchXZNN;
4537                        this.aoBrightnessXYZNNN = this.aoBrightnessXZNN;
4538                    }
4539                    else
4540                    {
4541                        this.aoLightValueScratchXYZNNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3 - 1, par4);
4542                        this.aoBrightnessXYZNNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3 - 1, par4);
4543                    }
4544    
4545                    if (!this.aoGrassXYZNCN && !this.aoGrassXYZCPN)
4546                    {
4547                        this.aoLightValueScratchXYZNPN = this.aoLightValueScratchXZNN;
4548                        this.aoBrightnessXYZNPN = this.aoBrightnessXZNN;
4549                    }
4550                    else
4551                    {
4552                        this.aoLightValueScratchXYZNPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3 + 1, par4);
4553                        this.aoBrightnessXYZNPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3 + 1, par4);
4554                    }
4555    
4556                    if (!this.aoGrassXYZPCN && !this.aoGrassXYZCNN)
4557                    {
4558                        this.aoLightValueScratchXYZPNN = this.aoLightValueScratchXZPN;
4559                        this.aoBrightnessXYZPNN = this.aoBrightnessXZPN;
4560                    }
4561                    else
4562                    {
4563                        this.aoLightValueScratchXYZPNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3 - 1, par4);
4564                        this.aoBrightnessXYZPNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3 - 1, par4);
4565                    }
4566    
4567                    if (!this.aoGrassXYZPCN && !this.aoGrassXYZCPN)
4568                    {
4569                        this.aoLightValueScratchXYZPPN = this.aoLightValueScratchXZPN;
4570                        this.aoBrightnessXYZPPN = this.aoBrightnessXZPN;
4571                    }
4572                    else
4573                    {
4574                        this.aoLightValueScratchXYZPPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3 + 1, par4);
4575                        this.aoBrightnessXYZPPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3 + 1, par4);
4576                    }
4577    
4578                    if (this.field_83025_k <= 0.0D)
4579                    {
4580                        ++par4;
4581                    }
4582    
4583                    var9 = (this.aoLightValueScratchXZNN + this.aoLightValueScratchXYZNPN + this.aoLightValueZNeg + this.aoLightValueScratchYZPN) / 4.0F;
4584                    var10 = (this.aoLightValueZNeg + this.aoLightValueScratchYZPN + this.aoLightValueScratchXZPN + this.aoLightValueScratchXYZPPN) / 4.0F;
4585                    var11 = (this.aoLightValueScratchYZNN + this.aoLightValueZNeg + this.aoLightValueScratchXYZPNN + this.aoLightValueScratchXZPN) / 4.0F;
4586                    var12 = (this.aoLightValueScratchXYZNNN + this.aoLightValueScratchXZNN + this.aoLightValueScratchYZNN + this.aoLightValueZNeg) / 4.0F;
4587                    this.brightnessTopLeft = this.getAoBrightness(this.aoBrightnessXZNN, this.aoBrightnessXYZNPN, this.aoBrightnessYZPN, var22);
4588                    this.brightnessBottomLeft = this.getAoBrightness(this.aoBrightnessYZPN, this.aoBrightnessXZPN, this.aoBrightnessXYZPPN, var22);
4589                    this.brightnessBottomRight = this.getAoBrightness(this.aoBrightnessYZNN, this.aoBrightnessXYZPNN, this.aoBrightnessXZPN, var22);
4590                    this.brightnessTopRight = this.getAoBrightness(this.aoBrightnessXYZNNN, this.aoBrightnessXZNN, this.aoBrightnessYZNN, var22);
4591                }
4592                else
4593                {
4594                    var12 = this.aoLightValueZNeg;
4595                    var11 = this.aoLightValueZNeg;
4596                    var10 = this.aoLightValueZNeg;
4597                    var9 = this.aoLightValueZNeg;
4598                    this.brightnessTopLeft = this.brightnessBottomLeft = this.brightnessBottomRight = this.brightnessTopRight = var22;
4599                }
4600    
4601                this.colorRedTopLeft = this.colorRedBottomLeft = this.colorRedBottomRight = this.colorRedTopRight = (var15 ? par5 : 1.0F) * 0.8F;
4602                this.colorGreenTopLeft = this.colorGreenBottomLeft = this.colorGreenBottomRight = this.colorGreenTopRight = (var15 ? par6 : 1.0F) * 0.8F;
4603                this.colorBlueTopLeft = this.colorBlueBottomLeft = this.colorBlueBottomRight = this.colorBlueTopRight = (var15 ? par7 : 1.0F) * 0.8F;
4604                this.colorRedTopLeft *= var9;
4605                this.colorGreenTopLeft *= var9;
4606                this.colorBlueTopLeft *= var9;
4607                this.colorRedBottomLeft *= var10;
4608                this.colorGreenBottomLeft *= var10;
4609                this.colorBlueBottomLeft *= var10;
4610                this.colorRedBottomRight *= var11;
4611                this.colorGreenBottomRight *= var11;
4612                this.colorBlueBottomRight *= var11;
4613                this.colorRedTopRight *= var12;
4614                this.colorGreenTopRight *= var12;
4615                this.colorBlueTopRight *= var12;
4616                var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 2);
4617                this.renderEastFace(par1Block, (double)par2, (double)par3, (double)par4, var27);
4618    
4619                if (Tessellator.instance.defaultTexture && fancyGrass && var27 == 3 && this.overrideBlockTexture < 0)
4620                {
4621                    this.colorRedTopLeft *= par5;
4622                    this.colorRedBottomLeft *= par5;
4623                    this.colorRedBottomRight *= par5;
4624                    this.colorRedTopRight *= par5;
4625                    this.colorGreenTopLeft *= par6;
4626                    this.colorGreenBottomLeft *= par6;
4627                    this.colorGreenBottomRight *= par6;
4628                    this.colorGreenTopRight *= par6;
4629                    this.colorBlueTopLeft *= par7;
4630                    this.colorBlueBottomLeft *= par7;
4631                    this.colorBlueBottomRight *= par7;
4632                    this.colorBlueTopRight *= par7;
4633                    this.renderEastFace(par1Block, (double)par2, (double)par3, (double)par4, 38);
4634                }
4635    
4636                var8 = true;
4637            }
4638    
4639            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 + 1, 3))
4640            {
4641                if (this.aoType > 0)
4642                {
4643                    if (this.field_83022_l >= 1.0D)
4644                    {
4645                        ++par4;
4646                    }
4647    
4648                    this.aoLightValueScratchXZNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3, par4);
4649                    this.aoLightValueScratchXZPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3, par4);
4650                    this.aoLightValueScratchYZNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4);
4651                    this.aoLightValueScratchYZPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4);
4652                    this.aoBrightnessXZNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4);
4653                    this.aoBrightnessXZPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4);
4654                    this.aoBrightnessYZNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4);
4655                    this.aoBrightnessYZPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4);
4656    
4657                    if (!this.aoGrassXYZNCP && !this.aoGrassXYZCNP)
4658                    {
4659                        this.aoLightValueScratchXYZNNP = this.aoLightValueScratchXZNP;
4660                        this.aoBrightnessXYZNNP = this.aoBrightnessXZNP;
4661                    }
4662                    else
4663                    {
4664                        this.aoLightValueScratchXYZNNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3 - 1, par4);
4665                        this.aoBrightnessXYZNNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3 - 1, par4);
4666                    }
4667    
4668                    if (!this.aoGrassXYZNCP && !this.aoGrassXYZCPP)
4669                    {
4670                        this.aoLightValueScratchXYZNPP = this.aoLightValueScratchXZNP;
4671                        this.aoBrightnessXYZNPP = this.aoBrightnessXZNP;
4672                    }
4673                    else
4674                    {
4675                        this.aoLightValueScratchXYZNPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 - 1, par3 + 1, par4);
4676                        this.aoBrightnessXYZNPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3 + 1, par4);
4677                    }
4678    
4679                    if (!this.aoGrassXYZPCP && !this.aoGrassXYZCNP)
4680                    {
4681                        this.aoLightValueScratchXYZPNP = this.aoLightValueScratchXZPP;
4682                        this.aoBrightnessXYZPNP = this.aoBrightnessXZPP;
4683                    }
4684                    else
4685                    {
4686                        this.aoLightValueScratchXYZPNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3 - 1, par4);
4687                        this.aoBrightnessXYZPNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3 - 1, par4);
4688                    }
4689    
4690                    if (!this.aoGrassXYZPCP && !this.aoGrassXYZCPP)
4691                    {
4692                        this.aoLightValueScratchXYZPPP = this.aoLightValueScratchXZPP;
4693                        this.aoBrightnessXYZPPP = this.aoBrightnessXZPP;
4694                    }
4695                    else
4696                    {
4697                        this.aoLightValueScratchXYZPPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2 + 1, par3 + 1, par4);
4698                        this.aoBrightnessXYZPPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3 + 1, par4);
4699                    }
4700    
4701                    if (this.field_83022_l >= 1.0D)
4702                    {
4703                        --par4;
4704                    }
4705    
4706                    var9 = (this.aoLightValueScratchXZNP + this.aoLightValueScratchXYZNPP + this.aoLightValueZPos + this.aoLightValueScratchYZPP) / 4.0F;
4707                    var12 = (this.aoLightValueZPos + this.aoLightValueScratchYZPP + this.aoLightValueScratchXZPP + this.aoLightValueScratchXYZPPP) / 4.0F;
4708                    var11 = (this.aoLightValueScratchYZNP + this.aoLightValueZPos + this.aoLightValueScratchXYZPNP + this.aoLightValueScratchXZPP) / 4.0F;
4709                    var10 = (this.aoLightValueScratchXYZNNP + this.aoLightValueScratchXZNP + this.aoLightValueScratchYZNP + this.aoLightValueZPos) / 4.0F;
4710                    this.brightnessTopLeft = this.getAoBrightness(this.aoBrightnessXZNP, this.aoBrightnessXYZNPP, this.aoBrightnessYZPP, var25);
4711                    this.brightnessTopRight = this.getAoBrightness(this.aoBrightnessYZPP, this.aoBrightnessXZPP, this.aoBrightnessXYZPPP, var25);
4712                    this.brightnessBottomRight = this.getAoBrightness(this.aoBrightnessYZNP, this.aoBrightnessXYZPNP, this.aoBrightnessXZPP, var25);
4713                    this.brightnessBottomLeft = this.getAoBrightness(this.aoBrightnessXYZNNP, this.aoBrightnessXZNP, this.aoBrightnessYZNP, var25);
4714                }
4715                else
4716                {
4717                    var12 = this.aoLightValueZPos;
4718                    var11 = this.aoLightValueZPos;
4719                    var10 = this.aoLightValueZPos;
4720                    var9 = this.aoLightValueZPos;
4721                    this.brightnessTopLeft = this.brightnessBottomLeft = this.brightnessBottomRight = this.brightnessTopRight = var25;
4722                }
4723    
4724                this.colorRedTopLeft = this.colorRedBottomLeft = this.colorRedBottomRight = this.colorRedTopRight = (var16 ? par5 : 1.0F) * 0.8F;
4725                this.colorGreenTopLeft = this.colorGreenBottomLeft = this.colorGreenBottomRight = this.colorGreenTopRight = (var16 ? par6 : 1.0F) * 0.8F;
4726                this.colorBlueTopLeft = this.colorBlueBottomLeft = this.colorBlueBottomRight = this.colorBlueTopRight = (var16 ? par7 : 1.0F) * 0.8F;
4727                this.colorRedTopLeft *= var9;
4728                this.colorGreenTopLeft *= var9;
4729                this.colorBlueTopLeft *= var9;
4730                this.colorRedBottomLeft *= var10;
4731                this.colorGreenBottomLeft *= var10;
4732                this.colorBlueBottomLeft *= var10;
4733                this.colorRedBottomRight *= var11;
4734                this.colorGreenBottomRight *= var11;
4735                this.colorBlueBottomRight *= var11;
4736                this.colorRedTopRight *= var12;
4737                this.colorGreenTopRight *= var12;
4738                this.colorBlueTopRight *= var12;
4739                var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3);
4740                this.renderWestFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3));
4741    
4742                if (Tessellator.instance.defaultTexture && fancyGrass && var27 == 3 && this.overrideBlockTexture < 0)
4743                {
4744                    this.colorRedTopLeft *= par5;
4745                    this.colorRedBottomLeft *= par5;
4746                    this.colorRedBottomRight *= par5;
4747                    this.colorRedTopRight *= par5;
4748                    this.colorGreenTopLeft *= par6;
4749                    this.colorGreenBottomLeft *= par6;
4750                    this.colorGreenBottomRight *= par6;
4751                    this.colorGreenTopRight *= par6;
4752                    this.colorBlueTopLeft *= par7;
4753                    this.colorBlueBottomLeft *= par7;
4754                    this.colorBlueBottomRight *= par7;
4755                    this.colorBlueTopRight *= par7;
4756                    this.renderWestFace(par1Block, (double)par2, (double)par3, (double)par4, 38);
4757                }
4758    
4759                var8 = true;
4760            }
4761    
4762            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2 - 1, par3, par4, 4))
4763            {
4764                if (this.aoType > 0)
4765                {
4766                    if (this.field_83021_g <= 0.0D)
4767                    {
4768                        --par2;
4769                    }
4770    
4771                    this.aoLightValueScratchXYNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4);
4772                    this.aoLightValueScratchXZNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 - 1);
4773                    this.aoLightValueScratchXZNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 + 1);
4774                    this.aoLightValueScratchXYNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4);
4775                    this.aoBrightnessXYNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4);
4776                    this.aoBrightnessXZNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1);
4777                    this.aoBrightnessXZNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1);
4778                    this.aoBrightnessXYNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4);
4779    
4780                    if (!this.aoGrassXYZNCN && !this.aoGrassXYZNNC)
4781                    {
4782                        this.aoLightValueScratchXYZNNN = this.aoLightValueScratchXZNN;
4783                        this.aoBrightnessXYZNNN = this.aoBrightnessXZNN;
4784                    }
4785                    else
4786                    {
4787                        this.aoLightValueScratchXYZNNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4 - 1);
4788                        this.aoBrightnessXYZNNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4 - 1);
4789                    }
4790    
4791                    if (!this.aoGrassXYZNCP && !this.aoGrassXYZNNC)
4792                    {
4793                        this.aoLightValueScratchXYZNNP = this.aoLightValueScratchXZNP;
4794                        this.aoBrightnessXYZNNP = this.aoBrightnessXZNP;
4795                    }
4796                    else
4797                    {
4798                        this.aoLightValueScratchXYZNNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4 + 1);
4799                        this.aoBrightnessXYZNNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4 + 1);
4800                    }
4801    
4802                    if (!this.aoGrassXYZNCN && !this.aoGrassXYZNPC)
4803                    {
4804                        this.aoLightValueScratchXYZNPN = this.aoLightValueScratchXZNN;
4805                        this.aoBrightnessXYZNPN = this.aoBrightnessXZNN;
4806                    }
4807                    else
4808                    {
4809                        this.aoLightValueScratchXYZNPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4 - 1);
4810                        this.aoBrightnessXYZNPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4 - 1);
4811                    }
4812    
4813                    if (!this.aoGrassXYZNCP && !this.aoGrassXYZNPC)
4814                    {
4815                        this.aoLightValueScratchXYZNPP = this.aoLightValueScratchXZNP;
4816                        this.aoBrightnessXYZNPP = this.aoBrightnessXZNP;
4817                    }
4818                    else
4819                    {
4820                        this.aoLightValueScratchXYZNPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4 + 1);
4821                        this.aoBrightnessXYZNPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4 + 1);
4822                    }
4823    
4824                    if (this.field_83021_g <= 0.0D)
4825                    {
4826                        ++par2;
4827                    }
4828    
4829                    var12 = (this.aoLightValueScratchXYNN + this.aoLightValueScratchXYZNNP + this.aoLightValueXNeg + this.aoLightValueScratchXZNP) / 4.0F;
4830                    var9 = (this.aoLightValueXNeg + this.aoLightValueScratchXZNP + this.aoLightValueScratchXYNP + this.aoLightValueScratchXYZNPP) / 4.0F;
4831                    var10 = (this.aoLightValueScratchXZNN + this.aoLightValueXNeg + this.aoLightValueScratchXYZNPN + this.aoLightValueScratchXYNP) / 4.0F;
4832                    var11 = (this.aoLightValueScratchXYZNNN + this.aoLightValueScratchXYNN + this.aoLightValueScratchXZNN + this.aoLightValueXNeg) / 4.0F;
4833                    this.brightnessTopRight = this.getAoBrightness(this.aoBrightnessXYNN, this.aoBrightnessXYZNNP, this.aoBrightnessXZNP, var20);
4834                    this.brightnessTopLeft = this.getAoBrightness(this.aoBrightnessXZNP, this.aoBrightnessXYNP, this.aoBrightnessXYZNPP, var20);
4835                    this.brightnessBottomLeft = this.getAoBrightness(this.aoBrightnessXZNN, this.aoBrightnessXYZNPN, this.aoBrightnessXYNP, var20);
4836                    this.brightnessBottomRight = this.getAoBrightness(this.aoBrightnessXYZNNN, this.aoBrightnessXYNN, this.aoBrightnessXZNN, var20);
4837                }
4838                else
4839                {
4840                    var12 = this.aoLightValueXNeg;
4841                    var11 = this.aoLightValueXNeg;
4842                    var10 = this.aoLightValueXNeg;
4843                    var9 = this.aoLightValueXNeg;
4844                    this.brightnessTopLeft = this.brightnessBottomLeft = this.brightnessBottomRight = this.brightnessTopRight = var20;
4845                }
4846    
4847                this.colorRedTopLeft = this.colorRedBottomLeft = this.colorRedBottomRight = this.colorRedTopRight = (var17 ? par5 : 1.0F) * 0.6F;
4848                this.colorGreenTopLeft = this.colorGreenBottomLeft = this.colorGreenBottomRight = this.colorGreenTopRight = (var17 ? par6 : 1.0F) * 0.6F;
4849                this.colorBlueTopLeft = this.colorBlueBottomLeft = this.colorBlueBottomRight = this.colorBlueTopRight = (var17 ? par7 : 1.0F) * 0.6F;
4850                this.colorRedTopLeft *= var9;
4851                this.colorGreenTopLeft *= var9;
4852                this.colorBlueTopLeft *= var9;
4853                this.colorRedBottomLeft *= var10;
4854                this.colorGreenBottomLeft *= var10;
4855                this.colorBlueBottomLeft *= var10;
4856                this.colorRedBottomRight *= var11;
4857                this.colorGreenBottomRight *= var11;
4858                this.colorBlueBottomRight *= var11;
4859                this.colorRedTopRight *= var12;
4860                this.colorGreenTopRight *= var12;
4861                this.colorBlueTopRight *= var12;
4862                var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 4);
4863                this.renderNorthFace(par1Block, (double)par2, (double)par3, (double)par4, var27);
4864    
4865                if (Tessellator.instance.defaultTexture && fancyGrass && var27 == 3 && this.overrideBlockTexture < 0)
4866                {
4867                    this.colorRedTopLeft *= par5;
4868                    this.colorRedBottomLeft *= par5;
4869                    this.colorRedBottomRight *= par5;
4870                    this.colorRedTopRight *= par5;
4871                    this.colorGreenTopLeft *= par6;
4872                    this.colorGreenBottomLeft *= par6;
4873                    this.colorGreenBottomRight *= par6;
4874                    this.colorGreenTopRight *= par6;
4875                    this.colorBlueTopLeft *= par7;
4876                    this.colorBlueBottomLeft *= par7;
4877                    this.colorBlueBottomRight *= par7;
4878                    this.colorBlueTopRight *= par7;
4879                    this.renderNorthFace(par1Block, (double)par2, (double)par3, (double)par4, 38);
4880                }
4881    
4882                var8 = true;
4883            }
4884    
4885            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2 + 1, par3, par4, 5))
4886            {
4887                if (this.aoType > 0)
4888                {
4889                    if (this.field_83026_h >= 1.0D)
4890                    {
4891                        ++par2;
4892                    }
4893    
4894                    this.aoLightValueScratchXYPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4);
4895                    this.aoLightValueScratchXZPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 - 1);
4896                    this.aoLightValueScratchXZPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3, par4 + 1);
4897                    this.aoLightValueScratchXYPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4);
4898                    this.aoBrightnessXYPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4);
4899                    this.aoBrightnessXZPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1);
4900                    this.aoBrightnessXZPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1);
4901                    this.aoBrightnessXYPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4);
4902    
4903                    if (!this.aoGrassXYZPNC && !this.aoGrassXYZPCN)
4904                    {
4905                        this.aoLightValueScratchXYZPNN = this.aoLightValueScratchXZPN;
4906                        this.aoBrightnessXYZPNN = this.aoBrightnessXZPN;
4907                    }
4908                    else
4909                    {
4910                        this.aoLightValueScratchXYZPNN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4 - 1);
4911                        this.aoBrightnessXYZPNN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4 - 1);
4912                    }
4913    
4914                    if (!this.aoGrassXYZPNC && !this.aoGrassXYZPCP)
4915                    {
4916                        this.aoLightValueScratchXYZPNP = this.aoLightValueScratchXZPP;
4917                        this.aoBrightnessXYZPNP = this.aoBrightnessXZPP;
4918                    }
4919                    else
4920                    {
4921                        this.aoLightValueScratchXYZPNP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 - 1, par4 + 1);
4922                        this.aoBrightnessXYZPNP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4 + 1);
4923                    }
4924    
4925                    if (!this.aoGrassXYZPPC && !this.aoGrassXYZPCN)
4926                    {
4927                        this.aoLightValueScratchXYZPPN = this.aoLightValueScratchXZPN;
4928                        this.aoBrightnessXYZPPN = this.aoBrightnessXZPN;
4929                    }
4930                    else
4931                    {
4932                        this.aoLightValueScratchXYZPPN = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4 - 1);
4933                        this.aoBrightnessXYZPPN = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4 - 1);
4934                    }
4935    
4936                    if (!this.aoGrassXYZPPC && !this.aoGrassXYZPCP)
4937                    {
4938                        this.aoLightValueScratchXYZPPP = this.aoLightValueScratchXZPP;
4939                        this.aoBrightnessXYZPPP = this.aoBrightnessXZPP;
4940                    }
4941                    else
4942                    {
4943                        this.aoLightValueScratchXYZPPP = par1Block.getAmbientOcclusionLightValue(this.blockAccess, par2, par3 + 1, par4 + 1);
4944                        this.aoBrightnessXYZPPP = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4 + 1);
4945                    }
4946    
4947                    if (this.field_83026_h >= 1.0D)
4948                    {
4949                        --par2;
4950                    }
4951    
4952                    var9 = (this.aoLightValueScratchXYPN + this.aoLightValueScratchXYZPNP + this.aoLightValueXPos + this.aoLightValueScratchXZPP) / 4.0F;
4953                    var12 = (this.aoLightValueXPos + this.aoLightValueScratchXZPP + this.aoLightValueScratchXYPP + this.aoLightValueScratchXYZPPP) / 4.0F;
4954                    var11 = (this.aoLightValueScratchXZPN + this.aoLightValueXPos + this.aoLightValueScratchXYZPPN + this.aoLightValueScratchXYPP) / 4.0F;
4955                    var10 = (this.aoLightValueScratchXYZPNN + this.aoLightValueScratchXYPN + this.aoLightValueScratchXZPN + this.aoLightValueXPos) / 4.0F;
4956                    this.brightnessTopLeft = this.getAoBrightness(this.aoBrightnessXYPN, this.aoBrightnessXYZPNP, this.aoBrightnessXZPP, var23);
4957                    this.brightnessTopRight = this.getAoBrightness(this.aoBrightnessXZPP, this.aoBrightnessXYPP, this.aoBrightnessXYZPPP, var23);
4958                    this.brightnessBottomRight = this.getAoBrightness(this.aoBrightnessXZPN, this.aoBrightnessXYZPPN, this.aoBrightnessXYPP, var23);
4959                    this.brightnessBottomLeft = this.getAoBrightness(this.aoBrightnessXYZPNN, this.aoBrightnessXYPN, this.aoBrightnessXZPN, var23);
4960                }
4961                else
4962                {
4963                    var12 = this.aoLightValueXPos;
4964                    var11 = this.aoLightValueXPos;
4965                    var10 = this.aoLightValueXPos;
4966                    var9 = this.aoLightValueXPos;
4967                    this.brightnessTopLeft = this.brightnessBottomLeft = this.brightnessBottomRight = this.brightnessTopRight = var23;
4968                }
4969    
4970                this.colorRedTopLeft = this.colorRedBottomLeft = this.colorRedBottomRight = this.colorRedTopRight = (var18 ? par5 : 1.0F) * 0.6F;
4971                this.colorGreenTopLeft = this.colorGreenBottomLeft = this.colorGreenBottomRight = this.colorGreenTopRight = (var18 ? par6 : 1.0F) * 0.6F;
4972                this.colorBlueTopLeft = this.colorBlueBottomLeft = this.colorBlueBottomRight = this.colorBlueTopRight = (var18 ? par7 : 1.0F) * 0.6F;
4973                this.colorRedTopLeft *= var9;
4974                this.colorGreenTopLeft *= var9;
4975                this.colorBlueTopLeft *= var9;
4976                this.colorRedBottomLeft *= var10;
4977                this.colorGreenBottomLeft *= var10;
4978                this.colorBlueBottomLeft *= var10;
4979                this.colorRedBottomRight *= var11;
4980                this.colorGreenBottomRight *= var11;
4981                this.colorBlueBottomRight *= var11;
4982                this.colorRedTopRight *= var12;
4983                this.colorGreenTopRight *= var12;
4984                this.colorBlueTopRight *= var12;
4985                var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 5);
4986                this.renderSouthFace(par1Block, (double)par2, (double)par3, (double)par4, var27);
4987    
4988                if (Tessellator.instance.defaultTexture && fancyGrass && var27 == 3 && this.overrideBlockTexture < 0)
4989                {
4990                    this.colorRedTopLeft *= par5;
4991                    this.colorRedBottomLeft *= par5;
4992                    this.colorRedBottomRight *= par5;
4993                    this.colorRedTopRight *= par5;
4994                    this.colorGreenTopLeft *= par6;
4995                    this.colorGreenBottomLeft *= par6;
4996                    this.colorGreenBottomRight *= par6;
4997                    this.colorGreenTopRight *= par6;
4998                    this.colorBlueTopLeft *= par7;
4999                    this.colorBlueBottomLeft *= par7;
5000                    this.colorBlueBottomRight *= par7;
5001                    this.colorBlueTopRight *= par7;
5002                    this.renderSouthFace(par1Block, (double)par2, (double)par3, (double)par4, 38);
5003                }
5004    
5005                var8 = true;
5006            }
5007    
5008            this.enableAO = false;
5009            return var8;
5010        }
5011    
5012        /**
5013         * Get ambient occlusion brightness
5014         */
5015        public int getAoBrightness(int par1, int par2, int par3, int par4)
5016        {
5017            if (par1 == 0)
5018            {
5019                par1 = par4;
5020            }
5021    
5022            if (par2 == 0)
5023            {
5024                par2 = par4;
5025            }
5026    
5027            if (par3 == 0)
5028            {
5029                par3 = par4;
5030            }
5031    
5032            return par1 + par2 + par3 + par4 >> 2 & 16711935;
5033        }
5034    
5035        /**
5036         * Renders a standard cube block at the given coordinates, with a given color ratio.  Args: block, x, y, z, r, g, b
5037         */
5038        public boolean renderStandardBlockWithColorMultiplier(Block par1Block, int par2, int par3, int par4, float par5, float par6, float par7)
5039        {
5040            this.enableAO = false;
5041            Tessellator var8 = Tessellator.instance;
5042            boolean var9 = false;
5043            float var10 = 0.5F;
5044            float var11 = 1.0F;
5045            float var12 = 0.8F;
5046            float var13 = 0.6F;
5047            float var14 = var11 * par5;
5048            float var15 = var11 * par6;
5049            float var16 = var11 * par7;
5050            float var17 = var10;
5051            float var18 = var12;
5052            float var19 = var13;
5053            float var20 = var10;
5054            float var21 = var12;
5055            float var22 = var13;
5056            float var23 = var10;
5057            float var24 = var12;
5058            float var25 = var13;
5059    
5060            if (par1Block != Block.grass)
5061            {
5062                var17 = var10 * par5;
5063                var18 = var12 * par5;
5064                var19 = var13 * par5;
5065                var20 = var10 * par6;
5066                var21 = var12 * par6;
5067                var22 = var13 * par6;
5068                var23 = var10 * par7;
5069                var24 = var12 * par7;
5070                var25 = var13 * par7;
5071            }
5072    
5073            int var26 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4);
5074    
5075            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 - 1, par4, 0))
5076            {
5077                var8.setBrightness(this.field_83027_i > 0.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4));
5078                var8.setColorOpaque_F(var17, var20, var23);
5079                this.renderBottomFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0));
5080                var9 = true;
5081            }
5082    
5083            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 + 1, par4, 1))
5084            {
5085                var8.setBrightness(this.field_83024_j < 1.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4));
5086                var8.setColorOpaque_F(var14, var15, var16);
5087                this.renderTopFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1));
5088                var9 = true;
5089            }
5090    
5091            int var28;
5092    
5093            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 - 1, 2))
5094            {
5095                var8.setBrightness(this.field_83025_k > 0.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1));
5096                var8.setColorOpaque_F(var18, var21, var24);
5097                var28 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 2);
5098                this.renderEastFace(par1Block, (double)par2, (double)par3, (double)par4, var28);
5099    
5100                if (Tessellator.instance.defaultTexture && fancyGrass && var28 == 3 && this.overrideBlockTexture < 0)
5101                {
5102                    var8.setColorOpaque_F(var18 * par5, var21 * par6, var24 * par7);
5103                    this.renderEastFace(par1Block, (double)par2, (double)par3, (double)par4, 38);
5104                }
5105    
5106                var9 = true;
5107            }
5108    
5109            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 + 1, 3))
5110            {
5111                var8.setBrightness(this.field_83022_l < 1.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1));
5112                var8.setColorOpaque_F(var18, var21, var24);
5113                var28 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3);
5114                this.renderWestFace(par1Block, (double)par2, (double)par3, (double)par4, var28);
5115    
5116                if (Tessellator.instance.defaultTexture && fancyGrass && var28 == 3 && this.overrideBlockTexture < 0)
5117                {
5118                    var8.setColorOpaque_F(var18 * par5, var21 * par6, var24 * par7);
5119                    this.renderWestFace(par1Block, (double)par2, (double)par3, (double)par4, 38);
5120                }
5121    
5122                var9 = true;
5123            }
5124    
5125            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2 - 1, par3, par4, 4))
5126            {
5127                var8.setBrightness(this.field_83021_g > 0.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4));
5128                var8.setColorOpaque_F(var19, var22, var25);
5129                var28 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 4);
5130                this.renderNorthFace(par1Block, (double)par2, (double)par3, (double)par4, var28);
5131    
5132                if (Tessellator.instance.defaultTexture && fancyGrass && var28 == 3 && this.overrideBlockTexture < 0)
5133                {
5134                    var8.setColorOpaque_F(var19 * par5, var22 * par6, var25 * par7);
5135                    this.renderNorthFace(par1Block, (double)par2, (double)par3, (double)par4, 38);
5136                }
5137    
5138                var9 = true;
5139            }
5140    
5141            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2 + 1, par3, par4, 5))
5142            {
5143                var8.setBrightness(this.field_83026_h < 1.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4));
5144                var8.setColorOpaque_F(var19, var22, var25);
5145                var28 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 5);
5146                this.renderSouthFace(par1Block, (double)par2, (double)par3, (double)par4, var28);
5147    
5148                if (Tessellator.instance.defaultTexture && fancyGrass && var28 == 3 && this.overrideBlockTexture < 0)
5149                {
5150                    var8.setColorOpaque_F(var19 * par5, var22 * par6, var25 * par7);
5151                    this.renderSouthFace(par1Block, (double)par2, (double)par3, (double)par4, 38);
5152                }
5153    
5154                var9 = true;
5155            }
5156    
5157            return var9;
5158        }
5159    
5160        /**
5161         * Renders a Cocoa block at the given coordinates
5162         */
5163        public boolean renderBlockCocoa(BlockCocoa par1BlockCocoa, int par2, int par3, int par4)
5164        {
5165            Tessellator var5 = Tessellator.instance;
5166            var5.setBrightness(par1BlockCocoa.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4));
5167            var5.setColorOpaque_F(1.0F, 1.0F, 1.0F);
5168            int var6 = this.blockAccess.getBlockMetadata(par2, par3, par4);
5169            int var7 = par1BlockCocoa.getBlockTextureFromSide(1);
5170            int var8 = BlockDirectional.getDirection(var6);
5171            int var9 = BlockCocoa.func_72219_c(var6);
5172            var7 = var7 + 2 - var9;
5173            int var10 = 4 + var9 * 2;
5174            int var11 = 5 + var9 * 2;
5175            int var12 = (var7 & 15) << 4;
5176            int var13 = var7 & 240;
5177            double var14 = 15.0D - (double)var10;
5178            double var16 = 15.0D;
5179            double var18 = 4.0D;
5180            double var20 = 4.0D + (double)var11;
5181            double var22 = ((double)var12 + var14) / 256.0D;
5182            double var24 = ((double)var12 + var16 - 0.01D) / 256.0D;
5183            double var26 = ((double)var13 + var18) / 256.0D;
5184            double var28 = ((double)var13 + var20 - 0.01D) / 256.0D;
5185            double var30 = 0.0D;
5186            double var32 = 0.0D;
5187    
5188            switch (var8)
5189            {
5190                case 0:
5191                    var30 = 8.0D - (double)(var10 / 2);
5192                    var32 = 15.0D - (double)var10;
5193                    break;
5194                case 1:
5195                    var30 = 1.0D;
5196                    var32 = 8.0D - (double)(var10 / 2);
5197                    break;
5198                case 2:
5199                    var30 = 8.0D - (double)(var10 / 2);
5200                    var32 = 1.0D;
5201                    break;
5202                case 3:
5203                    var30 = 15.0D - (double)var10;
5204                    var32 = 8.0D - (double)(var10 / 2);
5205            }
5206    
5207            double var34 = (double)par2 + var30 / 16.0D;
5208            double var36 = (double)par2 + (var30 + (double)var10) / 16.0D;
5209            double var38 = (double)par3 + (12.0D - (double)var11) / 16.0D;
5210            double var40 = (double)par3 + 0.75D;
5211            double var42 = (double)par4 + var32 / 16.0D;
5212            double var44 = (double)par4 + (var32 + (double)var10) / 16.0D;
5213            var5.addVertexWithUV(var34, var38, var42, var22, var28);
5214            var5.addVertexWithUV(var34, var38, var44, var24, var28);
5215            var5.addVertexWithUV(var34, var40, var44, var24, var26);
5216            var5.addVertexWithUV(var34, var40, var42, var22, var26);
5217            var5.addVertexWithUV(var36, var38, var44, var22, var28);
5218            var5.addVertexWithUV(var36, var38, var42, var24, var28);
5219            var5.addVertexWithUV(var36, var40, var42, var24, var26);
5220            var5.addVertexWithUV(var36, var40, var44, var22, var26);
5221            var5.addVertexWithUV(var36, var38, var42, var22, var28);
5222            var5.addVertexWithUV(var34, var38, var42, var24, var28);
5223            var5.addVertexWithUV(var34, var40, var42, var24, var26);
5224            var5.addVertexWithUV(var36, var40, var42, var22, var26);
5225            var5.addVertexWithUV(var34, var38, var44, var22, var28);
5226            var5.addVertexWithUV(var36, var38, var44, var24, var28);
5227            var5.addVertexWithUV(var36, var40, var44, var24, var26);
5228            var5.addVertexWithUV(var34, var40, var44, var22, var26);
5229            int var46 = var10;
5230    
5231            if (var9 >= 2)
5232            {
5233                var46 = var10 - 1;
5234            }
5235    
5236            var22 = (double)((float)(var12 + 0) / 256.0F);
5237            var24 = ((double)(var12 + var46) - 0.01D) / 256.0D;
5238            var26 = (double)((float)(var13 + 0) / 256.0F);
5239            var28 = ((double)(var13 + var46) - 0.01D) / 256.0D;
5240            var5.addVertexWithUV(var34, var40, var44, var22, var28);
5241            var5.addVertexWithUV(var36, var40, var44, var24, var28);
5242            var5.addVertexWithUV(var36, var40, var42, var24, var26);
5243            var5.addVertexWithUV(var34, var40, var42, var22, var26);
5244            var5.addVertexWithUV(var34, var38, var42, var22, var26);
5245            var5.addVertexWithUV(var36, var38, var42, var24, var26);
5246            var5.addVertexWithUV(var36, var38, var44, var24, var28);
5247            var5.addVertexWithUV(var34, var38, var44, var22, var28);
5248            var22 = (double)((float)(var12 + 12) / 256.0F);
5249            var24 = ((double)(var12 + 16) - 0.01D) / 256.0D;
5250            var26 = (double)((float)(var13 + 0) / 256.0F);
5251            var28 = ((double)(var13 + 4) - 0.01D) / 256.0D;
5252            var30 = 8.0D;
5253            var32 = 0.0D;
5254            double var47;
5255    
5256            switch (var8)
5257            {
5258                case 0:
5259                    var30 = 8.0D;
5260                    var32 = 12.0D;
5261                    var47 = var22;
5262                    var22 = var24;
5263                    var24 = var47;
5264                    break;
5265                case 1:
5266                    var30 = 0.0D;
5267                    var32 = 8.0D;
5268                    break;
5269                case 2:
5270                    var30 = 8.0D;
5271                    var32 = 0.0D;
5272                    break;
5273                case 3:
5274                    var30 = 12.0D;
5275                    var32 = 8.0D;
5276                    var47 = var22;
5277                    var22 = var24;
5278                    var24 = var47;
5279            }
5280    
5281            var34 = (double)par2 + var30 / 16.0D;
5282            var36 = (double)par2 + (var30 + 4.0D) / 16.0D;
5283            var38 = (double)par3 + 0.75D;
5284            var40 = (double)par3 + 1.0D;
5285            var42 = (double)par4 + var32 / 16.0D;
5286            var44 = (double)par4 + (var32 + 4.0D) / 16.0D;
5287    
5288            if (var8 != 2 && var8 != 0)
5289            {
5290                if (var8 == 1 || var8 == 3)
5291                {
5292                    var5.addVertexWithUV(var36, var38, var42, var22, var28);
5293                    var5.addVertexWithUV(var34, var38, var42, var24, var28);
5294                    var5.addVertexWithUV(var34, var40, var42, var24, var26);
5295                    var5.addVertexWithUV(var36, var40, var42, var22, var26);
5296                    var5.addVertexWithUV(var34, var38, var42, var24, var28);
5297                    var5.addVertexWithUV(var36, var38, var42, var22, var28);
5298                    var5.addVertexWithUV(var36, var40, var42, var22, var26);
5299                    var5.addVertexWithUV(var34, var40, var42, var24, var26);
5300                }
5301            }
5302            else
5303            {
5304                var5.addVertexWithUV(var34, var38, var42, var24, var28);
5305                var5.addVertexWithUV(var34, var38, var44, var22, var28);
5306                var5.addVertexWithUV(var34, var40, var44, var22, var26);
5307                var5.addVertexWithUV(var34, var40, var42, var24, var26);
5308                var5.addVertexWithUV(var34, var38, var44, var22, var28);
5309                var5.addVertexWithUV(var34, var38, var42, var24, var28);
5310                var5.addVertexWithUV(var34, var40, var42, var24, var26);
5311                var5.addVertexWithUV(var34, var40, var44, var22, var26);
5312            }
5313    
5314            return true;
5315        }
5316    
5317        /**
5318         * Renders beacon block
5319         */
5320        public boolean renderBlockBeacon(BlockBeacon par1BlockBeacon, int par2, int par3, int par4)
5321        {
5322            float var5 = 0.1875F;
5323            this.func_82774_a(Block.obsidian.blockIndexInTexture);
5324            this.setRenderMinMax(0.125D, 0.0D, 0.125D, 0.875D, (double)var5, 0.875D);
5325            this.renderStandardBlock(par1BlockBeacon, par2, par3, par4);
5326            this.func_82774_a(Block.glass.blockIndexInTexture);
5327            this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
5328            this.renderStandardBlock(par1BlockBeacon, par2, par3, par4);
5329            this.func_82774_a(41);
5330            this.setRenderMinMax(0.1875D, (double)var5, 0.1875D, 0.8125D, 0.875D, 0.8125D);
5331            this.renderStandardBlock(par1BlockBeacon, par2, par3, par4);
5332            this.clearOverrideBlockTexture();
5333            return true;
5334        }
5335    
5336        /**
5337         * Renders a cactus block at the given coordinates
5338         */
5339        public boolean renderBlockCactus(Block par1Block, int par2, int par3, int par4)
5340        {
5341            int var5 = par1Block.colorMultiplier(this.blockAccess, par2, par3, par4);
5342            float var6 = (float)(var5 >> 16 & 255) / 255.0F;
5343            float var7 = (float)(var5 >> 8 & 255) / 255.0F;
5344            float var8 = (float)(var5 & 255) / 255.0F;
5345    
5346            if (EntityRenderer.anaglyphEnable)
5347            {
5348                float var9 = (var6 * 30.0F + var7 * 59.0F + var8 * 11.0F) / 100.0F;
5349                float var10 = (var6 * 30.0F + var7 * 70.0F) / 100.0F;
5350                float var11 = (var6 * 30.0F + var8 * 70.0F) / 100.0F;
5351                var6 = var9;
5352                var7 = var10;
5353                var8 = var11;
5354            }
5355    
5356            return this.renderBlockCactusImpl(par1Block, par2, par3, par4, var6, var7, var8);
5357        }
5358    
5359        /**
5360         * Render block cactus implementation
5361         */
5362        public boolean renderBlockCactusImpl(Block par1Block, int par2, int par3, int par4, float par5, float par6, float par7)
5363        {
5364            Tessellator var8 = Tessellator.instance;
5365            boolean var9 = false;
5366            float var10 = 0.5F;
5367            float var11 = 1.0F;
5368            float var12 = 0.8F;
5369            float var13 = 0.6F;
5370            float var14 = var10 * par5;
5371            float var15 = var11 * par5;
5372            float var16 = var12 * par5;
5373            float var17 = var13 * par5;
5374            float var18 = var10 * par6;
5375            float var19 = var11 * par6;
5376            float var20 = var12 * par6;
5377            float var21 = var13 * par6;
5378            float var22 = var10 * par7;
5379            float var23 = var11 * par7;
5380            float var24 = var12 * par7;
5381            float var25 = var13 * par7;
5382            float var26 = 0.0625F;
5383            int var28 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4);
5384    
5385            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 - 1, par4, 0))
5386            {
5387                var8.setBrightness(this.field_83027_i > 0.0D ? var28 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4));
5388                var8.setColorOpaque_F(var14, var18, var22);
5389                this.renderBottomFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0));
5390                var9 = true;
5391            }
5392    
5393            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 + 1, par4, 1))
5394            {
5395                var8.setBrightness(this.field_83024_j < 1.0D ? var28 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4));
5396                var8.setColorOpaque_F(var15, var19, var23);
5397                this.renderTopFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1));
5398                var9 = true;
5399            }
5400    
5401            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 - 1, 2))
5402            {
5403                var8.setBrightness(this.field_83025_k > 0.0D ? var28 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1));
5404                var8.setColorOpaque_F(var16, var20, var24);
5405                var8.addTranslation(0.0F, 0.0F, var26);
5406                this.renderEastFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 2));
5407                var8.addTranslation(0.0F, 0.0F, -var26);
5408                var9 = true;
5409            }
5410    
5411            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3, par4 + 1, 3))
5412            {
5413                var8.setBrightness(this.field_83022_l < 1.0D ? var28 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1));
5414                var8.setColorOpaque_F(var16, var20, var24);
5415                var8.addTranslation(0.0F, 0.0F, -var26);
5416                this.renderWestFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3));
5417                var8.addTranslation(0.0F, 0.0F, var26);
5418                var9 = true;
5419            }
5420    
5421            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2 - 1, par3, par4, 4))
5422            {
5423                var8.setBrightness(this.field_83021_g > 0.0D ? var28 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4));
5424                var8.setColorOpaque_F(var17, var21, var25);
5425                var8.addTranslation(var26, 0.0F, 0.0F);
5426                this.renderNorthFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 4));
5427                var8.addTranslation(-var26, 0.0F, 0.0F);
5428                var9 = true;
5429            }
5430    
5431            if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2 + 1, par3, par4, 5))
5432            {
5433                var8.setBrightness(this.field_83026_h < 1.0D ? var28 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4));
5434                var8.setColorOpaque_F(var17, var21, var25);
5435                var8.addTranslation(-var26, 0.0F, 0.0F);
5436                this.renderSouthFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 5));
5437                var8.addTranslation(var26, 0.0F, 0.0F);
5438                var9 = true;
5439            }
5440    
5441            return var9;
5442        }
5443    
5444        public boolean renderBlockFence(BlockFence par1BlockFence, int par2, int par3, int par4)
5445        {
5446            boolean var5 = false;
5447            float var6 = 0.375F;
5448            float var7 = 0.625F;
5449            this.setRenderMinMax((double)var6, 0.0D, (double)var6, (double)var7, 1.0D, (double)var7);
5450            this.renderStandardBlock(par1BlockFence, par2, par3, par4);
5451            var5 = true;
5452            boolean var8 = false;
5453            boolean var9 = false;
5454    
5455            if (par1BlockFence.canConnectFenceTo(this.blockAccess, par2 - 1, par3, par4) || par1BlockFence.canConnectFenceTo(this.blockAccess, par2 + 1, par3, par4))
5456            {
5457                var8 = true;
5458            }
5459    
5460            if (par1BlockFence.canConnectFenceTo(this.blockAccess, par2, par3, par4 - 1) || par1BlockFence.canConnectFenceTo(this.blockAccess, par2, par3, par4 + 1))
5461            {
5462                var9 = true;
5463            }
5464    
5465            boolean var10 = par1BlockFence.canConnectFenceTo(this.blockAccess, par2 - 1, par3, par4);
5466            boolean var11 = par1BlockFence.canConnectFenceTo(this.blockAccess, par2 + 1, par3, par4);
5467            boolean var12 = par1BlockFence.canConnectFenceTo(this.blockAccess, par2, par3, par4 - 1);
5468            boolean var13 = par1BlockFence.canConnectFenceTo(this.blockAccess, par2, par3, par4 + 1);
5469    
5470            if (!var8 && !var9)
5471            {
5472                var8 = true;
5473            }
5474    
5475            var6 = 0.4375F;
5476            var7 = 0.5625F;
5477            float var14 = 0.75F;
5478            float var15 = 0.9375F;
5479            float var16 = var10 ? 0.0F : var6;
5480            float var17 = var11 ? 1.0F : var7;
5481            float var18 = var12 ? 0.0F : var6;
5482            float var19 = var13 ? 1.0F : var7;
5483    
5484            if (var8)
5485            {
5486                this.setRenderMinMax((double)var16, (double)var14, (double)var6, (double)var17, (double)var15, (double)var7);
5487                this.renderStandardBlock(par1BlockFence, par2, par3, par4);
5488                var5 = true;
5489            }
5490    
5491            if (var9)
5492            {
5493                this.setRenderMinMax((double)var6, (double)var14, (double)var18, (double)var7, (double)var15, (double)var19);
5494                this.renderStandardBlock(par1BlockFence, par2, par3, par4);
5495                var5 = true;
5496            }
5497    
5498            var14 = 0.375F;
5499            var15 = 0.5625F;
5500    
5501            if (var8)
5502            {
5503                this.setRenderMinMax((double)var16, (double)var14, (double)var6, (double)var17, (double)var15, (double)var7);
5504                this.renderStandardBlock(par1BlockFence, par2, par3, par4);
5505                var5 = true;
5506            }
5507    
5508            if (var9)
5509            {
5510                this.setRenderMinMax((double)var6, (double)var14, (double)var18, (double)var7, (double)var15, (double)var19);
5511                this.renderStandardBlock(par1BlockFence, par2, par3, par4);
5512                var5 = true;
5513            }
5514    
5515            par1BlockFence.setBlockBoundsBasedOnState(this.blockAccess, par2, par3, par4);
5516            return var5;
5517        }
5518    
5519        /**
5520         * Renders wall block
5521         */
5522        public boolean renderBlockWall(BlockWall par1BlockWall, int par2, int par3, int par4)
5523        {
5524            boolean var5 = par1BlockWall.canConnectWallTo(this.blockAccess, par2 - 1, par3, par4);
5525            boolean var6 = par1BlockWall.canConnectWallTo(this.blockAccess, par2 + 1, par3, par4);
5526            boolean var7 = par1BlockWall.canConnectWallTo(this.blockAccess, par2, par3, par4 - 1);
5527            boolean var8 = par1BlockWall.canConnectWallTo(this.blockAccess, par2, par3, par4 + 1);
5528            boolean var9 = var7 && var8 && !var5 && !var6;
5529            boolean var10 = !var7 && !var8 && var5 && var6;
5530            boolean var11 = this.blockAccess.isAirBlock(par2, par3 + 1, par4);
5531    
5532            if ((var9 || var10) && var11)
5533            {
5534                if (var9)
5535                {
5536                    this.setRenderMinMax(0.3125D, 0.0D, 0.0D, 0.6875D, 0.8125D, 1.0D);
5537                    this.renderStandardBlock(par1BlockWall, par2, par3, par4);
5538                }
5539                else
5540                {
5541                    this.setRenderMinMax(0.0D, 0.0D, 0.3125D, 1.0D, 0.8125D, 0.6875D);
5542                    this.renderStandardBlock(par1BlockWall, par2, par3, par4);
5543                }
5544            }
5545            else
5546            {
5547                this.setRenderMinMax(0.25D, 0.0D, 0.25D, 0.75D, 1.0D, 0.75D);
5548                this.renderStandardBlock(par1BlockWall, par2, par3, par4);
5549    
5550                if (var5)
5551                {
5552                    this.setRenderMinMax(0.0D, 0.0D, 0.3125D, 0.25D, 0.8125D, 0.6875D);
5553                    this.renderStandardBlock(par1BlockWall, par2, par3, par4);
5554                }
5555    
5556                if (var6)
5557                {
5558                    this.setRenderMinMax(0.75D, 0.0D, 0.3125D, 1.0D, 0.8125D, 0.6875D);
5559                    this.renderStandardBlock(par1BlockWall, par2, par3, par4);
5560                }
5561    
5562                if (var7)
5563                {
5564                    this.setRenderMinMax(0.3125D, 0.0D, 0.0D, 0.6875D, 0.8125D, 0.25D);
5565                    this.renderStandardBlock(par1BlockWall, par2, par3, par4);
5566                }
5567    
5568                if (var8)
5569                {
5570                    this.setRenderMinMax(0.3125D, 0.0D, 0.75D, 0.6875D, 0.8125D, 1.0D);
5571                    this.renderStandardBlock(par1BlockWall, par2, par3, par4);
5572                }
5573            }
5574    
5575            par1BlockWall.setBlockBoundsBasedOnState(this.blockAccess, par2, par3, par4);
5576            return true;
5577        }
5578    
5579        public boolean renderBlockDragonEgg(BlockDragonEgg par1BlockDragonEgg, int par2, int par3, int par4)
5580        {
5581            boolean var5 = false;
5582            int var6 = 0;
5583    
5584            for (int var7 = 0; var7 < 8; ++var7)
5585            {
5586                byte var8 = 0;
5587                byte var9 = 1;
5588    
5589                if (var7 == 0)
5590                {
5591                    var8 = 2;
5592                }
5593    
5594                if (var7 == 1)
5595                {
5596                    var8 = 3;
5597                }
5598    
5599                if (var7 == 2)
5600                {
5601                    var8 = 4;
5602                }
5603    
5604                if (var7 == 3)
5605                {
5606                    var8 = 5;
5607                    var9 = 2;
5608                }
5609    
5610                if (var7 == 4)
5611                {
5612                    var8 = 6;
5613                    var9 = 3;
5614                }
5615    
5616                if (var7 == 5)
5617                {
5618                    var8 = 7;
5619                    var9 = 5;
5620                }
5621    
5622                if (var7 == 6)
5623                {
5624                    var8 = 6;
5625                    var9 = 2;
5626                }
5627    
5628                if (var7 == 7)
5629                {
5630                    var8 = 3;
5631                }
5632    
5633                float var10 = (float)var8 / 16.0F;
5634                float var11 = 1.0F - (float)var6 / 16.0F;
5635                float var12 = 1.0F - (float)(var6 + var9) / 16.0F;
5636                var6 += var9;
5637                this.setRenderMinMax((double)(0.5F - var10), (double)var12, (double)(0.5F - var10), (double)(0.5F + var10), (double)var11, (double)(0.5F + var10));
5638                this.renderStandardBlock(par1BlockDragonEgg, par2, par3, par4);
5639            }
5640    
5641            var5 = true;
5642            this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
5643            return var5;
5644        }
5645    
5646        /**
5647         * Render block fence gate
5648         */
5649        public boolean renderBlockFenceGate(BlockFenceGate par1BlockFenceGate, int par2, int par3, int par4)
5650        {
5651            boolean var5 = true;
5652            int var6 = this.blockAccess.getBlockMetadata(par2, par3, par4);
5653            boolean var7 = BlockFenceGate.isFenceGateOpen(var6);
5654            int var8 = BlockDirectional.getDirection(var6);
5655            float var9 = 0.375F;
5656            float var10 = 0.5625F;
5657            float var11 = 0.75F;
5658            float var12 = 0.9375F;
5659            float var13 = 0.3125F;
5660            float var14 = 1.0F;
5661    
5662            if ((var8 == 2 || var8 == 0) && this.blockAccess.getBlockId(par2 - 1, par3, par4) == Block.cobblestoneWall.blockID && this.blockAccess.getBlockId(par2 + 1, par3, par4) == Block.cobblestoneWall.blockID || (var8 == 3 || var8 == 1) && this.blockAccess.getBlockId(par2, par3, par4 - 1) == Block.cobblestoneWall.blockID && this.blockAccess.getBlockId(par2, par3, par4 + 1) == Block.cobblestoneWall.blockID)
5663            {
5664                var9 -= 0.1875F;
5665                var10 -= 0.1875F;
5666                var11 -= 0.1875F;
5667                var12 -= 0.1875F;
5668                var13 -= 0.1875F;
5669                var14 -= 0.1875F;
5670            }
5671    
5672            this.renderAllFaces = true;
5673            float var15;
5674            float var17;
5675            float var16;
5676            float var18;
5677    
5678            if (var8 != 3 && var8 != 1)
5679            {
5680                var15 = 0.0F;
5681                var16 = 0.125F;
5682                var17 = 0.4375F;
5683                var18 = 0.5625F;
5684                this.setRenderMinMax((double)var15, (double)var13, (double)var17, (double)var16, (double)var14, (double)var18);
5685                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5686                var15 = 0.875F;
5687                var16 = 1.0F;
5688                this.setRenderMinMax((double)var15, (double)var13, (double)var17, (double)var16, (double)var14, (double)var18);
5689                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5690            }
5691            else
5692            {
5693                this.uvRotateTop = 1;
5694                var15 = 0.4375F;
5695                var16 = 0.5625F;
5696                var17 = 0.0F;
5697                var18 = 0.125F;
5698                this.setRenderMinMax((double)var15, (double)var13, (double)var17, (double)var16, (double)var14, (double)var18);
5699                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5700                var17 = 0.875F;
5701                var18 = 1.0F;
5702                this.setRenderMinMax((double)var15, (double)var13, (double)var17, (double)var16, (double)var14, (double)var18);
5703                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5704                this.uvRotateTop = 0;
5705            }
5706    
5707            if (var7)
5708            {
5709                if (var8 == 2 || var8 == 0)
5710                {
5711                    this.uvRotateTop = 1;
5712                }
5713    
5714                if (var8 == 3)
5715                {
5716                    this.setRenderMinMax(0.8125D, (double)var9, 0.0D, 0.9375D, (double)var12, 0.125D);
5717                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5718                    this.setRenderMinMax(0.8125D, (double)var9, 0.875D, 0.9375D, (double)var12, 1.0D);
5719                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5720                    this.setRenderMinMax(0.5625D, (double)var9, 0.0D, 0.8125D, (double)var10, 0.125D);
5721                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5722                    this.setRenderMinMax(0.5625D, (double)var9, 0.875D, 0.8125D, (double)var10, 1.0D);
5723                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5724                    this.setRenderMinMax(0.5625D, (double)var11, 0.0D, 0.8125D, (double)var12, 0.125D);
5725                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5726                    this.setRenderMinMax(0.5625D, (double)var11, 0.875D, 0.8125D, (double)var12, 1.0D);
5727                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5728                }
5729                else if (var8 == 1)
5730                {
5731                    this.setRenderMinMax(0.0625D, (double)var9, 0.0D, 0.1875D, (double)var12, 0.125D);
5732                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5733                    this.setRenderMinMax(0.0625D, (double)var9, 0.875D, 0.1875D, (double)var12, 1.0D);
5734                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5735                    this.setRenderMinMax(0.1875D, (double)var9, 0.0D, 0.4375D, (double)var10, 0.125D);
5736                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5737                    this.setRenderMinMax(0.1875D, (double)var9, 0.875D, 0.4375D, (double)var10, 1.0D);
5738                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5739                    this.setRenderMinMax(0.1875D, (double)var11, 0.0D, 0.4375D, (double)var12, 0.125D);
5740                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5741                    this.setRenderMinMax(0.1875D, (double)var11, 0.875D, 0.4375D, (double)var12, 1.0D);
5742                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5743                }
5744                else if (var8 == 0)
5745                {
5746                    this.setRenderMinMax(0.0D, (double)var9, 0.8125D, 0.125D, (double)var12, 0.9375D);
5747                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5748                    this.setRenderMinMax(0.875D, (double)var9, 0.8125D, 1.0D, (double)var12, 0.9375D);
5749                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5750                    this.setRenderMinMax(0.0D, (double)var9, 0.5625D, 0.125D, (double)var10, 0.8125D);
5751                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5752                    this.setRenderMinMax(0.875D, (double)var9, 0.5625D, 1.0D, (double)var10, 0.8125D);
5753                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5754                    this.setRenderMinMax(0.0D, (double)var11, 0.5625D, 0.125D, (double)var12, 0.8125D);
5755                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5756                    this.setRenderMinMax(0.875D, (double)var11, 0.5625D, 1.0D, (double)var12, 0.8125D);
5757                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5758                }
5759                else if (var8 == 2)
5760                {
5761                    this.setRenderMinMax(0.0D, (double)var9, 0.0625D, 0.125D, (double)var12, 0.1875D);
5762                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5763                    this.setRenderMinMax(0.875D, (double)var9, 0.0625D, 1.0D, (double)var12, 0.1875D);
5764                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5765                    this.setRenderMinMax(0.0D, (double)var9, 0.1875D, 0.125D, (double)var10, 0.4375D);
5766                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5767                    this.setRenderMinMax(0.875D, (double)var9, 0.1875D, 1.0D, (double)var10, 0.4375D);
5768                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5769                    this.setRenderMinMax(0.0D, (double)var11, 0.1875D, 0.125D, (double)var12, 0.4375D);
5770                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5771                    this.setRenderMinMax(0.875D, (double)var11, 0.1875D, 1.0D, (double)var12, 0.4375D);
5772                    this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5773                }
5774            }
5775            else if (var8 != 3 && var8 != 1)
5776            {
5777                var15 = 0.375F;
5778                var16 = 0.5F;
5779                var17 = 0.4375F;
5780                var18 = 0.5625F;
5781                this.setRenderMinMax((double)var15, (double)var9, (double)var17, (double)var16, (double)var12, (double)var18);
5782                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5783                var15 = 0.5F;
5784                var16 = 0.625F;
5785                this.setRenderMinMax((double)var15, (double)var9, (double)var17, (double)var16, (double)var12, (double)var18);
5786                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5787                var15 = 0.625F;
5788                var16 = 0.875F;
5789                this.setRenderMinMax((double)var15, (double)var9, (double)var17, (double)var16, (double)var10, (double)var18);
5790                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5791                this.setRenderMinMax((double)var15, (double)var11, (double)var17, (double)var16, (double)var12, (double)var18);
5792                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5793                var15 = 0.125F;
5794                var16 = 0.375F;
5795                this.setRenderMinMax((double)var15, (double)var9, (double)var17, (double)var16, (double)var10, (double)var18);
5796                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5797                this.setRenderMinMax((double)var15, (double)var11, (double)var17, (double)var16, (double)var12, (double)var18);
5798                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5799            }
5800            else
5801            {
5802                this.uvRotateTop = 1;
5803                var15 = 0.4375F;
5804                var16 = 0.5625F;
5805                var17 = 0.375F;
5806                var18 = 0.5F;
5807                this.setRenderMinMax((double)var15, (double)var9, (double)var17, (double)var16, (double)var12, (double)var18);
5808                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5809                var17 = 0.5F;
5810                var18 = 0.625F;
5811                this.setRenderMinMax((double)var15, (double)var9, (double)var17, (double)var16, (double)var12, (double)var18);
5812                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5813                var17 = 0.625F;
5814                var18 = 0.875F;
5815                this.setRenderMinMax((double)var15, (double)var9, (double)var17, (double)var16, (double)var10, (double)var18);
5816                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5817                this.setRenderMinMax((double)var15, (double)var11, (double)var17, (double)var16, (double)var12, (double)var18);
5818                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5819                var17 = 0.125F;
5820                var18 = 0.375F;
5821                this.setRenderMinMax((double)var15, (double)var9, (double)var17, (double)var16, (double)var10, (double)var18);
5822                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5823                this.setRenderMinMax((double)var15, (double)var11, (double)var17, (double)var16, (double)var12, (double)var18);
5824                this.renderStandardBlock(par1BlockFenceGate, par2, par3, par4);
5825            }
5826    
5827            this.renderAllFaces = false;
5828            this.uvRotateTop = 0;
5829            this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
5830            return var5;
5831        }
5832    
5833        /**
5834         * Renders a stair block at the given coordinates
5835         */
5836        public boolean renderBlockStairs(BlockStairs par1BlockStairs, int par2, int par3, int par4)
5837        {
5838            par1BlockStairs.func_82541_d(this.blockAccess, par2, par3, par4);
5839            this.func_83018_a(par1BlockStairs);
5840            this.renderStandardBlock(par1BlockStairs, par2, par3, par4);
5841            boolean var5 = par1BlockStairs.func_82542_g(this.blockAccess, par2, par3, par4);
5842            this.func_83018_a(par1BlockStairs);
5843            this.renderStandardBlock(par1BlockStairs, par2, par3, par4);
5844    
5845            if (var5 && par1BlockStairs.func_82544_h(this.blockAccess, par2, par3, par4))
5846            {
5847                this.func_83018_a(par1BlockStairs);
5848                this.renderStandardBlock(par1BlockStairs, par2, par3, par4);
5849            }
5850    
5851            return true;
5852        }
5853    
5854        /**
5855         * Renders a door block at the given coordinates
5856         */
5857        public boolean renderBlockDoor(Block par1Block, int par2, int par3, int par4)
5858        {
5859            Tessellator var5 = Tessellator.instance;
5860            boolean var6 = false;
5861            float var7 = 0.5F;
5862            float var8 = 1.0F;
5863            float var9 = 0.8F;
5864            float var10 = 0.6F;
5865            int var11 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4);
5866            var5.setBrightness(this.field_83027_i > 0.0D ? var11 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4));
5867            var5.setColorOpaque_F(var7, var7, var7);
5868            this.renderBottomFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0));
5869            var6 = true;
5870            var5.setBrightness(this.field_83024_j < 1.0D ? var11 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4));
5871            var5.setColorOpaque_F(var8, var8, var8);
5872            this.renderTopFace(par1Block, (double)par2, (double)par3, (double)par4, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1));
5873            var6 = true;
5874            var5.setBrightness(this.field_83025_k > 0.0D ? var11 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 - 1));
5875            var5.setColorOpaque_F(var9, var9, var9);
5876            int var13 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 2);
5877    
5878            if (var13 < 0)
5879            {
5880                this.flipTexture = true;
5881                var13 = -var13;
5882            }
5883    
5884            this.renderEastFace(par1Block, (double)par2, (double)par3, (double)par4, var13);
5885            var6 = true;
5886            this.flipTexture = false;
5887            var5.setBrightness(this.field_83022_l < 1.0D ? var11 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4 + 1));
5888            var5.setColorOpaque_F(var9, var9, var9);
5889            var13 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3);
5890    
5891            if (var13 < 0)
5892            {
5893                this.flipTexture = true;
5894                var13 = -var13;
5895            }
5896    
5897            this.renderWestFace(par1Block, (double)par2, (double)par3, (double)par4, var13);
5898            var6 = true;
5899            this.flipTexture = false;
5900            var5.setBrightness(this.field_83021_g > 0.0D ? var11 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 - 1, par3, par4));
5901            var5.setColorOpaque_F(var10, var10, var10);
5902            var13 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 4);
5903    
5904            if (var13 < 0)
5905            {
5906                this.flipTexture = true;
5907                var13 = -var13;
5908            }
5909    
5910            this.renderNorthFace(par1Block, (double)par2, (double)par3, (double)par4, var13);
5911            var6 = true;
5912            this.flipTexture = false;
5913            var5.setBrightness(this.field_83026_h < 1.0D ? var11 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2 + 1, par3, par4));
5914            var5.setColorOpaque_F(var10, var10, var10);
5915            var13 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 5);
5916    
5917            if (var13 < 0)
5918            {
5919                this.flipTexture = true;
5920                var13 = -var13;
5921            }
5922    
5923            this.renderSouthFace(par1Block, (double)par2, (double)par3, (double)par4, var13);
5924            var6 = true;
5925            this.flipTexture = false;
5926            return var6;
5927        }
5928    
5929        /**
5930         * Renders the given texture to the bottom face of the block. Args: block, x, y, z, texture
5931         */
5932        public void renderBottomFace(Block par1Block, double par2, double par4, double par6, int par8)
5933        {
5934            Tessellator var9 = Tessellator.instance;
5935    
5936            if (this.overrideBlockTexture >= 0)
5937            {
5938                par8 = this.overrideBlockTexture;
5939            }
5940    
5941            int var10 = (par8 & 15) << 4;
5942            int var11 = par8 & 240;
5943            double var12 = ((double)var10 + this.field_83021_g * 16.0D) / 256.0D;
5944            double var14 = ((double)var10 + this.field_83026_h * 16.0D - 0.01D) / 256.0D;
5945            double var16 = ((double)var11 + this.field_83025_k * 16.0D) / 256.0D;
5946            double var18 = ((double)var11 + this.field_83022_l * 16.0D - 0.01D) / 256.0D;
5947    
5948            if (this.field_83021_g < 0.0D || this.field_83026_h > 1.0D)
5949            {
5950                var12 = (double)(((float)var10 + 0.0F) / 256.0F);
5951                var14 = (double)(((float)var10 + 15.99F) / 256.0F);
5952            }
5953    
5954            if (this.field_83025_k < 0.0D || this.field_83022_l > 1.0D)
5955            {
5956                var16 = (double)(((float)var11 + 0.0F) / 256.0F);
5957                var18 = (double)(((float)var11 + 15.99F) / 256.0F);
5958            }
5959    
5960            double var20 = var14;
5961            double var22 = var12;
5962            double var24 = var16;
5963            double var26 = var18;
5964    
5965            if (this.uvRotateBottom == 2)
5966            {
5967                var12 = ((double)var10 + this.field_83025_k * 16.0D) / 256.0D;
5968                var16 = ((double)(var11 + 16) - this.field_83026_h * 16.0D) / 256.0D;
5969                var14 = ((double)var10 + this.field_83022_l * 16.0D) / 256.0D;
5970                var18 = ((double)(var11 + 16) - this.field_83021_g * 16.0D) / 256.0D;
5971                var24 = var16;
5972                var26 = var18;
5973                var20 = var12;
5974                var22 = var14;
5975                var16 = var18;
5976                var18 = var24;
5977            }
5978            else if (this.uvRotateBottom == 1)
5979            {
5980                var12 = ((double)(var10 + 16) - this.field_83022_l * 16.0D) / 256.0D;
5981                var16 = ((double)var11 + this.field_83021_g * 16.0D) / 256.0D;
5982                var14 = ((double)(var10 + 16) - this.field_83025_k * 16.0D) / 256.0D;
5983                var18 = ((double)var11 + this.field_83026_h * 16.0D) / 256.0D;
5984                var20 = var14;
5985                var22 = var12;
5986                var12 = var14;
5987                var14 = var22;
5988                var24 = var18;
5989                var26 = var16;
5990            }
5991            else if (this.uvRotateBottom == 3)
5992            {
5993                var12 = ((double)(var10 + 16) - this.field_83021_g * 16.0D) / 256.0D;
5994                var14 = ((double)(var10 + 16) - this.field_83026_h * 16.0D - 0.01D) / 256.0D;
5995                var16 = ((double)(var11 + 16) - this.field_83025_k * 16.0D) / 256.0D;
5996                var18 = ((double)(var11 + 16) - this.field_83022_l * 16.0D - 0.01D) / 256.0D;
5997                var20 = var14;
5998                var22 = var12;
5999                var24 = var16;
6000                var26 = var18;
6001            }
6002    
6003            double var28 = par2 + this.field_83021_g;
6004            double var30 = par2 + this.field_83026_h;
6005            double var32 = par4 + this.field_83027_i;
6006            double var34 = par6 + this.field_83025_k;
6007            double var36 = par6 + this.field_83022_l;
6008    
6009            if (this.enableAO)
6010            {
6011                var9.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft);
6012                var9.setBrightness(this.brightnessTopLeft);
6013                var9.addVertexWithUV(var28, var32, var36, var22, var26);
6014                var9.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft);
6015                var9.setBrightness(this.brightnessBottomLeft);
6016                var9.addVertexWithUV(var28, var32, var34, var12, var16);
6017                var9.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight);
6018                var9.setBrightness(this.brightnessBottomRight);
6019                var9.addVertexWithUV(var30, var32, var34, var20, var24);
6020                var9.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight);
6021                var9.setBrightness(this.brightnessTopRight);
6022                var9.addVertexWithUV(var30, var32, var36, var14, var18);
6023            }
6024            else
6025            {
6026                var9.addVertexWithUV(var28, var32, var36, var22, var26);
6027                var9.addVertexWithUV(var28, var32, var34, var12, var16);
6028                var9.addVertexWithUV(var30, var32, var34, var20, var24);
6029                var9.addVertexWithUV(var30, var32, var36, var14, var18);
6030            }
6031        }
6032    
6033        /**
6034         * Renders the given texture to the top face of the block. Args: block, x, y, z, texture
6035         */
6036        public void renderTopFace(Block par1Block, double par2, double par4, double par6, int par8)
6037        {
6038            Tessellator var9 = Tessellator.instance;
6039    
6040            if (this.overrideBlockTexture >= 0)
6041            {
6042                par8 = this.overrideBlockTexture;
6043            }
6044    
6045            int var10 = (par8 & 15) << 4;
6046            int var11 = par8 & 240;
6047            double var12 = ((double)var10 + this.field_83021_g * 16.0D) / 256.0D;
6048            double var14 = ((double)var10 + this.field_83026_h * 16.0D - 0.01D) / 256.0D;
6049            double var16 = ((double)var11 + this.field_83025_k * 16.0D) / 256.0D;
6050            double var18 = ((double)var11 + this.field_83022_l * 16.0D - 0.01D) / 256.0D;
6051    
6052            if (this.field_83021_g < 0.0D || this.field_83026_h > 1.0D)
6053            {
6054                var12 = (double)(((float)var10 + 0.0F) / 256.0F);
6055                var14 = (double)(((float)var10 + 15.99F) / 256.0F);
6056            }
6057    
6058            if (this.field_83025_k < 0.0D || this.field_83022_l > 1.0D)
6059            {
6060                var16 = (double)(((float)var11 + 0.0F) / 256.0F);
6061                var18 = (double)(((float)var11 + 15.99F) / 256.0F);
6062            }
6063    
6064            double var20 = var14;
6065            double var22 = var12;
6066            double var24 = var16;
6067            double var26 = var18;
6068    
6069            if (this.uvRotateTop == 1)
6070            {
6071                var12 = ((double)var10 + this.field_83025_k * 16.0D) / 256.0D;
6072                var16 = ((double)(var11 + 16) - this.field_83026_h * 16.0D) / 256.0D;
6073                var14 = ((double)var10 + this.field_83022_l * 16.0D) / 256.0D;
6074                var18 = ((double)(var11 + 16) - this.field_83021_g * 16.0D) / 256.0D;
6075                var24 = var16;
6076                var26 = var18;
6077                var20 = var12;
6078                var22 = var14;
6079                var16 = var18;
6080                var18 = var24;
6081            }
6082            else if (this.uvRotateTop == 2)
6083            {
6084                var12 = ((double)(var10 + 16) - this.field_83022_l * 16.0D) / 256.0D;
6085                var16 = ((double)var11 + this.field_83021_g * 16.0D) / 256.0D;
6086                var14 = ((double)(var10 + 16) - this.field_83025_k * 16.0D) / 256.0D;
6087                var18 = ((double)var11 + this.field_83026_h * 16.0D) / 256.0D;
6088                var20 = var14;
6089                var22 = var12;
6090                var12 = var14;
6091                var14 = var22;
6092                var24 = var18;
6093                var26 = var16;
6094            }
6095            else if (this.uvRotateTop == 3)
6096            {
6097                var12 = ((double)(var10 + 16) - this.field_83021_g * 16.0D) / 256.0D;
6098                var14 = ((double)(var10 + 16) - this.field_83026_h * 16.0D - 0.01D) / 256.0D;
6099                var16 = ((double)(var11 + 16) - this.field_83025_k * 16.0D) / 256.0D;
6100                var18 = ((double)(var11 + 16) - this.field_83022_l * 16.0D - 0.01D) / 256.0D;
6101                var20 = var14;
6102                var22 = var12;
6103                var24 = var16;
6104                var26 = var18;
6105            }
6106    
6107            double var28 = par2 + this.field_83021_g;
6108            double var30 = par2 + this.field_83026_h;
6109            double var32 = par4 + this.field_83024_j;
6110            double var34 = par6 + this.field_83025_k;
6111            double var36 = par6 + this.field_83022_l;
6112    
6113            if (this.enableAO)
6114            {
6115                var9.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft);
6116                var9.setBrightness(this.brightnessTopLeft);
6117                var9.addVertexWithUV(var30, var32, var36, var14, var18);
6118                var9.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft);
6119                var9.setBrightness(this.brightnessBottomLeft);
6120                var9.addVertexWithUV(var30, var32, var34, var20, var24);
6121                var9.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight);
6122                var9.setBrightness(this.brightnessBottomRight);
6123                var9.addVertexWithUV(var28, var32, var34, var12, var16);
6124                var9.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight);
6125                var9.setBrightness(this.brightnessTopRight);
6126                var9.addVertexWithUV(var28, var32, var36, var22, var26);
6127            }
6128            else
6129            {
6130                var9.addVertexWithUV(var30, var32, var36, var14, var18);
6131                var9.addVertexWithUV(var30, var32, var34, var20, var24);
6132                var9.addVertexWithUV(var28, var32, var34, var12, var16);
6133                var9.addVertexWithUV(var28, var32, var36, var22, var26);
6134            }
6135        }
6136    
6137        /**
6138         * Renders the given texture to the east (z-negative) face of the block.  Args: block, x, y, z, texture
6139         */
6140        public void renderEastFace(Block par1Block, double par2, double par4, double par6, int par8)
6141        {
6142            Tessellator var9 = Tessellator.instance;
6143    
6144            if (this.overrideBlockTexture >= 0)
6145            {
6146                par8 = this.overrideBlockTexture;
6147            }
6148    
6149            int var10 = (par8 & 15) << 4;
6150            int var11 = par8 & 240;
6151            double var12 = ((double)var10 + this.field_83021_g * 16.0D) / 256.0D;
6152            double var14 = ((double)var10 + this.field_83026_h * 16.0D - 0.01D) / 256.0D;
6153            double var16 = ((double)(var11 + 16) - this.field_83024_j * 16.0D) / 256.0D;
6154            double var18 = ((double)(var11 + 16) - this.field_83027_i * 16.0D - 0.01D) / 256.0D;
6155            double var20;
6156    
6157            if (this.flipTexture)
6158            {
6159                var20 = var12;
6160                var12 = var14;
6161                var14 = var20;
6162            }
6163    
6164            if (this.field_83021_g < 0.0D || this.field_83026_h > 1.0D)
6165            {
6166                var12 = (double)(((float)var10 + 0.0F) / 256.0F);
6167                var14 = (double)(((float)var10 + 15.99F) / 256.0F);
6168            }
6169    
6170            if (this.field_83027_i < 0.0D || this.field_83024_j > 1.0D)
6171            {
6172                var16 = (double)(((float)var11 + 0.0F) / 256.0F);
6173                var18 = (double)(((float)var11 + 15.99F) / 256.0F);
6174            }
6175    
6176            var20 = var14;
6177            double var22 = var12;
6178            double var24 = var16;
6179            double var26 = var18;
6180    
6181            if (this.uvRotateEast == 2)
6182            {
6183                var12 = ((double)var10 + this.field_83027_i * 16.0D) / 256.0D;
6184                var16 = ((double)(var11 + 16) - this.field_83021_g * 16.0D) / 256.0D;
6185                var14 = ((double)var10 + this.field_83024_j * 16.0D) / 256.0D;
6186                var18 = ((double)(var11 + 16) - this.field_83026_h * 16.0D) / 256.0D;
6187                var24 = var16;
6188                var26 = var18;
6189                var20 = var12;
6190                var22 = var14;
6191                var16 = var18;
6192                var18 = var24;
6193            }
6194            else if (this.uvRotateEast == 1)
6195            {
6196                var12 = ((double)(var10 + 16) - this.field_83024_j * 16.0D) / 256.0D;
6197                var16 = ((double)var11 + this.field_83026_h * 16.0D) / 256.0D;
6198                var14 = ((double)(var10 + 16) - this.field_83027_i * 16.0D) / 256.0D;
6199                var18 = ((double)var11 + this.field_83021_g * 16.0D) / 256.0D;
6200                var20 = var14;
6201                var22 = var12;
6202                var12 = var14;
6203                var14 = var22;
6204                var24 = var18;
6205                var26 = var16;
6206            }
6207            else if (this.uvRotateEast == 3)
6208            {
6209                var12 = ((double)(var10 + 16) - this.field_83021_g * 16.0D) / 256.0D;
6210                var14 = ((double)(var10 + 16) - this.field_83026_h * 16.0D - 0.01D) / 256.0D;
6211                var16 = ((double)var11 + this.field_83024_j * 16.0D) / 256.0D;
6212                var18 = ((double)var11 + this.field_83027_i * 16.0D - 0.01D) / 256.0D;
6213                var20 = var14;
6214                var22 = var12;
6215                var24 = var16;
6216                var26 = var18;
6217            }
6218    
6219            double var28 = par2 + this.field_83021_g;
6220            double var30 = par2 + this.field_83026_h;
6221            double var32 = par4 + this.field_83027_i;
6222            double var34 = par4 + this.field_83024_j;
6223            double var36 = par6 + this.field_83025_k;
6224    
6225            if (this.enableAO)
6226            {
6227                var9.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft);
6228                var9.setBrightness(this.brightnessTopLeft);
6229                var9.addVertexWithUV(var28, var34, var36, var20, var24);
6230                var9.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft);
6231                var9.setBrightness(this.brightnessBottomLeft);
6232                var9.addVertexWithUV(var30, var34, var36, var12, var16);
6233                var9.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight);
6234                var9.setBrightness(this.brightnessBottomRight);
6235                var9.addVertexWithUV(var30, var32, var36, var22, var26);
6236                var9.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight);
6237                var9.setBrightness(this.brightnessTopRight);
6238                var9.addVertexWithUV(var28, var32, var36, var14, var18);
6239            }
6240            else
6241            {
6242                var9.addVertexWithUV(var28, var34, var36, var20, var24);
6243                var9.addVertexWithUV(var30, var34, var36, var12, var16);
6244                var9.addVertexWithUV(var30, var32, var36, var22, var26);
6245                var9.addVertexWithUV(var28, var32, var36, var14, var18);
6246            }
6247        }
6248    
6249        /**
6250         * Renders the given texture to the west (z-positive) face of the block.  Args: block, x, y, z, texture
6251         */
6252        public void renderWestFace(Block par1Block, double par2, double par4, double par6, int par8)
6253        {
6254            Tessellator var9 = Tessellator.instance;
6255    
6256            if (this.overrideBlockTexture >= 0)
6257            {
6258                par8 = this.overrideBlockTexture;
6259            }
6260    
6261            int var10 = (par8 & 15) << 4;
6262            int var11 = par8 & 240;
6263            double var12 = ((double)var10 + this.field_83021_g * 16.0D) / 256.0D;
6264            double var14 = ((double)var10 + this.field_83026_h * 16.0D - 0.01D) / 256.0D;
6265            double var16 = ((double)(var11 + 16) - this.field_83024_j * 16.0D) / 256.0D;
6266            double var18 = ((double)(var11 + 16) - this.field_83027_i * 16.0D - 0.01D) / 256.0D;
6267            double var20;
6268    
6269            if (this.flipTexture)
6270            {
6271                var20 = var12;
6272                var12 = var14;
6273                var14 = var20;
6274            }
6275    
6276            if (this.field_83021_g < 0.0D || this.field_83026_h > 1.0D)
6277            {
6278                var12 = (double)(((float)var10 + 0.0F) / 256.0F);
6279                var14 = (double)(((float)var10 + 15.99F) / 256.0F);
6280            }
6281    
6282            if (this.field_83027_i < 0.0D || this.field_83024_j > 1.0D)
6283            {
6284                var16 = (double)(((float)var11 + 0.0F) / 256.0F);
6285                var18 = (double)(((float)var11 + 15.99F) / 256.0F);
6286            }
6287    
6288            var20 = var14;
6289            double var22 = var12;
6290            double var24 = var16;
6291            double var26 = var18;
6292    
6293            if (this.uvRotateWest == 1)
6294            {
6295                var12 = ((double)var10 + this.field_83027_i * 16.0D) / 256.0D;
6296                var18 = ((double)(var11 + 16) - this.field_83021_g * 16.0D) / 256.0D;
6297                var14 = ((double)var10 + this.field_83024_j * 16.0D) / 256.0D;
6298                var16 = ((double)(var11 + 16) - this.field_83026_h * 16.0D) / 256.0D;
6299                var24 = var16;
6300                var26 = var18;
6301                var20 = var12;
6302                var22 = var14;
6303                var16 = var18;
6304                var18 = var24;
6305            }
6306            else if (this.uvRotateWest == 2)
6307            {
6308                var12 = ((double)(var10 + 16) - this.field_83024_j * 16.0D) / 256.0D;
6309                var16 = ((double)var11 + this.field_83021_g * 16.0D) / 256.0D;
6310                var14 = ((double)(var10 + 16) - this.field_83027_i * 16.0D) / 256.0D;
6311                var18 = ((double)var11 + this.field_83026_h * 16.0D) / 256.0D;
6312                var20 = var14;
6313                var22 = var12;
6314                var12 = var14;
6315                var14 = var22;
6316                var24 = var18;
6317                var26 = var16;
6318            }
6319            else if (this.uvRotateWest == 3)
6320            {
6321                var12 = ((double)(var10 + 16) - this.field_83021_g * 16.0D) / 256.0D;
6322                var14 = ((double)(var10 + 16) - this.field_83026_h * 16.0D - 0.01D) / 256.0D;
6323                var16 = ((double)var11 + this.field_83024_j * 16.0D) / 256.0D;
6324                var18 = ((double)var11 + this.field_83027_i * 16.0D - 0.01D) / 256.0D;
6325                var20 = var14;
6326                var22 = var12;
6327                var24 = var16;
6328                var26 = var18;
6329            }
6330    
6331            double var28 = par2 + this.field_83021_g;
6332            double var30 = par2 + this.field_83026_h;
6333            double var32 = par4 + this.field_83027_i;
6334            double var34 = par4 + this.field_83024_j;
6335            double var36 = par6 + this.field_83022_l;
6336    
6337            if (this.enableAO)
6338            {
6339                var9.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft);
6340                var9.setBrightness(this.brightnessTopLeft);
6341                var9.addVertexWithUV(var28, var34, var36, var12, var16);
6342                var9.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft);
6343                var9.setBrightness(this.brightnessBottomLeft);
6344                var9.addVertexWithUV(var28, var32, var36, var22, var26);
6345                var9.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight);
6346                var9.setBrightness(this.brightnessBottomRight);
6347                var9.addVertexWithUV(var30, var32, var36, var14, var18);
6348                var9.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight);
6349                var9.setBrightness(this.brightnessTopRight);
6350                var9.addVertexWithUV(var30, var34, var36, var20, var24);
6351            }
6352            else
6353            {
6354                var9.addVertexWithUV(var28, var34, var36, var12, var16);
6355                var9.addVertexWithUV(var28, var32, var36, var22, var26);
6356                var9.addVertexWithUV(var30, var32, var36, var14, var18);
6357                var9.addVertexWithUV(var30, var34, var36, var20, var24);
6358            }
6359        }
6360    
6361        /**
6362         * Renders the given texture to the north (x-negative) face of the block.  Args: block, x, y, z, texture
6363         */
6364        public void renderNorthFace(Block par1Block, double par2, double par4, double par6, int par8)
6365        {
6366            Tessellator var9 = Tessellator.instance;
6367    
6368            if (this.overrideBlockTexture >= 0)
6369            {
6370                par8 = this.overrideBlockTexture;
6371            }
6372    
6373            int var10 = (par8 & 15) << 4;
6374            int var11 = par8 & 240;
6375            double var12 = ((double)var10 + this.field_83025_k * 16.0D) / 256.0D;
6376            double var14 = ((double)var10 + this.field_83022_l * 16.0D - 0.01D) / 256.0D;
6377            double var16 = ((double)(var11 + 16) - this.field_83024_j * 16.0D) / 256.0D;
6378            double var18 = ((double)(var11 + 16) - this.field_83027_i * 16.0D - 0.01D) / 256.0D;
6379            double var20;
6380    
6381            if (this.flipTexture)
6382            {
6383                var20 = var12;
6384                var12 = var14;
6385                var14 = var20;
6386            }
6387    
6388            if (this.field_83025_k < 0.0D || this.field_83022_l > 1.0D)
6389            {
6390                var12 = (double)(((float)var10 + 0.0F) / 256.0F);
6391                var14 = (double)(((float)var10 + 15.99F) / 256.0F);
6392            }
6393    
6394            if (this.field_83027_i < 0.0D || this.field_83024_j > 1.0D)
6395            {
6396                var16 = (double)(((float)var11 + 0.0F) / 256.0F);
6397                var18 = (double)(((float)var11 + 15.99F) / 256.0F);
6398            }
6399    
6400            var20 = var14;
6401            double var22 = var12;
6402            double var24 = var16;
6403            double var26 = var18;
6404    
6405            if (this.uvRotateNorth == 1)
6406            {
6407                var12 = ((double)var10 + this.field_83027_i * 16.0D) / 256.0D;
6408                var16 = ((double)(var11 + 16) - this.field_83022_l * 16.0D) / 256.0D;
6409                var14 = ((double)var10 + this.field_83024_j * 16.0D) / 256.0D;
6410                var18 = ((double)(var11 + 16) - this.field_83025_k * 16.0D) / 256.0D;
6411                var24 = var16;
6412                var26 = var18;
6413                var20 = var12;
6414                var22 = var14;
6415                var16 = var18;
6416                var18 = var24;
6417            }
6418            else if (this.uvRotateNorth == 2)
6419            {
6420                var12 = ((double)(var10 + 16) - this.field_83024_j * 16.0D) / 256.0D;
6421                var16 = ((double)var11 + this.field_83025_k * 16.0D) / 256.0D;
6422                var14 = ((double)(var10 + 16) - this.field_83027_i * 16.0D) / 256.0D;
6423                var18 = ((double)var11 + this.field_83022_l * 16.0D) / 256.0D;
6424                var20 = var14;
6425                var22 = var12;
6426                var12 = var14;
6427                var14 = var22;
6428                var24 = var18;
6429                var26 = var16;
6430            }
6431            else if (this.uvRotateNorth == 3)
6432            {
6433                var12 = ((double)(var10 + 16) - this.field_83025_k * 16.0D) / 256.0D;
6434                var14 = ((double)(var10 + 16) - this.field_83022_l * 16.0D - 0.01D) / 256.0D;
6435                var16 = ((double)var11 + this.field_83024_j * 16.0D) / 256.0D;
6436                var18 = ((double)var11 + this.field_83027_i * 16.0D - 0.01D) / 256.0D;
6437                var20 = var14;
6438                var22 = var12;
6439                var24 = var16;
6440                var26 = var18;
6441            }
6442    
6443            double var28 = par2 + this.field_83021_g;
6444            double var30 = par4 + this.field_83027_i;
6445            double var32 = par4 + this.field_83024_j;
6446            double var34 = par6 + this.field_83025_k;
6447            double var36 = par6 + this.field_83022_l;
6448    
6449            if (this.enableAO)
6450            {
6451                var9.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft);
6452                var9.setBrightness(this.brightnessTopLeft);
6453                var9.addVertexWithUV(var28, var32, var36, var20, var24);
6454                var9.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft);
6455                var9.setBrightness(this.brightnessBottomLeft);
6456                var9.addVertexWithUV(var28, var32, var34, var12, var16);
6457                var9.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight);
6458                var9.setBrightness(this.brightnessBottomRight);
6459                var9.addVertexWithUV(var28, var30, var34, var22, var26);
6460                var9.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight);
6461                var9.setBrightness(this.brightnessTopRight);
6462                var9.addVertexWithUV(var28, var30, var36, var14, var18);
6463            }
6464            else
6465            {
6466                var9.addVertexWithUV(var28, var32, var36, var20, var24);
6467                var9.addVertexWithUV(var28, var32, var34, var12, var16);
6468                var9.addVertexWithUV(var28, var30, var34, var22, var26);
6469                var9.addVertexWithUV(var28, var30, var36, var14, var18);
6470            }
6471        }
6472    
6473        /**
6474         * Renders the given texture to the south (x-positive) face of the block.  Args: block, x, y, z, texture
6475         */
6476        public void renderSouthFace(Block par1Block, double par2, double par4, double par6, int par8)
6477        {
6478            Tessellator var9 = Tessellator.instance;
6479    
6480            if (this.overrideBlockTexture >= 0)
6481            {
6482                par8 = this.overrideBlockTexture;
6483            }
6484    
6485            int var10 = (par8 & 15) << 4;
6486            int var11 = par8 & 240;
6487            double var12 = ((double)var10 + this.field_83025_k * 16.0D) / 256.0D;
6488            double var14 = ((double)var10 + this.field_83022_l * 16.0D - 0.01D) / 256.0D;
6489            double var16 = ((double)(var11 + 16) - this.field_83024_j * 16.0D) / 256.0D;
6490            double var18 = ((double)(var11 + 16) - this.field_83027_i * 16.0D - 0.01D) / 256.0D;
6491            double var20;
6492    
6493            if (this.flipTexture)
6494            {
6495                var20 = var12;
6496                var12 = var14;
6497                var14 = var20;
6498            }
6499    
6500            if (this.field_83025_k < 0.0D || this.field_83022_l > 1.0D)
6501            {
6502                var12 = (double)(((float)var10 + 0.0F) / 256.0F);
6503                var14 = (double)(((float)var10 + 15.99F) / 256.0F);
6504            }
6505    
6506            if (this.field_83027_i < 0.0D || this.field_83024_j > 1.0D)
6507            {
6508                var16 = (double)(((float)var11 + 0.0F) / 256.0F);
6509                var18 = (double)(((float)var11 + 15.99F) / 256.0F);
6510            }
6511    
6512            var20 = var14;
6513            double var22 = var12;
6514            double var24 = var16;
6515            double var26 = var18;
6516    
6517            if (this.uvRotateSouth == 2)
6518            {
6519                var12 = ((double)var10 + this.field_83027_i * 16.0D) / 256.0D;
6520                var16 = ((double)(var11 + 16) - this.field_83025_k * 16.0D) / 256.0D;
6521                var14 = ((double)var10 + this.field_83024_j * 16.0D) / 256.0D;
6522                var18 = ((double)(var11 + 16) - this.field_83022_l * 16.0D) / 256.0D;
6523                var24 = var16;
6524                var26 = var18;
6525                var20 = var12;
6526                var22 = var14;
6527                var16 = var18;
6528                var18 = var24;
6529            }
6530            else if (this.uvRotateSouth == 1)
6531            {
6532                var12 = ((double)(var10 + 16) - this.field_83024_j * 16.0D) / 256.0D;
6533                var16 = ((double)var11 + this.field_83022_l * 16.0D) / 256.0D;
6534                var14 = ((double)(var10 + 16) - this.field_83027_i * 16.0D) / 256.0D;
6535                var18 = ((double)var11 + this.field_83025_k * 16.0D) / 256.0D;
6536                var20 = var14;
6537                var22 = var12;
6538                var12 = var14;
6539                var14 = var22;
6540                var24 = var18;
6541                var26 = var16;
6542            }
6543            else if (this.uvRotateSouth == 3)
6544            {
6545                var12 = ((double)(var10 + 16) - this.field_83025_k * 16.0D) / 256.0D;
6546                var14 = ((double)(var10 + 16) - this.field_83022_l * 16.0D - 0.01D) / 256.0D;
6547                var16 = ((double)var11 + this.field_83024_j * 16.0D) / 256.0D;
6548                var18 = ((double)var11 + this.field_83027_i * 16.0D - 0.01D) / 256.0D;
6549                var20 = var14;
6550                var22 = var12;
6551                var24 = var16;
6552                var26 = var18;
6553            }
6554    
6555            double var28 = par2 + this.field_83026_h;
6556            double var30 = par4 + this.field_83027_i;
6557            double var32 = par4 + this.field_83024_j;
6558            double var34 = par6 + this.field_83025_k;
6559            double var36 = par6 + this.field_83022_l;
6560    
6561            if (this.enableAO)
6562            {
6563                var9.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft);
6564                var9.setBrightness(this.brightnessTopLeft);
6565                var9.addVertexWithUV(var28, var30, var36, var22, var26);
6566                var9.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft);
6567                var9.setBrightness(this.brightnessBottomLeft);
6568                var9.addVertexWithUV(var28, var30, var34, var14, var18);
6569                var9.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight);
6570                var9.setBrightness(this.brightnessBottomRight);
6571                var9.addVertexWithUV(var28, var32, var34, var20, var24);
6572                var9.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight);
6573                var9.setBrightness(this.brightnessTopRight);
6574                var9.addVertexWithUV(var28, var32, var36, var12, var16);
6575            }
6576            else
6577            {
6578                var9.addVertexWithUV(var28, var30, var36, var22, var26);
6579                var9.addVertexWithUV(var28, var30, var34, var14, var18);
6580                var9.addVertexWithUV(var28, var32, var34, var20, var24);
6581                var9.addVertexWithUV(var28, var32, var36, var12, var16);
6582            }
6583        }
6584    
6585        /**
6586         * Is called to render the image of a block on an inventory, as a held item, or as a an item on the ground
6587         */
6588        public void renderBlockAsItem(Block par1Block, int par2, float par3)
6589        {
6590            Tessellator var4 = Tessellator.instance;
6591            boolean var5 = par1Block.blockID == Block.grass.blockID;
6592            int var6;
6593            float var7;
6594            float var8;
6595            float var9;
6596    
6597            if (this.useInventoryTint)
6598            {
6599                var6 = par1Block.getRenderColor(par2);
6600    
6601                if (var5)
6602                {
6603                    var6 = 16777215;
6604                }
6605    
6606                var7 = (float)(var6 >> 16 & 255) / 255.0F;
6607                var8 = (float)(var6 >> 8 & 255) / 255.0F;
6608                var9 = (float)(var6 & 255) / 255.0F;
6609                GL11.glColor4f(var7 * par3, var8 * par3, var9 * par3, 1.0F);
6610            }
6611    
6612            var6 = par1Block.getRenderType();
6613            this.func_83018_a(par1Block);
6614            int var14;
6615    
6616            if (var6 != 0 && var6 != 31 && var6 != 16 && var6 != 26)
6617            {
6618                if (var6 == 1)
6619                {
6620                    var4.startDrawingQuads();
6621                    var4.setNormal(0.0F, -1.0F, 0.0F);
6622                    this.drawCrossedSquares(par1Block, par2, -0.5D, -0.5D, -0.5D, 1.0F);
6623                    var4.draw();
6624                }
6625                else if (var6 == 19)
6626                {
6627                    var4.startDrawingQuads();
6628                    var4.setNormal(0.0F, -1.0F, 0.0F);
6629                    par1Block.setBlockBoundsForItemRender();
6630                    this.renderBlockStemSmall(par1Block, par2, this.field_83024_j, -0.5D, -0.5D, -0.5D);
6631                    var4.draw();
6632                }
6633                else if (var6 == 23)
6634                {
6635                    var4.startDrawingQuads();
6636                    var4.setNormal(0.0F, -1.0F, 0.0F);
6637                    par1Block.setBlockBoundsForItemRender();
6638                    var4.draw();
6639                }
6640                else if (var6 == 13)
6641                {
6642                    par1Block.setBlockBoundsForItemRender();
6643                    GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
6644                    var7 = 0.0625F;
6645                    var4.startDrawingQuads();
6646                    var4.setNormal(0.0F, -1.0F, 0.0F);
6647                    this.renderBottomFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(0));
6648                    var4.draw();
6649                    var4.startDrawingQuads();
6650                    var4.setNormal(0.0F, 1.0F, 0.0F);
6651                    this.renderTopFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(1));
6652                    var4.draw();
6653                    var4.startDrawingQuads();
6654                    var4.setNormal(0.0F, 0.0F, -1.0F);
6655                    var4.addTranslation(0.0F, 0.0F, var7);
6656                    this.renderEastFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(2));
6657                    var4.addTranslation(0.0F, 0.0F, -var7);
6658                    var4.draw();
6659                    var4.startDrawingQuads();
6660                    var4.setNormal(0.0F, 0.0F, 1.0F);
6661                    var4.addTranslation(0.0F, 0.0F, -var7);
6662                    this.renderWestFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(3));
6663                    var4.addTranslation(0.0F, 0.0F, var7);
6664                    var4.draw();
6665                    var4.startDrawingQuads();
6666                    var4.setNormal(-1.0F, 0.0F, 0.0F);
6667                    var4.addTranslation(var7, 0.0F, 0.0F);
6668                    this.renderNorthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(4));
6669                    var4.addTranslation(-var7, 0.0F, 0.0F);
6670                    var4.draw();
6671                    var4.startDrawingQuads();
6672                    var4.setNormal(1.0F, 0.0F, 0.0F);
6673                    var4.addTranslation(-var7, 0.0F, 0.0F);
6674                    this.renderSouthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(5));
6675                    var4.addTranslation(var7, 0.0F, 0.0F);
6676                    var4.draw();
6677                    GL11.glTranslatef(0.5F, 0.5F, 0.5F);
6678                }
6679                else if (var6 == 22)
6680                {
6681                    GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
6682                    GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
6683                    ChestItemRenderHelper.instance.renderChest(par1Block, par2, par3);
6684                    GL11.glEnable(GL12.GL_RESCALE_NORMAL);
6685                }
6686                else if (var6 == 6)
6687                {
6688                    var4.startDrawingQuads();
6689                    var4.setNormal(0.0F, -1.0F, 0.0F);
6690                    this.renderBlockCropsImpl(par1Block, par2, -0.5D, -0.5D, -0.5D);
6691                    var4.draw();
6692                }
6693                else if (var6 == 2)
6694                {
6695                    var4.startDrawingQuads();
6696                    var4.setNormal(0.0F, -1.0F, 0.0F);
6697                    this.renderTorchAtAngle(par1Block, -0.5D, -0.5D, -0.5D, 0.0D, 0.0D);
6698                    var4.draw();
6699                }
6700                else if (var6 == 10)
6701                {
6702                    for (var14 = 0; var14 < 2; ++var14)
6703                    {
6704                        if (var14 == 0)
6705                        {
6706                            this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 0.5D);
6707                        }
6708    
6709                        if (var14 == 1)
6710                        {
6711                            this.setRenderMinMax(0.0D, 0.0D, 0.5D, 1.0D, 0.5D, 1.0D);
6712                        }
6713    
6714                        GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
6715                        var4.startDrawingQuads();
6716                        var4.setNormal(0.0F, -1.0F, 0.0F);
6717                        this.renderBottomFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(0));
6718                        var4.draw();
6719                        var4.startDrawingQuads();
6720                        var4.setNormal(0.0F, 1.0F, 0.0F);
6721                        this.renderTopFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(1));
6722                        var4.draw();
6723                        var4.startDrawingQuads();
6724                        var4.setNormal(0.0F, 0.0F, -1.0F);
6725                        this.renderEastFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(2));
6726                        var4.draw();
6727                        var4.startDrawingQuads();
6728                        var4.setNormal(0.0F, 0.0F, 1.0F);
6729                        this.renderWestFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(3));
6730                        var4.draw();
6731                        var4.startDrawingQuads();
6732                        var4.setNormal(-1.0F, 0.0F, 0.0F);
6733                        this.renderNorthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(4));
6734                        var4.draw();
6735                        var4.startDrawingQuads();
6736                        var4.setNormal(1.0F, 0.0F, 0.0F);
6737                        this.renderSouthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(5));
6738                        var4.draw();
6739                        GL11.glTranslatef(0.5F, 0.5F, 0.5F);
6740                    }
6741                }
6742                else if (var6 == 27)
6743                {
6744                    var14 = 0;
6745                    GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
6746                    var4.startDrawingQuads();
6747    
6748                    for (int var15 = 0; var15 < 8; ++var15)
6749                    {
6750                        byte var16 = 0;
6751                        byte var17 = 1;
6752    
6753                        if (var15 == 0)
6754                        {
6755                            var16 = 2;
6756                        }
6757    
6758                        if (var15 == 1)
6759                        {
6760                            var16 = 3;
6761                        }
6762    
6763                        if (var15 == 2)
6764                        {
6765                            var16 = 4;
6766                        }
6767    
6768                        if (var15 == 3)
6769                        {
6770                            var16 = 5;
6771                            var17 = 2;
6772                        }
6773    
6774                        if (var15 == 4)
6775                        {
6776                            var16 = 6;
6777                            var17 = 3;
6778                        }
6779    
6780                        if (var15 == 5)
6781                        {
6782                            var16 = 7;
6783                            var17 = 5;
6784                        }
6785    
6786                        if (var15 == 6)
6787                        {
6788                            var16 = 6;
6789                            var17 = 2;
6790                        }
6791    
6792                        if (var15 == 7)
6793                        {
6794                            var16 = 3;
6795                        }
6796    
6797                        float var11 = (float)var16 / 16.0F;
6798                        float var12 = 1.0F - (float)var14 / 16.0F;
6799                        float var13 = 1.0F - (float)(var14 + var17) / 16.0F;
6800                        var14 += var17;
6801                        this.setRenderMinMax((double)(0.5F - var11), (double)var13, (double)(0.5F - var11), (double)(0.5F + var11), (double)var12, (double)(0.5F + var11));
6802                        var4.setNormal(0.0F, -1.0F, 0.0F);
6803                        this.renderBottomFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(0));
6804                        var4.setNormal(0.0F, 1.0F, 0.0F);
6805                        this.renderTopFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(1));
6806                        var4.setNormal(0.0F, 0.0F, -1.0F);
6807                        this.renderEastFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(2));
6808                        var4.setNormal(0.0F, 0.0F, 1.0F);
6809                        this.renderWestFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(3));
6810                        var4.setNormal(-1.0F, 0.0F, 0.0F);
6811                        this.renderNorthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(4));
6812                        var4.setNormal(1.0F, 0.0F, 0.0F);
6813                        this.renderSouthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(5));
6814                    }
6815    
6816                    var4.draw();
6817                    GL11.glTranslatef(0.5F, 0.5F, 0.5F);
6818                    this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
6819                }
6820                else if (var6 == 11)
6821                {
6822                    for (var14 = 0; var14 < 4; ++var14)
6823                    {
6824                        var8 = 0.125F;
6825    
6826                        if (var14 == 0)
6827                        {
6828                            this.setRenderMinMax((double)(0.5F - var8), 0.0D, 0.0D, (double)(0.5F + var8), 1.0D, (double)(var8 * 2.0F));
6829                        }
6830    
6831                        if (var14 == 1)
6832                        {
6833                            this.setRenderMinMax((double)(0.5F - var8), 0.0D, (double)(1.0F - var8 * 2.0F), (double)(0.5F + var8), 1.0D, 1.0D);
6834                        }
6835    
6836                        var8 = 0.0625F;
6837    
6838                        if (var14 == 2)
6839                        {
6840                            this.setRenderMinMax((double)(0.5F - var8), (double)(1.0F - var8 * 3.0F), (double)(-var8 * 2.0F), (double)(0.5F + var8), (double)(1.0F - var8), (double)(1.0F + var8 * 2.0F));
6841                        }
6842    
6843                        if (var14 == 3)
6844                        {
6845                            this.setRenderMinMax((double)(0.5F - var8), (double)(0.5F - var8 * 3.0F), (double)(-var8 * 2.0F), (double)(0.5F + var8), (double)(0.5F - var8), (double)(1.0F + var8 * 2.0F));
6846                        }
6847    
6848                        GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
6849                        var4.startDrawingQuads();
6850                        var4.setNormal(0.0F, -1.0F, 0.0F);
6851                        this.renderBottomFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(0));
6852                        var4.draw();
6853                        var4.startDrawingQuads();
6854                        var4.setNormal(0.0F, 1.0F, 0.0F);
6855                        this.renderTopFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(1));
6856                        var4.draw();
6857                        var4.startDrawingQuads();
6858                        var4.setNormal(0.0F, 0.0F, -1.0F);
6859                        this.renderEastFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(2));
6860                        var4.draw();
6861                        var4.startDrawingQuads();
6862                        var4.setNormal(0.0F, 0.0F, 1.0F);
6863                        this.renderWestFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(3));
6864                        var4.draw();
6865                        var4.startDrawingQuads();
6866                        var4.setNormal(-1.0F, 0.0F, 0.0F);
6867                        this.renderNorthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(4));
6868                        var4.draw();
6869                        var4.startDrawingQuads();
6870                        var4.setNormal(1.0F, 0.0F, 0.0F);
6871                        this.renderSouthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(5));
6872                        var4.draw();
6873                        GL11.glTranslatef(0.5F, 0.5F, 0.5F);
6874                    }
6875    
6876                    this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
6877                }
6878                else if (var6 == 21)
6879                {
6880                    for (var14 = 0; var14 < 3; ++var14)
6881                    {
6882                        var8 = 0.0625F;
6883    
6884                        if (var14 == 0)
6885                        {
6886                            this.setRenderMinMax((double)(0.5F - var8), 0.30000001192092896D, 0.0D, (double)(0.5F + var8), 1.0D, (double)(var8 * 2.0F));
6887                        }
6888    
6889                        if (var14 == 1)
6890                        {
6891                            this.setRenderMinMax((double)(0.5F - var8), 0.30000001192092896D, (double)(1.0F - var8 * 2.0F), (double)(0.5F + var8), 1.0D, 1.0D);
6892                        }
6893    
6894                        var8 = 0.0625F;
6895    
6896                        if (var14 == 2)
6897                        {
6898                            this.setRenderMinMax((double)(0.5F - var8), 0.5D, 0.0D, (double)(0.5F + var8), (double)(1.0F - var8), 1.0D);
6899                        }
6900    
6901                        GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
6902                        var4.startDrawingQuads();
6903                        var4.setNormal(0.0F, -1.0F, 0.0F);
6904                        this.renderBottomFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(0));
6905                        var4.draw();
6906                        var4.startDrawingQuads();
6907                        var4.setNormal(0.0F, 1.0F, 0.0F);
6908                        this.renderTopFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(1));
6909                        var4.draw();
6910                        var4.startDrawingQuads();
6911                        var4.setNormal(0.0F, 0.0F, -1.0F);
6912                        this.renderEastFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(2));
6913                        var4.draw();
6914                        var4.startDrawingQuads();
6915                        var4.setNormal(0.0F, 0.0F, 1.0F);
6916                        this.renderWestFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(3));
6917                        var4.draw();
6918                        var4.startDrawingQuads();
6919                        var4.setNormal(-1.0F, 0.0F, 0.0F);
6920                        this.renderNorthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(4));
6921                        var4.draw();
6922                        var4.startDrawingQuads();
6923                        var4.setNormal(1.0F, 0.0F, 0.0F);
6924                        this.renderSouthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSide(5));
6925                        var4.draw();
6926                        GL11.glTranslatef(0.5F, 0.5F, 0.5F);
6927                    }
6928                }
6929                else if (var6 == 32)
6930                {
6931                    for (var14 = 0; var14 < 2; ++var14)
6932                    {
6933                        if (var14 == 0)
6934                        {
6935                            this.setRenderMinMax(0.0D, 0.0D, 0.3125D, 1.0D, 0.8125D, 0.6875D);
6936                        }
6937    
6938                        if (var14 == 1)
6939                        {
6940                            this.setRenderMinMax(0.25D, 0.0D, 0.25D, 0.75D, 1.0D, 0.75D);
6941                        }
6942    
6943                        GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
6944                        var4.startDrawingQuads();
6945                        var4.setNormal(0.0F, -1.0F, 0.0F);
6946                        this.renderBottomFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(0, par2));
6947                        var4.draw();
6948                        var4.startDrawingQuads();
6949                        var4.setNormal(0.0F, 1.0F, 0.0F);
6950                        this.renderTopFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(1, par2));
6951                        var4.draw();
6952                        var4.startDrawingQuads();
6953                        var4.setNormal(0.0F, 0.0F, -1.0F);
6954                        this.renderEastFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(2, par2));
6955                        var4.draw();
6956                        var4.startDrawingQuads();
6957                        var4.setNormal(0.0F, 0.0F, 1.0F);
6958                        this.renderWestFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(3, par2));
6959                        var4.draw();
6960                        var4.startDrawingQuads();
6961                        var4.setNormal(-1.0F, 0.0F, 0.0F);
6962                        this.renderNorthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(4, par2));
6963                        var4.draw();
6964                        var4.startDrawingQuads();
6965                        var4.setNormal(1.0F, 0.0F, 0.0F);
6966                        this.renderSouthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(5, par2));
6967                        var4.draw();
6968                        GL11.glTranslatef(0.5F, 0.5F, 0.5F);
6969                    }
6970    
6971                    this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
6972                }
6973                else if (var6 == 35)
6974                {
6975                    GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
6976                    this.func_82776_a((BlockAnvil)par1Block, 0, 0, 0, par2, true);
6977                    GL11.glTranslatef(0.5F, 0.5F, 0.5F);
6978                }
6979                else if (var6 == 34)
6980                {
6981                    for (var14 = 0; var14 < 3; ++var14)
6982                    {
6983                        if (var14 == 0)
6984                        {
6985                            this.setRenderMinMax(0.125D, 0.0D, 0.125D, 0.875D, 0.1875D, 0.875D);
6986                            this.func_82774_a(Block.obsidian.blockIndexInTexture);
6987                        }
6988                        else if (var14 == 1)
6989                        {
6990                            this.setRenderMinMax(0.1875D, 0.1875D, 0.1875D, 0.8125D, 0.875D, 0.8125D);
6991                            this.func_82774_a(41);
6992                        }
6993                        else if (var14 == 2)
6994                        {
6995                            this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
6996                            this.func_82774_a(Block.glass.blockIndexInTexture);
6997                        }
6998    
6999                        GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
7000                        var4.startDrawingQuads();
7001                        var4.setNormal(0.0F, -1.0F, 0.0F);
7002                        this.renderBottomFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(0, par2));
7003                        var4.draw();
7004                        var4.startDrawingQuads();
7005                        var4.setNormal(0.0F, 1.0F, 0.0F);
7006                        this.renderTopFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(1, par2));
7007                        var4.draw();
7008                        var4.startDrawingQuads();
7009                        var4.setNormal(0.0F, 0.0F, -1.0F);
7010                        this.renderEastFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(2, par2));
7011                        var4.draw();
7012                        var4.startDrawingQuads();
7013                        var4.setNormal(0.0F, 0.0F, 1.0F);
7014                        this.renderWestFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(3, par2));
7015                        var4.draw();
7016                        var4.startDrawingQuads();
7017                        var4.setNormal(-1.0F, 0.0F, 0.0F);
7018                        this.renderNorthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(4, par2));
7019                        var4.draw();
7020                        var4.startDrawingQuads();
7021                        var4.setNormal(1.0F, 0.0F, 0.0F);
7022                        this.renderSouthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(5, par2));
7023                        var4.draw();
7024                        GL11.glTranslatef(0.5F, 0.5F, 0.5F);
7025                    }
7026    
7027                    this.setRenderMinMax(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
7028                    this.clearOverrideBlockTexture();
7029                }
7030                else
7031                {
7032                    FMLRenderAccessLibrary.renderInventoryBlock(this, par1Block, par2, var6);
7033                }
7034            }
7035            else
7036            {
7037                if (var6 == 16)
7038                {
7039                    par2 = 1;
7040                }
7041    
7042                par1Block.setBlockBoundsForItemRender();
7043                this.func_83018_a(par1Block);
7044                GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
7045                GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
7046                var4.startDrawingQuads();
7047                var4.setNormal(0.0F, -1.0F, 0.0F);
7048                this.renderBottomFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(0, par2));
7049                var4.draw();
7050    
7051                if (var5 && this.useInventoryTint)
7052                {
7053                    var14 = par1Block.getRenderColor(par2);
7054                    var8 = (float)(var14 >> 16 & 255) / 255.0F;
7055                    var9 = (float)(var14 >> 8 & 255) / 255.0F;
7056                    float var10 = (float)(var14 & 255) / 255.0F;
7057                    GL11.glColor4f(var8 * par3, var9 * par3, var10 * par3, 1.0F);
7058                }
7059    
7060                var4.startDrawingQuads();
7061                var4.setNormal(0.0F, 1.0F, 0.0F);
7062                this.renderTopFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(1, par2));
7063                var4.draw();
7064    
7065                if (var5 && this.useInventoryTint)
7066                {
7067                    GL11.glColor4f(par3, par3, par3, 1.0F);
7068                }
7069    
7070                var4.startDrawingQuads();
7071                var4.setNormal(0.0F, 0.0F, -1.0F);
7072                this.renderEastFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(2, par2));
7073                var4.draw();
7074                var4.startDrawingQuads();
7075                var4.setNormal(0.0F, 0.0F, 1.0F);
7076                this.renderWestFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(3, par2));
7077                var4.draw();
7078                var4.startDrawingQuads();
7079                var4.setNormal(-1.0F, 0.0F, 0.0F);
7080                this.renderNorthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(4, par2));
7081                var4.draw();
7082                var4.startDrawingQuads();
7083                var4.setNormal(1.0F, 0.0F, 0.0F);
7084                this.renderSouthFace(par1Block, 0.0D, 0.0D, 0.0D, par1Block.getBlockTextureFromSideAndMetadata(5, par2));
7085                var4.draw();
7086                GL11.glTranslatef(0.5F, 0.5F, 0.5F);
7087            }
7088        }
7089    
7090        /**
7091         * Checks to see if the item's render type indicates that it should be rendered as a regular block or not.
7092         */
7093        public static boolean renderItemIn3d(int par0)
7094        {
7095            switch (par0)
7096            {
7097                case 0:
7098                    return true;
7099                case 31:
7100                    return true;
7101                case 13:
7102                    return true;
7103                case 10:
7104                    return true;
7105                case 11:
7106                    return true;
7107                case 27:
7108                    return true;
7109                case 22:
7110                    return true;
7111                case 21:
7112                    return true;
7113                case 16:
7114                    return true;
7115                case 26:
7116                    return true;
7117                case 32:
7118                    return true;
7119                case 34:
7120                    return true;
7121                case 35:
7122                    return true;
7123                default:
7124                    return FMLRenderAccessLibrary.renderItemAsFull3DBlock(par0);
7125            }
7126        }
7127    }