Posted June 23, 20178 yr 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)); } Edited June 23, 20178 yr by Nathansmash9000
June 23, 20178 yr You are re-inventing the wheel. Look at the Block::getDrops, Block::getItemDropped and Block::quantityDropped methods. You can override these to set what is dropped when a block is broken.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.