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