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