package erebus.blocks; import java.util.List; import java.util.Random; import net.minecraft.block.BlockMushroom; import net.minecraft.block.SoundType; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import erebus.ModTabs; import erebus.world.feature.plant.WorldGenGiantMushrooms; import erebus.world.feature.plant.WorldGenGiantMushrooms.MushroomType; public class SmallMushroom extends BlockMushroom { private boolean requires2x2ToGrow; public SmallMushroom(boolean requires2x2ToGrow) { setHardness(0.0F); setSoundType(SoundType.PLANT); setCreativeTab(ModTabs.BLOCKS); this.requires2x2ToGrow = requires2x2ToGrow; } @Override @SideOnly(Side.CLIENT) @SuppressWarnings({ "unchecked", "rawtypes" }) public void getSubBlocks(Item item, CreativeTabs tab, List list) { list.add(new ItemStack(item)); } @Override public void grow(World world, Random rand, BlockPos pos, IBlockState state) { if (requires2x2ToGrow) { if (isMushroom(world, pos.east()) && isMushroom(world, pos.east().south()) && isMushroom(world, pos.south())) { world.setBlockToAir(pos); world.setBlockToAir(pos.east()); world.setBlockToAir(pos.east().south()); world.setBlockToAir(pos.south()); WorldGenGiantMushrooms genGiantMushrooms = new WorldGenGiantMushrooms(); genGiantMushrooms.setMushroomType(MushroomType.getFromShroom(this)); if (!genGiantMushrooms.generate(world, rand, pos.east())) { world.setBlockState(pos, this.getDefaultState()); world.setBlockState(pos.east(), this.getDefaultState()); world.setBlockState(pos.east().south(), this.getDefaultState()); world.setBlockState(pos.south(), this.getDefaultState()); } } else if (isMushroom(world, pos.west()) && isMushroom(world, pos.west().south()) && isMushroom(world, pos.south())) { world.setBlockToAir(pos); world.setBlockToAir(pos.west()); world.setBlockToAir(pos.west().south()); world.setBlockToAir(pos.south()); WorldGenGiantMushrooms genGiantMushrooms = new WorldGenGiantMushrooms(); genGiantMushrooms.setMushroomType(MushroomType.getFromShroom(this)); if (!genGiantMushrooms.generate(world, rand, pos)) { world.setBlockState(pos, this.getDefaultState()); world.setBlockState(pos.west(), this.getDefaultState()); world.setBlockState(pos.west().south(), this.getDefaultState()); world.setBlockState(pos.south(), this.getDefaultState()); } } else if (isMushroom(world, pos.east()) && isMushroom(world, pos.east().north()) && isMushroom(world, pos.north())) { world.setBlockToAir(pos); world.setBlockToAir(pos.east()); world.setBlockToAir(pos.east().north()); world.setBlockToAir(pos.north()); WorldGenGiantMushrooms genGiantMushrooms = new WorldGenGiantMushrooms(); genGiantMushrooms.setMushroomType(MushroomType.getFromShroom(this)); if (!genGiantMushrooms.generate(world, rand, pos.east().north())) { world.setBlockState(pos, this.getDefaultState()); world.setBlockState(pos.east(), this.getDefaultState()); world.setBlockState(pos.east().north(), this.getDefaultState()); world.setBlockState(pos.north(), this.getDefaultState()); } } else if (isMushroom(world, pos.west()) && isMushroom(world, pos.west().north()) && isMushroom(world, pos.north())) { world.setBlockToAir(pos); world.setBlockToAir(pos.west()); world.setBlockToAir(pos.west().north()); world.setBlockToAir(pos.north()); WorldGenGiantMushrooms genGiantMushrooms = new WorldGenGiantMushrooms(); genGiantMushrooms.setMushroomType(MushroomType.getFromShroom(this)); if (!genGiantMushrooms.generate(world, rand, pos.north())) { world.setBlockState(pos, this.getDefaultState()); world.setBlockState(pos.west(), this.getDefaultState()); world.setBlockState(pos.west().north(), this.getDefaultState()); world.setBlockState(pos.north(), this.getDefaultState()); } } } else { world.setBlockToAir(pos); WorldGenGiantMushrooms genGiantMushrooms = new WorldGenGiantMushrooms(); genGiantMushrooms.setMushroomType(MushroomType.getFromShroom(this)); if (!genGiantMushrooms.generate(world, rand, pos)) world.setBlockState(pos, this.getDefaultState()); } } private boolean isMushroom(World world, BlockPos pos) { return world.getBlockState(pos).getBlock() == this; } }