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