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