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