Java / Spigot Countdown Timer?

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