001 package net.minecraft.src; 002 003 import java.util.Random; 004 005 public class WorldGeneratorBonusChest extends WorldGenerator 006 { 007 /** 008 * Instance of WeightedRandomChestContent what will randomly generate items into the Bonus Chest. 009 */ 010 private final WeightedRandomChestContent[] theBonusChestGenerator; 011 012 /** 013 * Value of this int will determine how much items gonna generate in Bonus Chest. 014 */ 015 private final int itemsToGenerateInBonusChest; 016 017 public WorldGeneratorBonusChest(WeightedRandomChestContent[] par1ArrayOfWeightedRandomChestContent, int par2) 018 { 019 this.theBonusChestGenerator = par1ArrayOfWeightedRandomChestContent; 020 this.itemsToGenerateInBonusChest = par2; 021 } 022 023 public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) 024 { 025 int var12; 026 027 for (boolean var6 = false; ((var12 = par1World.getBlockId(par3, par4, par5)) == 0 || var12 == Block.leaves.blockID) && par4 > 1; --par4) 028 { 029 ; 030 } 031 032 if (par4 < 1) 033 { 034 return false; 035 } 036 else 037 { 038 ++par4; 039 040 for (int var7 = 0; var7 < 4; ++var7) 041 { 042 int var8 = par3 + par2Random.nextInt(4) - par2Random.nextInt(4); 043 int var9 = par4 + par2Random.nextInt(3) - par2Random.nextInt(3); 044 int var10 = par5 + par2Random.nextInt(4) - par2Random.nextInt(4); 045 046 if (par1World.isAirBlock(var8, var9, var10) && par1World.doesBlockHaveSolidTopSurface(var8, var9 - 1, var10)) 047 { 048 par1World.setBlockWithNotify(var8, var9, var10, Block.chest.blockID); 049 TileEntityChest var11 = (TileEntityChest)par1World.getBlockTileEntity(var8, var9, var10); 050 051 if (var11 != null && var11 != null) 052 { 053 WeightedRandomChestContent.generateChestContents(par2Random, this.theBonusChestGenerator, var11, this.itemsToGenerateInBonusChest); 054 } 055 056 if (par1World.isAirBlock(var8 - 1, var9, var10) && par1World.doesBlockHaveSolidTopSurface(var8 - 1, var9 - 1, var10)) 057 { 058 par1World.setBlockWithNotify(var8 - 1, var9, var10, Block.torchWood.blockID); 059 } 060 061 if (par1World.isAirBlock(var8 + 1, var9, var10) && par1World.doesBlockHaveSolidTopSurface(var8 - 1, var9 - 1, var10)) 062 { 063 par1World.setBlockWithNotify(var8 + 1, var9, var10, Block.torchWood.blockID); 064 } 065 066 if (par1World.isAirBlock(var8, var9, var10 - 1) && par1World.doesBlockHaveSolidTopSurface(var8 - 1, var9 - 1, var10)) 067 { 068 par1World.setBlockWithNotify(var8, var9, var10 - 1, Block.torchWood.blockID); 069 } 070 071 if (par1World.isAirBlock(var8, var9, var10 + 1) && par1World.doesBlockHaveSolidTopSurface(var8 - 1, var9 - 1, var10)) 072 { 073 par1World.setBlockWithNotify(var8, var9, var10 + 1, Block.torchWood.blockID); 074 } 075 076 return true; 077 } 078 } 079 080 return false; 081 } 082 } 083 }