Advertisement
Guest User

EraseCommand.java

a guest
Jan 2nd, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.38 KB | None | 0 0
  1. package net.charter.orion_pax.OasisExtras.Commands;
  2.  
  3. import java.util.HashSet;
  4. import java.util.Iterator;
  5. import java.util.List;
  6.  
  7. import net.charter.orion_pax.OasisExtras.OasisExtras;
  8.  
  9. import org.bukkit.ChatColor;
  10. import org.bukkit.Location;
  11. import org.bukkit.World;
  12. import org.bukkit.command.Command;
  13. import org.bukkit.command.CommandExecutor;
  14. import org.bukkit.command.CommandSender;
  15. import org.bukkit.entity.Entity;
  16. import org.bukkit.entity.Item;
  17. import org.bukkit.entity.Player;
  18. import org.bukkit.util.Vector;
  19.  
  20. public class EraseCommand implements CommandExecutor {
  21.  
  22.     int radius,x,y,z;
  23.     private Location loc;
  24.     private World world;
  25.     private Vector origin;
  26.     private OasisExtras plugin;
  27.     private List<Entity> list;
  28.     private Iterator<Entity> it;
  29.     public EraseCommand(OasisExtras plugin) {
  30.         this.plugin=plugin;
  31.     }
  32.  
  33.     @Override
  34.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  35.         if(args.length==4){
  36.             final Player player = (Player) sender;
  37.             try {
  38.                 x=Integer.parseInt(args[0]);
  39.                 y=Integer.parseInt(args[1]);
  40.                 z=Integer.parseInt(args[2]);
  41.                 radius=Integer.parseInt(args[3]);
  42.             } catch (NumberFormatException e) {
  43.                 sender.sendMessage(ChatColor.RED + "Check your arguments! One of them is not a number!");
  44.                 return false;
  45.             }
  46.             loc=new Location(player.getWorld(),x,y,z);
  47.             world=loc.getWorld();
  48.             plugin.eList.add(world.getChunkAt(x, z));
  49.             world.loadChunk(x, z);
  50.             for(int x=-radius;x<radius; x = x + 16){
  51.                 for(int z=-radius;z<radius;z=z+16){
  52.                     plugin.eList.add(world.getChunkAt(this.x + x, this.z + z));
  53.                     world.loadChunk(this.x + x, this.z + z);
  54.                 }
  55.             }
  56.             plugin.getServer().getScheduler().runTaskLater(plugin, new Runnable(){
  57.  
  58.                 @Override
  59.                 public void run() {
  60.                     player.sendMessage(ChatColor.RED + Integer.toString(removeEntities(loc.toVector(),radius)) + " items removed!");
  61.                     plugin.eList.clear();
  62.                 }
  63.                
  64.             }, 100L);
  65.             return true;
  66.            
  67.  
  68.         }
  69.         sender.sendMessage(ChatColor.RED + "Check your arguments!");
  70.         return false;
  71.     }
  72.    
  73.     private int removeEntities(Vector origin, int radius){
  74.         int num = 0;
  75.         double radiusSq = Math.pow(radius, 2);
  76.         for(Entity ent : world.getEntities()){
  77.             if(origin.distanceSquared(ent.getLocation().toVector()) > radiusSq){
  78.                 continue;
  79.             }
  80.             if(ent instanceof Item){
  81.                 ent.remove();
  82.                 num++;
  83.             }
  84.         }
  85.         return num;
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement