001 package net.minecraft.src; 002 003 import java.util.Iterator; 004 import java.util.List; 005 import java.util.Random; 006 007 public abstract class StructureComponent 008 { 009 protected StructureBoundingBox boundingBox; 010 011 /** switches the Coordinate System base off the Bounding Box */ 012 protected int coordBaseMode; 013 014 /** The type ID of this component. */ 015 protected int componentType; 016 017 protected StructureComponent(int par1) 018 { 019 this.componentType = par1; 020 this.coordBaseMode = -1; 021 } 022 023 /** 024 * Initiates construction of the Structure Component picked, at the current Location of StructGen 025 */ 026 public void buildComponent(StructureComponent par1StructureComponent, List par2List, Random par3Random) {} 027 028 /** 029 * second Part of Structure generating, this for example places Spiderwebs, Mob Spawners, it closes Mineshafts at 030 * the end, it adds Fences... 031 */ 032 public abstract boolean addComponentParts(World var1, Random var2, StructureBoundingBox var3); 033 034 public StructureBoundingBox getBoundingBox() 035 { 036 return this.boundingBox; 037 } 038 039 /** 040 * Returns the component type ID of this component. 041 */ 042 public int getComponentType() 043 { 044 return this.componentType; 045 } 046 047 /** 048 * Discover if bounding box can fit within the current bounding box object. 049 */ 050 public static StructureComponent findIntersecting(List par0List, StructureBoundingBox par1StructureBoundingBox) 051 { 052 Iterator var2 = par0List.iterator(); 053 StructureComponent var3; 054 055 do 056 { 057 if (!var2.hasNext()) 058 { 059 return null; 060 } 061 062 var3 = (StructureComponent)var2.next(); 063 } 064 while (var3.getBoundingBox() == null || !var3.getBoundingBox().intersectsWith(par1StructureBoundingBox)); 065 066 return var3; 067 } 068 069 public ChunkPosition getCenter() 070 { 071 return new ChunkPosition(this.boundingBox.getCenterX(), this.boundingBox.getCenterY(), this.boundingBox.getCenterZ()); 072 } 073 074 /** 075 * checks the entire StructureBoundingBox for Liquids 076 */ 077 protected boolean isLiquidInStructureBoundingBox(World par1World, StructureBoundingBox par2StructureBoundingBox) 078 { 079 int var3 = Math.max(this.boundingBox.minX - 1, par2StructureBoundingBox.minX); 080 int var4 = Math.max(this.boundingBox.minY - 1, par2StructureBoundingBox.minY); 081 int var5 = Math.max(this.boundingBox.minZ - 1, par2StructureBoundingBox.minZ); 082 int var6 = Math.min(this.boundingBox.maxX + 1, par2StructureBoundingBox.maxX); 083 int var7 = Math.min(this.boundingBox.maxY + 1, par2StructureBoundingBox.maxY); 084 int var8 = Math.min(this.boundingBox.maxZ + 1, par2StructureBoundingBox.maxZ); 085 int var9; 086 int var10; 087 int var11; 088 089 for (var9 = var3; var9 <= var6; ++var9) 090 { 091 for (var10 = var5; var10 <= var8; ++var10) 092 { 093 var11 = par1World.getBlockId(var9, var4, var10); 094 095 if (var11 > 0 && Block.blocksList[var11].blockMaterial.isLiquid()) 096 { 097 return true; 098 } 099 100 var11 = par1World.getBlockId(var9, var7, var10); 101 102 if (var11 > 0 && Block.blocksList[var11].blockMaterial.isLiquid()) 103 { 104 return true; 105 } 106 } 107 } 108 109 for (var9 = var3; var9 <= var6; ++var9) 110 { 111 for (var10 = var4; var10 <= var7; ++var10) 112 { 113 var11 = par1World.getBlockId(var9, var10, var5); 114 115 if (var11 > 0 && Block.blocksList[var11].blockMaterial.isLiquid()) 116 { 117 return true; 118 } 119 120 var11 = par1World.getBlockId(var9, var10, var8); 121 122 if (var11 > 0 && Block.blocksList[var11].blockMaterial.isLiquid()) 123 { 124 return true; 125 } 126 } 127 } 128 129 for (var9 = var5; var9 <= var8; ++var9) 130 { 131 for (var10 = var4; var10 <= var7; ++var10) 132 { 133 var11 = par1World.getBlockId(var3, var10, var9); 134 135 if (var11 > 0 && Block.blocksList[var11].blockMaterial.isLiquid()) 136 { 137 return true; 138 } 139 140 var11 = par1World.getBlockId(var6, var10, var9); 141 142 if (var11 > 0 && Block.blocksList[var11].blockMaterial.isLiquid()) 143 { 144 return true; 145 } 146 } 147 } 148 149 return false; 150 } 151 152 protected int getXWithOffset(int par1, int par2) 153 { 154 switch (this.coordBaseMode) 155 { 156 case 0: 157 case 2: 158 return this.boundingBox.minX + par1; 159 case 1: 160 return this.boundingBox.maxX - par2; 161 case 3: 162 return this.boundingBox.minX + par2; 163 default: 164 return par1; 165 } 166 } 167 168 protected int getYWithOffset(int par1) 169 { 170 return this.coordBaseMode == -1 ? par1 : par1 + this.boundingBox.minY; 171 } 172 173 protected int getZWithOffset(int par1, int par2) 174 { 175 switch (this.coordBaseMode) 176 { 177 case 0: 178 return this.boundingBox.minZ + par2; 179 case 1: 180 case 3: 181 return this.boundingBox.minZ + par1; 182 case 2: 183 return this.boundingBox.maxZ - par2; 184 default: 185 return par2; 186 } 187 } 188 189 /** 190 * Returns the direction-shifted metadata for blocks that require orientation, e.g. doors, stairs, ladders. 191 * Parameters: block ID, original metadata 192 */ 193 protected int getMetadataWithOffset(int par1, int par2) 194 { 195 if (par1 == Block.rail.blockID) 196 { 197 if (this.coordBaseMode == 1 || this.coordBaseMode == 3) 198 { 199 if (par2 == 1) 200 { 201 return 0; 202 } 203 204 return 1; 205 } 206 } 207 else if (par1 != Block.doorWood.blockID && par1 != Block.doorSteel.blockID) 208 { 209 if (par1 != Block.stairCompactCobblestone.blockID && par1 != Block.stairCompactPlanks.blockID && par1 != Block.stairsNetherBrick.blockID && par1 != Block.stairsStoneBrickSmooth.blockID && par1 != Block.stairsSandStone.blockID) 210 { 211 if (par1 == Block.ladder.blockID) 212 { 213 if (this.coordBaseMode == 0) 214 { 215 if (par2 == 2) 216 { 217 return 3; 218 } 219 220 if (par2 == 3) 221 { 222 return 2; 223 } 224 } 225 else if (this.coordBaseMode == 1) 226 { 227 if (par2 == 2) 228 { 229 return 4; 230 } 231 232 if (par2 == 3) 233 { 234 return 5; 235 } 236 237 if (par2 == 4) 238 { 239 return 2; 240 } 241 242 if (par2 == 5) 243 { 244 return 3; 245 } 246 } 247 else if (this.coordBaseMode == 3) 248 { 249 if (par2 == 2) 250 { 251 return 5; 252 } 253 254 if (par2 == 3) 255 { 256 return 4; 257 } 258 259 if (par2 == 4) 260 { 261 return 2; 262 } 263 264 if (par2 == 5) 265 { 266 return 3; 267 } 268 } 269 } 270 else if (par1 == Block.button.blockID) 271 { 272 if (this.coordBaseMode == 0) 273 { 274 if (par2 == 3) 275 { 276 return 4; 277 } 278 279 if (par2 == 4) 280 { 281 return 3; 282 } 283 } 284 else if (this.coordBaseMode == 1) 285 { 286 if (par2 == 3) 287 { 288 return 1; 289 } 290 291 if (par2 == 4) 292 { 293 return 2; 294 } 295 296 if (par2 == 2) 297 { 298 return 3; 299 } 300 301 if (par2 == 1) 302 { 303 return 4; 304 } 305 } 306 else if (this.coordBaseMode == 3) 307 { 308 if (par2 == 3) 309 { 310 return 2; 311 } 312 313 if (par2 == 4) 314 { 315 return 1; 316 } 317 318 if (par2 == 2) 319 { 320 return 3; 321 } 322 323 if (par2 == 1) 324 { 325 return 4; 326 } 327 } 328 } 329 else if (par1 != Block.tripWireSource.blockID && (Block.blocksList[par1] == null || !(Block.blocksList[par1] instanceof BlockDirectional))) 330 { 331 if (par1 == Block.pistonBase.blockID || par1 == Block.pistonStickyBase.blockID || par1 == Block.lever.blockID || par1 == Block.dispenser.blockID) 332 { 333 if (this.coordBaseMode == 0) 334 { 335 if (par2 == 2 || par2 == 3) 336 { 337 return Facing.faceToSide[par2]; 338 } 339 } 340 else if (this.coordBaseMode == 1) 341 { 342 if (par2 == 2) 343 { 344 return 4; 345 } 346 347 if (par2 == 3) 348 { 349 return 5; 350 } 351 352 if (par2 == 4) 353 { 354 return 2; 355 } 356 357 if (par2 == 5) 358 { 359 return 3; 360 } 361 } 362 else if (this.coordBaseMode == 3) 363 { 364 if (par2 == 2) 365 { 366 return 5; 367 } 368 369 if (par2 == 3) 370 { 371 return 4; 372 } 373 374 if (par2 == 4) 375 { 376 return 2; 377 } 378 379 if (par2 == 5) 380 { 381 return 3; 382 } 383 } 384 } 385 } 386 else if (this.coordBaseMode == 0) 387 { 388 if (par2 == 0 || par2 == 2) 389 { 390 return Direction.footInvisibleFaceRemap[par2]; 391 } 392 } 393 else if (this.coordBaseMode == 1) 394 { 395 if (par2 == 2) 396 { 397 return 1; 398 } 399 400 if (par2 == 0) 401 { 402 return 3; 403 } 404 405 if (par2 == 1) 406 { 407 return 2; 408 } 409 410 if (par2 == 3) 411 { 412 return 0; 413 } 414 } 415 else if (this.coordBaseMode == 3) 416 { 417 if (par2 == 2) 418 { 419 return 3; 420 } 421 422 if (par2 == 0) 423 { 424 return 1; 425 } 426 427 if (par2 == 1) 428 { 429 return 2; 430 } 431 432 if (par2 == 3) 433 { 434 return 0; 435 } 436 } 437 } 438 else if (this.coordBaseMode == 0) 439 { 440 if (par2 == 2) 441 { 442 return 3; 443 } 444 445 if (par2 == 3) 446 { 447 return 2; 448 } 449 } 450 else if (this.coordBaseMode == 1) 451 { 452 if (par2 == 0) 453 { 454 return 2; 455 } 456 457 if (par2 == 1) 458 { 459 return 3; 460 } 461 462 if (par2 == 2) 463 { 464 return 0; 465 } 466 467 if (par2 == 3) 468 { 469 return 1; 470 } 471 } 472 else if (this.coordBaseMode == 3) 473 { 474 if (par2 == 0) 475 { 476 return 2; 477 } 478 479 if (par2 == 1) 480 { 481 return 3; 482 } 483 484 if (par2 == 2) 485 { 486 return 1; 487 } 488 489 if (par2 == 3) 490 { 491 return 0; 492 } 493 } 494 } 495 else if (this.coordBaseMode == 0) 496 { 497 if (par2 == 0) 498 { 499 return 2; 500 } 501 502 if (par2 == 2) 503 { 504 return 0; 505 } 506 } 507 else 508 { 509 if (this.coordBaseMode == 1) 510 { 511 return par2 + 1 & 3; 512 } 513 514 if (this.coordBaseMode == 3) 515 { 516 return par2 + 3 & 3; 517 } 518 } 519 520 return par2; 521 } 522 523 /** 524 * current Position depends on currently set Coordinates mode, is computed here 525 */ 526 protected void placeBlockAtCurrentPosition(World par1World, int par2, int par3, int par4, int par5, int par6, StructureBoundingBox par7StructureBoundingBox) 527 { 528 int var8 = this.getXWithOffset(par4, par6); 529 int var9 = this.getYWithOffset(par5); 530 int var10 = this.getZWithOffset(par4, par6); 531 532 if (par7StructureBoundingBox.isVecInside(var8, var9, var10)) 533 { 534 par1World.setBlockAndMetadata(var8, var9, var10, par2, par3); 535 } 536 } 537 538 protected int getBlockIdAtCurrentPosition(World par1World, int par2, int par3, int par4, StructureBoundingBox par5StructureBoundingBox) 539 { 540 int var6 = this.getXWithOffset(par2, par4); 541 int var7 = this.getYWithOffset(par3); 542 int var8 = this.getZWithOffset(par2, par4); 543 return !par5StructureBoundingBox.isVecInside(var6, var7, var8) ? 0 : par1World.getBlockId(var6, var7, var8); 544 } 545 546 protected void func_74878_a(World par1World, StructureBoundingBox par2StructureBoundingBox, int par3, int par4, int par5, int par6, int par7, int par8) 547 { 548 for (int var9 = par4; var9 <= par7; ++var9) 549 { 550 for (int var10 = par3; var10 <= par6; ++var10) 551 { 552 for (int var11 = par5; var11 <= par8; ++var11) 553 { 554 this.placeBlockAtCurrentPosition(par1World, 0, 0, var10, var9, var11, par2StructureBoundingBox); 555 } 556 } 557 } 558 } 559 560 /** 561 * arguments: (World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int 562 * maxZ, int placeBlockId, int replaceBlockId, boolean alwaysreplace) 563 */ 564 protected void fillWithBlocks(World par1World, StructureBoundingBox par2StructureBoundingBox, int par3, int par4, int par5, int par6, int par7, int par8, int par9, int par10, boolean par11) 565 { 566 for (int var12 = par4; var12 <= par7; ++var12) 567 { 568 for (int var13 = par3; var13 <= par6; ++var13) 569 { 570 for (int var14 = par5; var14 <= par8; ++var14) 571 { 572 if (!par11 || this.getBlockIdAtCurrentPosition(par1World, var13, var12, var14, par2StructureBoundingBox) != 0) 573 { 574 if (var12 != par4 && var12 != par7 && var13 != par3 && var13 != par6 && var14 != par5 && var14 != par8) 575 { 576 this.placeBlockAtCurrentPosition(par1World, par10, 0, var13, var12, var14, par2StructureBoundingBox); 577 } 578 else 579 { 580 this.placeBlockAtCurrentPosition(par1World, par9, 0, var13, var12, var14, par2StructureBoundingBox); 581 } 582 } 583 } 584 } 585 } 586 } 587 588 protected void func_74872_a(World par1World, StructureBoundingBox par2StructureBoundingBox, int par3, int par4, int par5, int par6, int par7, int par8, int par9, int par10, int par11, int par12, boolean par13) 589 { 590 for (int var14 = par4; var14 <= par7; ++var14) 591 { 592 for (int var15 = par3; var15 <= par6; ++var15) 593 { 594 for (int var16 = par5; var16 <= par8; ++var16) 595 { 596 if (!par13 || this.getBlockIdAtCurrentPosition(par1World, var15, var14, var16, par2StructureBoundingBox) != 0) 597 { 598 if (var14 != par4 && var14 != par7 && var15 != par3 && var15 != par6 && var16 != par5 && var16 != par8) 599 { 600 this.placeBlockAtCurrentPosition(par1World, par11, par12, var15, var14, var16, par2StructureBoundingBox); 601 } 602 else 603 { 604 this.placeBlockAtCurrentPosition(par1World, par9, par10, var15, var14, var16, par2StructureBoundingBox); 605 } 606 } 607 } 608 } 609 } 610 } 611 612 /** 613 * arguments: World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int 614 * maxZ, boolean alwaysreplace, Random rand, StructurePieceBlockSelector blockselector 615 */ 616 protected void fillWithRandomizedBlocks(World par1World, StructureBoundingBox par2StructureBoundingBox, int par3, int par4, int par5, int par6, int par7, int par8, boolean par9, Random par10Random, StructurePieceBlockSelector par11StructurePieceBlockSelector) 617 { 618 for (int var12 = par4; var12 <= par7; ++var12) 619 { 620 for (int var13 = par3; var13 <= par6; ++var13) 621 { 622 for (int var14 = par5; var14 <= par8; ++var14) 623 { 624 if (!par9 || this.getBlockIdAtCurrentPosition(par1World, var13, var12, var14, par2StructureBoundingBox) != 0) 625 { 626 par11StructurePieceBlockSelector.selectBlocks(par10Random, var13, var12, var14, var12 == par4 || var12 == par7 || var13 == par3 || var13 == par6 || var14 == par5 || var14 == par8); 627 this.placeBlockAtCurrentPosition(par1World, par11StructurePieceBlockSelector.getSelectedBlockId(), par11StructurePieceBlockSelector.getSelectedBlockMetaData(), var13, var12, var14, par2StructureBoundingBox); 628 } 629 } 630 } 631 } 632 } 633 634 /** 635 * arguments: World worldObj, StructureBoundingBox structBB, Random rand, float randLimit, int minX, int minY, int 636 * minZ, int maxX, int maxY, int maxZ, int olaceBlockId, int replaceBlockId, boolean alwaysreplace 637 */ 638 protected void randomlyFillWithBlocks(World par1World, StructureBoundingBox par2StructureBoundingBox, Random par3Random, float par4, int par5, int par6, int par7, int par8, int par9, int par10, int par11, int par12, boolean par13) 639 { 640 for (int var14 = par6; var14 <= par9; ++var14) 641 { 642 for (int var15 = par5; var15 <= par8; ++var15) 643 { 644 for (int var16 = par7; var16 <= par10; ++var16) 645 { 646 if (par3Random.nextFloat() <= par4 && (!par13 || this.getBlockIdAtCurrentPosition(par1World, var15, var14, var16, par2StructureBoundingBox) != 0)) 647 { 648 if (var14 != par6 && var14 != par9 && var15 != par5 && var15 != par8 && var16 != par7 && var16 != par10) 649 { 650 this.placeBlockAtCurrentPosition(par1World, par12, 0, var15, var14, var16, par2StructureBoundingBox); 651 } 652 else 653 { 654 this.placeBlockAtCurrentPosition(par1World, par11, 0, var15, var14, var16, par2StructureBoundingBox); 655 } 656 } 657 } 658 } 659 } 660 } 661 662 /** 663 * Randomly decides if placing or not. Used for Decoration such as Torches and Spiderwebs 664 */ 665 protected void randomlyPlaceBlock(World par1World, StructureBoundingBox par2StructureBoundingBox, Random par3Random, float par4, int par5, int par6, int par7, int par8, int par9) 666 { 667 if (par3Random.nextFloat() < par4) 668 { 669 this.placeBlockAtCurrentPosition(par1World, par8, par9, par5, par6, par7, par2StructureBoundingBox); 670 } 671 } 672 673 /** 674 * arguments: World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int 675 * maxZ, int placeBlockId, boolean alwaysreplace 676 */ 677 protected void randomlyRareFillWithBlocks(World par1World, StructureBoundingBox par2StructureBoundingBox, int par3, int par4, int par5, int par6, int par7, int par8, int par9, boolean par10) 678 { 679 float var11 = (float)(par6 - par3 + 1); 680 float var12 = (float)(par7 - par4 + 1); 681 float var13 = (float)(par8 - par5 + 1); 682 float var14 = (float)par3 + var11 / 2.0F; 683 float var15 = (float)par5 + var13 / 2.0F; 684 685 for (int var16 = par4; var16 <= par7; ++var16) 686 { 687 float var17 = (float)(var16 - par4) / var12; 688 689 for (int var18 = par3; var18 <= par6; ++var18) 690 { 691 float var19 = ((float)var18 - var14) / (var11 * 0.5F); 692 693 for (int var20 = par5; var20 <= par8; ++var20) 694 { 695 float var21 = ((float)var20 - var15) / (var13 * 0.5F); 696 697 if (!par10 || this.getBlockIdAtCurrentPosition(par1World, var18, var16, var20, par2StructureBoundingBox) != 0) 698 { 699 float var22 = var19 * var19 + var17 * var17 + var21 * var21; 700 701 if (var22 <= 1.05F) 702 { 703 this.placeBlockAtCurrentPosition(par1World, par9, 0, var18, var16, var20, par2StructureBoundingBox); 704 } 705 } 706 } 707 } 708 } 709 } 710 711 /** 712 * Deletes all continuous blocks from selected position upwards. Stops at hitting air. 713 */ 714 protected void clearCurrentPositionBlocksUpwards(World par1World, int par2, int par3, int par4, StructureBoundingBox par5StructureBoundingBox) 715 { 716 int var6 = this.getXWithOffset(par2, par4); 717 int var7 = this.getYWithOffset(par3); 718 int var8 = this.getZWithOffset(par2, par4); 719 720 if (par5StructureBoundingBox.isVecInside(var6, var7, var8)) 721 { 722 while (!par1World.isAirBlock(var6, var7, var8) && var7 < 255) 723 { 724 par1World.setBlockAndMetadata(var6, var7, var8, 0, 0); 725 ++var7; 726 } 727 } 728 } 729 730 /** 731 * Overwrites air and liquids from selected position downwards, stops at hitting anything else. 732 */ 733 protected void fillCurrentPositionBlocksDownwards(World par1World, int par2, int par3, int par4, int par5, int par6, StructureBoundingBox par7StructureBoundingBox) 734 { 735 int var8 = this.getXWithOffset(par4, par6); 736 int var9 = this.getYWithOffset(par5); 737 int var10 = this.getZWithOffset(par4, par6); 738 739 if (par7StructureBoundingBox.isVecInside(var8, var9, var10)) 740 { 741 while ((par1World.isAirBlock(var8, var9, var10) || par1World.getBlockMaterial(var8, var9, var10).isLiquid()) && var9 > 1) 742 { 743 par1World.setBlockAndMetadata(var8, var9, var10, par2, par3); 744 --var9; 745 } 746 } 747 } 748 749 protected boolean func_74879_a(World par1World, StructureBoundingBox par2StructureBoundingBox, Random par3Random, int par4, int par5, int par6, WeightedRandomChestContent[] par7ArrayOfWeightedRandomChestContent, int par8) 750 { 751 int var9 = this.getXWithOffset(par4, par6); 752 int var10 = this.getYWithOffset(par5); 753 int var11 = this.getZWithOffset(par4, par6); 754 755 if (par2StructureBoundingBox.isVecInside(var9, var10, var11) && par1World.getBlockId(var9, var10, var11) != Block.chest.blockID) 756 { 757 par1World.setBlockWithNotify(var9, var10, var11, Block.chest.blockID); 758 TileEntityChest var12 = (TileEntityChest)par1World.getBlockTileEntity(var9, var10, var11); 759 760 if (var12 != null) 761 { 762 WeightedRandomChestContent.func_76293_a(par3Random, par7ArrayOfWeightedRandomChestContent, var12, par8); 763 } 764 765 return true; 766 } 767 else 768 { 769 return false; 770 } 771 } 772 773 protected boolean func_74869_a(World par1World, StructureBoundingBox par2StructureBoundingBox, Random par3Random, int par4, int par5, int par6, int par7, WeightedRandomChestContent[] par8ArrayOfWeightedRandomChestContent, int par9) 774 { 775 int var10 = this.getXWithOffset(par4, par6); 776 int var11 = this.getYWithOffset(par5); 777 int var12 = this.getZWithOffset(par4, par6); 778 779 if (par2StructureBoundingBox.isVecInside(var10, var11, var12) && par1World.getBlockId(var10, var11, var12) != Block.dispenser.blockID) 780 { 781 par1World.setBlockAndMetadataWithNotify(var10, var11, var12, Block.dispenser.blockID, this.getMetadataWithOffset(Block.dispenser.blockID, par7)); 782 TileEntityDispenser var13 = (TileEntityDispenser)par1World.getBlockTileEntity(var10, var11, var12); 783 784 if (var13 != null) 785 { 786 WeightedRandomChestContent.func_76294_a(par3Random, par8ArrayOfWeightedRandomChestContent, var13, par9); 787 } 788 789 return true; 790 } 791 else 792 { 793 return false; 794 } 795 } 796 797 protected void placeDoorAtCurrentPosition(World par1World, StructureBoundingBox par2StructureBoundingBox, Random par3Random, int par4, int par5, int par6, int par7) 798 { 799 int var8 = this.getXWithOffset(par4, par6); 800 int var9 = this.getYWithOffset(par5); 801 int var10 = this.getZWithOffset(par4, par6); 802 803 if (par2StructureBoundingBox.isVecInside(var8, var9, var10)) 804 { 805 ItemDoor.placeDoorBlock(par1World, var8, var9, var10, par7, Block.doorWood); 806 } 807 } 808 }