package dk.thoerup.bukkit.hoeruputils; import java.util.HashSet; import java.util.Set; import java.util.Random; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.block.BlockDamageEvent; import org.bukkit.event.block.BlockListener; import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerQuitEvent; public class SuperMiner extends BlockListener implements CommandExecutor { Random rand = new Random(); Set miners = new HashSet(); final static int radius = 5; @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (! (sender instanceof Player) ) { return false; } if (!sender.isOp()) { sender.sendMessage("Only ops can use superminer"); return true; } Player p = (Player) sender; if (miners.contains(p.getName())) { miners.remove( p.getName() ); p.sendMessage("SuperMiner disabled"); } else { miners.add( p.getName() ); p.sendMessage("SuperMiner enabled - go dig some tunnels (with a fish)"); } return true; } public void onBlockDamage(BlockDamageEvent event) { Player p = event.getPlayer(); if (! p.isOp() ) return; if (p.getItemInHand().getType() == Material.RAW_FISH) { if ( miners.contains(p.getName()) ) { Block b = event.getBlock(); superMiner(p, p.getWorld(), p.getLocation() ); } } } public void superMiner(Player player, World world, Location location) { Location l = location; for (int x=(radius*-1); x<=radius; x++) { for (int y=0; y<=radius; y++) { for (int z=(radius*-1); z<=radius; z++) { Block b = world.getBlockAt( l.getBlockX()+x, l.getBlockY()+y, l.getBlockZ()+z); int id = b.getTypeId(); if (id == 1 || id == 2 || id == 3 || id == 4 || id == 8 || id == 9 || id == 10 || id == 11 || id == 13 || id == 87) { b.setTypeId( 0 ); } } } } } public PlayerQuitListener getPlayerQuitListener() { return new PlayerQuitListener(); } public class PlayerQuitListener extends PlayerListener { @Override public void onPlayerQuit(PlayerQuitEvent event) { Player p = event.getPlayer(); if (miners.contains(p.getName())) { miners.remove( p.getName() ); } } } }