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