package pneumaticCraft.common.block.pneumaticPlants; import java.util.Random; import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntityBrewingStand; import net.minecraft.world.World; import pneumaticCraft.common.entity.projectile.EntityPotionCloud; import pneumaticCraft.common.item.ItemPlasticPlants; import pneumaticCraft.lib.Textures; public class BlockPotionPlant extends BlockPneumaticPlantBase{ private static final int SQUARE_RADIUS = 20; private static final int MAX_HEIGHT_DIFF = 3; @Override protected int getSeedDamage(){ return ItemPlasticPlants.POTION_PLANT_DAMAGE; } @Override protected String getTextureString(){ return Textures.ICON_POTION_PLANT_LOCATION; } @Override protected boolean canGrowWithLightValue(int lightValue){ return lightValue >= 10; } /** * Significantly (twice as much per 3 brewing stands) increase the growth rate when there brewing stands that are currently brewing around the plant. */ @Override protected float getGrowthRate(World world, int x, int y, int z){ int brewingBrewingStands = 0; for(int i = x - SQUARE_RADIUS; i <= x + SQUARE_RADIUS; i++) { for(int j = y - MAX_HEIGHT_DIFF; j <= y + MAX_HEIGHT_DIFF; j++) { for(int k = z - SQUARE_RADIUS; k <= z + SQUARE_RADIUS; k++) { if(world.getBlock(i, j, k) == Blocks.brewing_stand && world.getTileEntity(i, j, k) instanceof TileEntityBrewingStand) { TileEntityBrewingStand brewingStand = (TileEntityBrewingStand)world.getTileEntity(i, j, k); if(brewingStand.getBrewTime() > 0) brewingBrewingStands++; } } } } return super.getGrowthRate(world, x, y, z) * (1 + brewingBrewingStands * 0.333F); } @Override public void executeFullGrownEffect(World world, int x, int y, int z, Random rand){ world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x, y, z) - 2, 3); if(!world.isRemote) world.spawnEntityInWorld(new EntityPotionCloud(world, x + 0.5D, y + 0.5D, z + 0.5D)); } }