2017-08-17 1 views
1

Ich habe ein Problem mit Bukkit. Ich möchte eine sich wiederholende Aufgabe ausführen, die eine Nachricht mit den Koordinaten eines Spielers sendet. Vielen Dank für Ihre Hilfe!Bukkit Scheduler wiederholen

Bukkit.getScheduler().scheduleAsyncRepeatingTask(this.main, new Runnable() { 

         @Override 
         public void run() { 
          Player tp = Bukkit.getPlayer(args[1]); 
          p.sendMessage("§bThe coordinates of §4" + tp.getName()); 
          p.sendMessage("§eX: " + tp.getLocation().getBlockX()); 
          p.sendMessage("§eY: " + tp.getLocation().getBlockY()); 
          p.sendMessage("§eZ: " + tp.getLocation().getBlockZ()); 
          p.sendMessage("§eD: " + tp.getLocation().getDirection()); 

         } 

        }, 1, 1); 

Antwort

0

Sie sollten keine async Aufgabe für den Zugriff auf bukkit api verwenden. Planen Sie eine Synchronisierungsaufgabe statt, zB mit BukkitRunnable und Lambda:

new BukkitRunnable(() -> { 

//Runnable run method, do stuff here 

}).runTaskTimer (plugin, initialDelay, repeatingDelay); 
+0

Danke! Ich habe es mit einer Synchronisierungsaufgabe versucht, aber es hat auch nicht funktioniert. Ich habe kein BukkitRunnable verwendet ... –

+0

Achten Sie darauf, jede Antwort, die Ihr Problem löst, als die richtige Lösung zu markieren. Dies hilft zukünftigen Benutzern mit dem gleichen Problem wie Ihnen! – Kerooker

0

Sie können auch verwenden:

getServer().getScheduler().runTaskTimer(this, new Runnable() { 
     @Override 
     public void run() { 
      //your code here 
     } 
    }, initDelay, period); 

wo:

initDelay - anfängliche Verzögerung in Zecken

Zeit - Zeit zwischen Aufgaben in Ticks

+0

Vielen Dank für Ihre Hilfe! –