Advertisement
derekunavailable

rubukkit/t/190921

Mar 14th, 2024
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.81 KB | None | 0 0
  1. package direct.derekunavailable.untitled;
  2.  
  3. import org.bukkit.ChatColor;
  4. import org.bukkit.command.Command;
  5. import org.bukkit.command.CommandSender;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.EventHandler;
  8. import org.bukkit.event.EventPriority;
  9. import org.bukkit.event.Listener;
  10. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  11. import org.bukkit.plugin.java.JavaPlugin;
  12.  
  13. import java.util.HashSet;
  14. import java.util.UUID;
  15.  
  16. public final class Untitled extends JavaPlugin implements Listener {
  17.  
  18.     private final HashSet<UUID> rangeListeners = new HashSet<>();
  19.  
  20.     @Override
  21.     public void onEnable() {
  22.         this.getServer().getPluginManager().registerEvents(this, this);
  23.     }
  24.  
  25.     @Override
  26.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  27.         String lcCommand = label.toLowerCase();
  28.         // Технически, теперь можешь добавить ещё какой нибудь /remove, чтобы убирать слушателей из списка
  29.         boolean isPutCommand = lcCommand.equals("put");
  30.         Player target;
  31.         if (args.length < 1) {
  32.             if (sender instanceof Player) {
  33.                 target = (Player) sender;
  34.             } else {
  35.                 sender.sendMessage(ChatColor.RED + "Usage: /" + lcCommand + " <playername>");
  36.                 return true;
  37.             }
  38.         } else {
  39.             target = this.getServer().getPlayerExact(args[0]);
  40.         }
  41.  
  42.         if (target == null) {
  43.             sender.sendMessage(ChatColor.RED + "Player not found.");
  44.             return true;
  45.         }
  46.  
  47.         if (isPutCommand) {
  48.             this.rangeListeners.add(target.getUniqueId());
  49.             sender.sendMessage(ChatColor.GOLD + "Player " + target.getName() + " added to listeners");
  50.         } else {
  51.             this.rangeListeners.remove(target.getUniqueId());
  52.             sender.sendMessage(ChatColor.GOLD + "Player " + target.getName() + " removed from listeners");
  53.         }
  54.         return true;
  55.     }
  56.  
  57.     @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
  58.     public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
  59.         if (!(event.getDamager() instanceof Player)) {
  60.             return;
  61.         }
  62.  
  63.         Player damager = (Player) event.getDamager();
  64.         double distance = damager.getLocation().distance(event.getEntity().getLocation());
  65.         final String message = ChatColor.AQUA + "[" + damager.getName() + "] " + ChatColor.RESET + "range: " + String.format("%.2f", distance);
  66.  
  67.         for (UUID listenerUUID : this.rangeListeners) {
  68.             Player listener = this.getServer().getPlayer(listenerUUID);
  69.             if (listener != null) {
  70.                 listener.sendMessage(message);
  71.             }
  72.         }
  73.     }
  74. }
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement