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