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