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