@SchnellfeuerXD
Wieso hast du denn ein eigenes "StartKickEvent" definiert? Dieses Event wird ja nur an einer Stelle aufgerufen und der Listener beinhaltet weitere Befehlslogik. Es macht überhaupt keinen Sinn, das so umzusetzen, denn alles was der Listener macht könnte auch in der
onCommand()-Methode von
StartKickCommand stehen.
Events ermöglichen die Registrierung beliebig vieler Listener, die auf das entsprechende Ereignis reagieren können. Ein eigenes Event wäre insbesondere dann sinnvoll, wenn andere Plugins eine solche Möglichkeit haben sollen. Das ist hier jedoch nicht der Fall. Das Event wird an einer Stelle ausgelöst und auch nur von einem Listener verarbeitet, damit ist diese Umsetzung unnötig kompliziert.
Es wurde ja schon erwähnt, dass dein Plugin Zustände speichern können muss. Das wäre einer davon. An irgendeiner Stelle muss der momentane Status gespeichert werden (Abstimmung läuft/läuft nicht), die Stimmen der Spieler und der zu kickende Spieler. Bei Befehlsausführung wird der Status dann überprüft.
Alle Bestandteile der Bukkit-API, so auch der Scheduler, sind im Javadoc von Spigot dokumentiert:
https://hub.spigotmc.org/javadocs/spigot/index.html?overview-summary.html
Die relevanten Scheduler-Methoden sind hier aufgelistet:
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/scheduler/BukkitScheduler.html
Eine Instanz von BukkitScheduler erhältst du mit
Bukkit.getScheduler().
Eben nicht. Keine Ahnung, wo du das her hast, aber bitte höre auf alles in irgendwelche Listener und separaten Events zu schreiben. Das sorgt im Endeffekt nur für Performanceeinbußen und unnötig komplexen Code. Im Endeffekt brauchst du nur deine Befehle, die Main-Klasse des Plugins, eine Klasse die den Zustand der Abstimmung enthält (und dessen Veränderung erlaubt) und eine Implementation von
Runnable, die der Scheduler zumindest zum Ende der Abstimmungszeit ausführt um diese zu beenden.
Damit wären die Zuständigkeiten bereits sinnvoll aufgeteilt.