--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/PowerMiner.java 2011/04/25 20:10:53 1390 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/PowerMiner.java 2011/08/16 16:11:25 1591 @@ -25,12 +25,25 @@ @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 ( ! p.hasPermission("hoeruputils.powerminer") ) { + sender.sendMessage("You don't have permissions to use powerminer!"); + return false; + } + if (miners.contains(p.getName())) { miners.remove( p.getName() ); p.sendMessage("PowerMiner disabled"); @@ -51,6 +64,8 @@ case 2: case 3: return null; //instabreak already drops dirt + case 5: + return null; //instabreak drops wooden plank case 12: return null; //instabreak drops sand case 13: @@ -60,33 +75,61 @@ case 17: return null; //instabreak drops wood case 18: - return (rand.nextInt(16) == 0) ? new ItemStack(6,1,(short)0, (byte)rand.nextInt(4) ) : null; //leaves has 6.25% chance of dropping sapplings - the sappling type is randomized + 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 50: + return null; //instabreak drops torches + case 53: + return null; //instabreak drops wood for wooden stairs + case 54: + return null; //instabreak drops chests case 56: //diamond ore drops diamond return new ItemStack(264,1); + case 58: + return null; //instabreak drops craft tables + case 60: + return null; //instabreak drops dirt for farmland blocks + case 64: //instabreak drops wooden doors + case 65: //instabreak drops ladders + case 66: + return null; //instabreak drops rails + case 71: //instabreak drops iron doors + return null; 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 75: + case 76: + return null; //instabreak drops redstone torches (both on and off) + case 82: + return null; //instabreak drops clay from clayblock + case 88: + return null; //instabreak drops soul sand + case 93: //instabreak drops repeater both on and off + case 94: + return null; default: - return new ItemStack(b.getTypeId(), 1); + return new ItemStack(b.getTypeId(), 1,(short)0, b.getData()); } } public void onBlockDamage(BlockDamageEvent event) { Player p = event.getPlayer(); - if (! p.isOp() ) - return; - - if ( miners.contains(p.getName()) ) { - if (p.getItemInHand().getType() == Material.FEATHER) { + 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);