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