package net.minecraft.world.gen.feature;
import java.util.List;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.util.BlockPos;
import net.minecraft.util.WeightedRandomChestContent;
import net.minecraft.world.World;
public class WorldGeneratorBonusChest extends WorldGenerator
{
private final List field_175909_a;
/**
* Value of this int will determine how much items gonna generate in Bonus Chest.
*/
private final int itemsToGenerateInBonusChest;
private static final String __OBFID = "CL_00000403";
public WorldGeneratorBonusChest(List p_i45634_1_, int p_i45634_2_)
{
this.field_175909_a = p_i45634_1_;
this.itemsToGenerateInBonusChest = p_i45634_2_;
}
public boolean generate(World worldIn, Random p_180709_2_, BlockPos p_180709_3_)
{
Block var4;
while (((var4 = worldIn.getBlockState(p_180709_3_).getBlock()).getMaterial() == Material.air || var4.getMaterial() == Material.leaves) && p_180709_3_.getY() > 1)
{
p_180709_3_ = p_180709_3_.offsetDown();
}
if (p_180709_3_.getY() < 1)
{
return false;
}
else
{
p_180709_3_ = p_180709_3_.offsetUp();
for (int var5 = 0; var5 < 4; ++var5)
{
BlockPos var6 = p_180709_3_.add(p_180709_2_.nextInt(4) - p_180709_2_.nextInt(4), p_180709_2_.nextInt(3) - p_180709_2_.nextInt(3), p_180709_2_.nextInt(4) - p_180709_2_.nextInt(4));
if (worldIn.isAirBlock(var6) && World.doesBlockHaveSolidTopSurface(worldIn, var6.offsetDown()))
{
worldIn.setBlockState(var6, Blocks.chest.getDefaultState(), 2);
TileEntity var7 = worldIn.getTileEntity(var6);
if (var7 instanceof TileEntityChest)
{
WeightedRandomChestContent.generateChestContents(p_180709_2_, this.field_175909_a, (TileEntityChest)var7, this.itemsToGenerateInBonusChest);
}
BlockPos var8 = var6.offsetEast();
BlockPos var9 = var6.offsetWest();
BlockPos var10 = var6.offsetNorth();
BlockPos var11 = var6.offsetSouth();
if (worldIn.isAirBlock(var9) && World.doesBlockHaveSolidTopSurface(worldIn, var9.offsetDown()))
{
worldIn.setBlockState(var9, Blocks.torch.getDefaultState(), 2);
}
if (worldIn.isAirBlock(var8) && World.doesBlockHaveSolidTopSurface(worldIn, var8.offsetDown()))
{
worldIn.setBlockState(var8, Blocks.torch.getDefaultState(), 2);
}
if (worldIn.isAirBlock(var10) && World.doesBlockHaveSolidTopSurface(worldIn, var10.offsetDown()))
{
worldIn.setBlockState(var10, Blocks.torch.getDefaultState(), 2);
}
if (worldIn.isAirBlock(var11) && World.doesBlockHaveSolidTopSurface(worldIn, var11.offsetDown()))
{
worldIn.setBlockState(var11, Blocks.torch.getDefaultState(), 2);
}
return true;
}
}
return false;
}
}
}