Java / Spigot Countdown Timer?
Hallo. Ich wollte einen Countdown Timer programmieren der nach 5 sekunden aufhört. Doch der folgende Code funktioniert nicht:
Bukkit.getScheduler().scheduleSyncRepeatingTask((Plugin) this, new Runnable() {
int timer = 5;
@Override
public void run() {
if (timer == 0) {
Bukkit.getScheduler().cancelAllTasks();
return;
}
timer--;
player.sendMessage(String.valueOf(timer));
}
},0,20);
Was hab ich falsch gemacht?
1 Antwort
Sehr wahrscheinlich versuchst du den Scheduler außerhalb der Hauptklasse zu starten.
Sollte dies der Fall sein musst du eine Instance deiner Hauptklasse übergeben
Dies sollte deine Hauptklasse beinhalten
static hauptklassename instance;
public void onEnable() {
instance = this;
}
public static hauptklassename getInstance() {
return instance;
}
Nun sollte dein Scheduler so aussehen
Bukkit.getScheduler().scheduleSyncRepeatingTask(hauptklassenname.getInstance(), new Runnable() {
int timer = 5;
@Override
public void run() {
if (timer == 0) {
Bukkit.getScheduler().cancelAllTasks();
return;
}
timer--;
player.sendMessage(String.valueOf(timer));
}
},0,20);
So sollte es nun funktionieren.
Falls nicht kannst du als alternative auch eine Bukkit Runnable nehmen finde ich persönlich besser als Scheduler.
new BukkitRunnable() {
int timer = 5;
@Override
public void run() {
if (timer <= 0) {
this.cancel();
System.out.println("cancel");
}
timer--;
System.out.println("Time :: " + timer);
}
}.runTaskTimer(hauptklassenname.getInstance(), 0, 20);
habe den Code nicht getestet aber er sollte ebenfalls funktionieren.
Woher ich das weiß:eigene Erfahrung