Hey!
Vielleicht gehe ich zuerst kurz auf meinen existierenden Code ein, und dann auf das Ziel.
(cmds, isEnding, index) sind Klassenvariablen. Die queue führt bei start() beliebige Command-Objekte einfach aus, indem sie die die .execute() Methode aufruft. Das läuft synchron im Main-Thread und funktioniert soweit auch ohne Probleme.
Nun zur Herausforderung. Ich möchte einen Delay Command machen, durch den X Sekunden gewartet wird, bis der nächste Command ausgeführt wird. In execute() könnte man dann einfach eine flag auf die queue setzen, allerdings habe ich bisher noch keine Idee, wie man die eigentliche Verzögerung in der CommandQueue implementieren könnte.
Die Standart ScheduleRepeatingTask... Methoden von Spigot nehmen ja keinen dynamischen, sondern nur einen konstanten Delay, was mir nicht weiterhilft. Und wenn ich es in einen anderen Thread packe läuft execute() nicht mehr synchron, was es soll.
Jemand eine Idee?
Vielleicht gehe ich zuerst kurz auf meinen existierenden Code ein, und dann auf das Ziel.
Code:
public void start() {
for (int i = 0; i < cmds.size(); i++) {
cmds.get(index).execute(this);
if (isEnding) break;
index++;
}
index = 0;
}
Code:
public void execute(CommandQueue queue) {
// ...
}
Nun zur Herausforderung. Ich möchte einen Delay Command machen, durch den X Sekunden gewartet wird, bis der nächste Command ausgeführt wird. In execute() könnte man dann einfach eine flag auf die queue setzen, allerdings habe ich bisher noch keine Idee, wie man die eigentliche Verzögerung in der CommandQueue implementieren könnte.
Die Standart ScheduleRepeatingTask... Methoden von Spigot nehmen ja keinen dynamischen, sondern nur einen konstanten Delay, was mir nicht weiterhilft. Und wenn ich es in einen anderen Thread packe läuft execute() nicht mehr synchron, was es soll.
Jemand eine Idee?