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