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