--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/AdminDestroy.java 2011/04/24 10:08:10 1384 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/PowerMiner.java 2011/04/25 07:54:28 1388 @@ -16,12 +16,12 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; -public class AdminDestroy extends BlockListener implements CommandExecutor { +public class PowerMiner extends BlockListener implements CommandExecutor { Random rand = new Random(); - Set destroyers = new HashSet(); + Set miners = new HashSet(); @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { @@ -31,12 +31,12 @@ return false; Player p = (Player) sender; - if (destroyers.contains(p.getName())) { - destroyers.remove( p.getName() ); - p.sendMessage("Admindestroy disabled"); + if (miners.contains(p.getName())) { + miners.remove( p.getName() ); + p.sendMessage("PowerMiner disabled"); } else { - destroyers.add( p.getName() ); - p.sendMessage("Admindestroy enabled - go dig some tunnels (with a feather)"); + miners.add( p.getName() ); + p.sendMessage("PowerMiner enabled - go dig some tunnels (with a feather)"); } @@ -44,19 +44,25 @@ } - protected int getDropBlock(Block b) { + protected ItemStack getDropItems(Block b) { switch (b.getTypeId()) { case 1: //stone drops cobblestone - return 4; + return new ItemStack(4,1); case 2: case 3: - return 0; //instabreak already drops dirt + return null; //instabreak already drops dirt + case 13: + return null; //don't drop gravel + case 16: //coal ore drops coal - return 263; + return new ItemStack(263,1); case 56: //diamond ore drops diamond - return 264; + return new ItemStack(264,1); + case 73: + case 74: + return new ItemStack(331,4); //redstone ore (both glowing and non-glowing) drops 4 redstone default: - return b.getTypeId(); //don't throw any others + return new ItemStack(b.getTypeId(), 1); } } @@ -66,30 +72,33 @@ if (! p.isOp() ) return; - if ( destroyers.contains(p.getName()) ) { + if ( miners.contains(p.getName()) ) { if (p.getItemInHand().getType() == Material.FEATHER) { event.setInstaBreak(true); Block b = event.getBlock(); - int blockid = getDropBlock(b); + ItemStack items = getDropItems(b); - if (blockid != 0) { - ItemStack stack = new ItemStack(blockid, 1); - b.getWorld().dropItemNaturally(b.getLocation(), stack); + if (items != null) { + b.getWorld().dropItemNaturally(b.getLocation(), items); } } } } + public PlayerQuitListener getPlayerQuitListener() { + return new PlayerQuitListener(); + } + public class PlayerQuitListener extends PlayerListener { @Override public void onPlayerQuit(PlayerQuitEvent event) { Player p = event.getPlayer(); - if (destroyers.contains(p.getName())) { - destroyers.remove( p.getName() ); + if (miners.contains(p.getName())) { + miners.remove( p.getName() ); } } }