61 lines
2.4 KiB
Java
61 lines
2.4 KiB
Java
package de.craftix.runnervshunter;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.block.Action;
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
|
|
|
public class Compass implements Listener {
|
|
public int schedulerID;
|
|
|
|
public void startScheduler(){
|
|
try {
|
|
schedulerID = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
for (Player all : Bukkit.getOnlinePlayers()){
|
|
Player nearest = null;
|
|
for (Player runner : Main.runner){
|
|
if (nearest == null){
|
|
nearest = runner;
|
|
continue;
|
|
}
|
|
if (all.getLocation().distance(runner.getLocation()) < all.getLocation().distance(nearest.getLocation())) nearest = runner;
|
|
}
|
|
if (nearest == null) return;
|
|
all.setCompassTarget(nearest.getLocation());
|
|
}
|
|
}
|
|
}, 0, 20);
|
|
}catch (Exception e){
|
|
Bukkit.getPlayer("CraftixLP").sendMessage(e.getMessage());
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onCompassClick(PlayerInteractEvent event){
|
|
try {
|
|
if (!event.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.COMPASS)) return;
|
|
if (event.getAction().equals(Action.RIGHT_CLICK_AIR) || event.getAction().equals(Action.RIGHT_CLICK_BLOCK)){
|
|
Player p = event.getPlayer();
|
|
Player nearest = null;
|
|
for (Player runner : Main.runner){
|
|
if (nearest == null){
|
|
nearest = runner;
|
|
continue;
|
|
}
|
|
if (p.getLocation().distance(runner.getLocation()) < p.getLocation().distance(nearest.getLocation())) nearest = runner;
|
|
}
|
|
int distance = (int)p.getLocation().distance(nearest.getLocation());
|
|
p.sendMessage("§aDer Spieler " + nearest.getName() + " ist " + distance + " Blöcke entfernt");
|
|
}
|
|
}catch (Exception e){
|
|
|
|
}
|
|
}
|
|
|
|
}
|