I have an event where when the block is broken, a random item is dropped, although, sometimes, the item isn't dropped. The item is spanwed in the generate() method, and my item's name is Lucky Ore. Here's my code:
@Override
public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) {
// TODO Auto-generated method stub
super.onBlockDestroyedByPlayer(worldIn, pos, state);
Random random = new Random();
int index = random.nextInt(GameRegistry.findRegistry(Item.class).getValues().size());
if (this.name == "Lucky Ore" && !world.isRemote)
{
generate();
}
}
@Override
public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) {
// TODO Auto-generated method stub
super.onBlockDestroyedByExplosion(worldIn, pos, explosionIn);
if (this.name == "Lucky Ore" && !world.isRemote)
{
generate();
}
}
public void generate(){
Random random = new Random();
int index = random.nextInt(GameRegistry.findRegistry(Item.class).getValues().size());
world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(GameRegistry.findRegistry(Item.class).getValues().get(index))));
System.out.println("Item Dropped: " + GameRegistry.findRegistry(Item.class).getValues().get(index));
}