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