Zum Hauptinhalt springen

BetterFood Kompatibilität

Laufzeitanforderungen​

Das aktuelle Repository zielt auf:

  • Plugin-Version: 1.5.6
  • Bukkit api-version: 1.21.4
  • Spigot API Build-Ziel: 26.3-R0.1-SNAPSHOT
  • Java: 21

Befehle​

Das Plugin verwendet:

  • /betterfood
  • /bf

Spielerseitige Unterbefehle konzentrieren sich auf das Umschalten von:

  • automatischem Essen (toggleEating, oder einfach /betterfood ohne Argumente)
  • Rückmeldungsnachrichten zum Konsum in der Aktionsleiste (toggleMessage)

Admin-Unterbefehle (erfordern betterfood.admin) stellen die gemeinsam genutzten Nightbreak-Werkzeuge bereit:

  • setup — öffnet das In-Game-Einrichtungsmenü
  • recommendedplugins — zeigt Plugins an, die gut mit BetterFood zusammenpassen. BetterFood hat derzeit keine Einträge im gemeinsamen Empfehlungskatalog, daher öffnet sich ein leeres Menü mit dem Hinweis, dass es momentan keine zusätzlichen Empfehlungen gibt (Konsolen-Absender erhalten denselben Hinweis als Chat-Nachricht)
  • downloadpluginupdate / downloadall — lädt ein Plugin-Update herunter, falls eines verfügbar ist
  • applypluginupdate wendet ein heruntergeladenes Plugin-Update ohne Server-Neustart an (siehe Plugin-Updates ohne Neustart)
  • downloadallcontent — meldet, dass BetterFood keine Inhaltspakete hat

Die Tab-Vervollständigung berücksichtigt Berechtigungen und den eingegebenen Text: toggleEating und toggleMessage werden nur mit betterfood.user vorgeschlagen, downloadpluginupdate, applypluginupdate, downloadallcontent, setup und recommendedplugins nur mit betterfood.admin. Der akzeptierte Alias downloadall wird bewusst nicht vorgeschlagen. Die beiden Einstellungen sind Spielern vorbehalten: Die ausdrücklichen Unterbefehle toggleEating / toggleMessage lehnen andere Absender mit "BetterFood settings can only be changed in-game." ab. Der bloße Befehl /betterfood verweist die Konsole stattdessen auf den Update-Befehl. Spieler ohne betterfood.user erhalten einen Berechtigungshinweis. Ein unbekannter Unterbefehl oder mehr als ein Argument zeigt die Hilfe. Admins sehen die beiden Einstellungen sowie die Befehle für Updates, Einrichtung und Empfehlungen; alle anderen sehen nur die beiden Einstellungen. Die Hilfe lässt downloadallcontent aus, obwohl der Befehl akzeptiert und Admins bei der Tab-Vervollständigung angeboten wird.

Gemeinsame MagmaCore-Befehle​

Die enthaltenen MagmaCore-Werkzeuge fügen beim Start die folgenden Befehle hinzu. Globale Befehle werden beim Laden nur registriert, wenn ihre Namen frei sind. Bei mehreren MagmaGuy-Plugins behält die erste Registrierung den jeweiligen Namen. BetterFoods Befehl für Versionshinweise wird beim Aktivieren des Plugins initialisiert:

  • /nightbreak plugins — durchsucht den Plugin-Katalog, im Spiel als Menü und von der Konsole aus als Chat-Liste (nightbreak.plugins, Standard op). Das bloße /nightbreak gibt nur die Verwendungszeile aus.
  • /nightbreaklogin [token] und /nightbreaklogout — verknüpfen den Server mit einem Nightbreak-Konto und trennen die Verbindung wieder. Ohne Token gibt /nightbreaklogin einen nightbreak.io-Link zum Genehmigen aus (nightbreak.login, Standard op)
  • /logify — lädt das aktuelle Server-Log zu mclo.gs hoch (logify.*, Standard op)
  • /betterfoodchangelog [dismiss|disable] — zeigt ungelesene BetterFood-Versionshinweise. Dieser Befehl ist pro Plugin mit einem eigenen Namensraum versehen und kollidiert daher nicht; sollte /betterfoodchangelog dennoch belegt sein, weicht er auf eine Bezeichnung im Stil von betterfood:betterfoodchangelog aus.

Der Changelog-Befehl ist nur für Admins und nur im Spiel verfügbar: Absender ohne Admin-Berechtigung (oder von der Konsole) erhalten die Antwort "This command is only available to plugin administrators in-game." Als Admin gilt ein Spieler, der op ist oder betterfood.admin bzw. betterfood.* besitzt. Admins werden kurz nach dem Beitreten außerdem auf ungelesene Versionshinweise hingewiesen, sofern sie nicht /betterfoodchangelog disable ausgeführt haben. Der Gelesen-/Verworfen-Status wird pro Spieler in plugins/BetterFood/nightbreak-changelogs.yml gespeichert.

Siehe Nightbreak-Tokens, Nightbreak-Einrichtung und Changelog-Benachrichtigungen für den gemeinsamen Ablauf.

Berechtigungen​

  • betterfood.user (Standard true) — steuert den Auto-Eat-Listener und die Spieler-Umschalter.
  • betterfood.admin (Standard op) — steuert das Herunterladen und Anwenden von Plugin-Updates, das Einrichtungsmenü und die Befehle für empfohlene Plugins. Sie gilt außerdem als Admin-Berechtigung für den Changelog-Befehl.
  • nightbreak.plugins, nightbreak.login und logify.* (alle Standard op) — werden von den mitgelieferten MagmaCore-Werkzeugen für die oben genannten gemeinsamen Befehle registriert und sind nicht in der plugin.yml von BetterFood deklariert.

Weitere Integrationen​

  • bStats-Metriken sind aktiviert (Plugin-ID 4557) – über die bStats-Konfiguration global deaktivierbar, falls du dich abmelden möchtest.
  • BetterFood liefert jetzt die gemeinsam genutzten MagmaCore-Werkzeuge mit. Es erzeugt eine config.yml mit zwei Schlüsseln, dem Umschalter nightbreak.autoDownloadPluginUpdates (Standard false) und nightbreak.applyPluginUpdatesWithoutRestart (Standard never, siehe Plugin-Updates ohne Neustart), und prüft wenige Minuten nach dem Start nightbreak.io auf eine neuere Version (die Verzögerung ist pro Plugin versetzt, damit nicht mehrere MagmaGuy-Plugins gleichzeitig anfragen), danach etwa einmal pro Stunde. Ergebnisse werden nur protokolliert, wenn sie sich ändern, damit die Konsole nicht stündlich erneut zugespammt wird. BetterFood übergibt keine SpigotMC-Ressourcen-ID, und der zugehörige Katalogeintrag hat ebenfalls keine, daher gibt es keinen SpigotMC-Versions-Fallback.
  • Operatoren, die beitreten, während ein Update aussteht, erhalten wenige Sekunden nach dem Anmelden eine Chat-Nachricht mit dem Link zur Downloadseite. Sie wird bei jedem Beitritt gesendet, solange die installierte Version veraltet ist.
  • Der Konto-Token liegt außerhalb des Plugin-Ordners in der gemeinsamen Datei plugins/MagmaCore/nightbreak.yml, sodass eine einmalige Verknüpfung für jedes MagmaGuy-Plugin auf dem Server gilt.
  • Keine externen Plugin-Abhängigkeiten; die Nahrungslogik hört ausschließlich auf das Vanilla-FoodLevelChangeEvent.

Plugin-Updates ohne Neustart​

Ein heruntergeladenes Plugin-Update wartet im Update-Ordner des Servers. /betterfood applypluginupdate spielt es ein, ohne den Server neu zu starten: BetterFood wird deaktiviert, die Jar wird ersetzt und die neue Version wird geladen und aktiviert. Die Einstellungen der Spieler für automatisches Essen und Nachrichten werden bei den Spielern selbst gespeichert und bleiben daher erhalten.

Der Befehl bricht mit einer Meldung ab, wenn kein heruntergeladenes Update wartet, wenn das wartende Update nicht neuer als die laufende Version oder seine Jar ungültig ist, wenn ein Plugin eines anderen Autors von BetterFood abhängt oder es als Soft-Dependency nutzt, oder wenn bereits ein anderer Plugin-Austausch läuft. Lässt sich die neue Version nicht aktivieren, wird die vorherige Jar wieder geladen und das Update bleibt für den nächsten Neustart im Update-Ordner.

nightbreak.applyPluginUpdatesWithoutRestart in der config.yml legt fest, was direkt nach jedem Download eines Plugin-Updates passiert, egal ob er über downloadpluginupdate, downloadall, das Einrichtungsmenü oder einen automatischen Download kam:

WertVerhalten
neverStandard. Das Update wartet auf den nächsten Neustart. Online-Admins mit betterfood.admin oder betterfood.* erfahren, dass ein Neustart nötig ist, und bekommen den Befehl applypluginupdate angezeigt
when-emptyWendet das Update sofort an, wenn keine Spieler online sind; andernfalls wird alle 30 Sekunden geprüft und das Update angewendet, sobald der Server leer ist
immediatelyWendet das Update an, sobald der Download abgeschlossen ist

Jeder andere Wert verhält sich wie never.

Aus dem Quellcode bauen​

BetterFood wird mit JDK 21 und dem mitgelieferten Gradle-Wrapper gebaut. Führe im Stammverzeichnis des Repositorys Folgendes aus:

./gradlew shadowJar

Unter Windows führst du .\gradlew.bat shadowJar aus. Die Plugin-JAR wird nach build/libs/BetterFood.jar geschrieben. Ist die Umgebungsvariable MC_DIST_DIR oder die Gradle-Property mcDistDir gesetzt, kopiert der Build die JAR zusätzlich in diesen Ordner. Die Testsuite läuft auf einer Java-25-Toolchain, daher braucht auch ./gradlew build JDK 25.

MagmaCore ist in die JAR eingebunden (Shading) und wird zuerst aus Maven Local und danach aus dem Maven-Repository von MagmaGuy aufgelöst. Braucht der Quellcode MagmaCore-Änderungen, die neuer sind als der veröffentlichte Build, veröffentliche MagmaCore zuerst in Maven Local, wie unter Verbraucher nach Bibliotheksänderungen bauen beschrieben.

Die Seite zur Java-Plugin-API behandelt das Maven-Artefakt und worauf sich eine Integration verlassen kann.