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