You could get the event, make sure it's a mob killed by a player and get the location of the event then drop the item you wish to drop. Code:java @EventHandler public void onBlockBreak(BlockBreakEvent event) { Player player = event.getPlayer(); if (event.getBlock().getType() == Material.DIRT || event.getBlock().getType() == Material.GRASS) { if (player.getItemInHand() != null) { if (player.getItemInHand().getType() == privateItem.getType()) { if (player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(privateItem.getItemMeta().getDisplayName())) { Random randomGenerator = new Random(); int randomInt = randomGenerator.nextInt(11); if (randomInt <= 3) { Block block = event.getBlock(); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), privateItem); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.DIRT)); event.setCancelled(true); } } } } } } Just an example of what I did for block break event in one of my plugins.