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