--- 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/23 13:48:35 1379 @@ -4,6 +4,7 @@ import java.util.Set; 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,6 +13,7 @@ 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 { @@ -38,6 +40,21 @@ return true; } + + protected int getThrowBlock(Block b) { + switch (b.getTypeId()) { + case 1: + return 4; + case 2: + case 3: + return 0; //instabreak already throws dirt + case 16: + return 264; + default: + return b.getTypeId(); //don't throw any others + } + } + public void onBlockDamage(BlockDamageEvent event) { Player p = event.getPlayer(); @@ -47,6 +64,15 @@ if ( destroyers.contains(p.getName()) ) { if (p.getItemInHand().getType() == Material.FEATHER) { event.setInstaBreak(true); + + Block b = event.getBlock(); + int blockid = getThrowBlock(b); + + if (blockid != 0) { + ItemStack stack = new ItemStack(b.getTypeId(), 1); + b.getWorld().dropItem(b.getLocation(), stack); + } + } }