--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/AdminDestroy.java 2011/04/23 13:14:39 1378 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/AdminDestroy.java 2011/04/24 10:08:10 1384 @@ -2,8 +2,10 @@ import java.util.HashSet; import java.util.Set; +import java.util.Random; import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -12,10 +14,12 @@ import org.bukkit.event.block.BlockListener; import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; public class AdminDestroy extends BlockListener implements CommandExecutor { - + + Random rand = new Random(); Set destroyers = new HashSet(); @@ -25,6 +29,7 @@ return false; if (! (sender instanceof Player) ) return false; + Player p = (Player) sender; if (destroyers.contains(p.getName())) { destroyers.remove( p.getName() ); @@ -37,6 +42,23 @@ return true; } + + + protected int getDropBlock(Block b) { + switch (b.getTypeId()) { + case 1: //stone drops cobblestone + return 4; + case 2: + case 3: + return 0; //instabreak already drops dirt + case 16: //coal ore drops coal + return 263; + case 56: //diamond ore drops diamond + return 264; + default: + return b.getTypeId(); //don't throw any others + } + } public void onBlockDamage(BlockDamageEvent event) { Player p = event.getPlayer(); @@ -47,6 +69,15 @@ if ( destroyers.contains(p.getName()) ) { if (p.getItemInHand().getType() == Material.FEATHER) { event.setInstaBreak(true); + + Block b = event.getBlock(); + int blockid = getDropBlock(b); + + if (blockid != 0) { + ItemStack stack = new ItemStack(blockid, 1); + b.getWorld().dropItemNaturally(b.getLocation(), stack); + } + } }