--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/PowerMiner.java 2011/04/24 11:49:42 1387 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/PowerMiner.java 2011/05/20 15:51:47 1471 @@ -25,10 +25,16 @@ @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!sender.isOp()) + if (!sender.isOp()) { + sender.sendMessage("Only ops can use powerminer"); return false; - if (! (sender instanceof Player) ) + } + + if (! (sender instanceof Player) ) { + sender.sendMessage("Only in-game players can use powerminer"); return false; + } + Player p = (Player) sender; if (miners.contains(p.getName())) { @@ -51,18 +57,33 @@ case 2: case 3: return null; //instabreak already drops dirt + case 12: + return null; //instabreak drops sand case 13: - return null; //don't drop gravel - - case 16: //coal ore drops coal - return new ItemStack(263,1); + return null; //don't drop gravel + case 16: //coal ore drops coal + return new ItemStack(263,1); + case 17: + return null; //instabreak drops wood + case 18: + return (rand.nextInt(16) == 0) ? new ItemStack(6,1,(short)0, b.getData() ) : null; //leaves has 6.25% chance of dropping sapplings + case 21: //lapis lazuli + int count = rand.nextInt(5) + 4; + return new ItemStack(351,count,(short)0, (byte)4); + case 27: + case 28: + return null; //instabreak drops powered and detector rails case 56: //diamond ore drops diamond return new ItemStack(264,1); + case 66: + return null; //instabreak drops rails case 73: case 74: - return new ItemStack(331,4); //redstone ore (both glowing and non-glowing) drops 4 redstone + return new ItemStack(331,4); //redstone ore (both glowing and non-glowing) drops 4 redstone + case 82: + return null; //instabreak drops clay from clayblock default: - return new ItemStack(b.getTypeId(), 1); + return new ItemStack(b.getTypeId(), 1,(short)0, b.getData()); } } @@ -72,13 +93,22 @@ if (! p.isOp() ) return; - if ( miners.contains(p.getName()) ) { - if (p.getItemInHand().getType() == Material.FEATHER) { - event.setInstaBreak(true); + if (p.getItemInHand().getType() == Material.FEATHER) { + if ( miners.contains(p.getName()) ) { Block b = event.getBlock(); + + if (b.getTypeId() == 7) //don't remove bedrock + return; + if (b.getTypeId() == 90) //don't break portal + return; + + event.setInstaBreak(true); + + ItemStack items = getDropItems(b); + if (items != null) { b.getWorld().dropItemNaturally(b.getLocation(), items); } @@ -87,6 +117,10 @@ } } + public PlayerQuitListener getPlayerQuitListener() { + return new PlayerQuitListener(); + } + public class PlayerQuitListener extends PlayerListener { @Override