Я пытался обновить точку, в которой компас указывал бы все oop, но задержка не работает, и она отстает от сервера. Ни TimeUnit
, ни Thread
, ни wait()
не работали. Я использовал spigot 1.14.4.
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.entity.Player;
import org.bukkit.command.CommandSender;
import org.bukkit.Location;
import java.util.concurrent.TimeUnit;
public class Main extends JavaPlugin{
@Override
public void onEnable(){
}
@Override
public void onDisable() {
}
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
//target <player-name>
if(args.length>=1) {
if(Bukkit.getPlayerExact(args[0])!=null) {
Player target=Bukkit.getPlayer(args[0]);
Player p=(Player) sender;
sender.sendMessage(ChatColor.BLUE + "Compass assigned to" + target);
while(Bukkit.getPlayerExact(args[0])!=null) {
Location loc = target.getLocation();
p.setCompassTarget(loc);
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else{
sender.sendMessage(ChatColor.BLUE + "Invalid Player");
}
}else{
sender.sendMessage(ChatColor.BLUE + "Choose a player");
}
return false;
}
}
Может быть, есть какой-то особый способ сделать это, или это должно быть какое-то событие или?