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