Aller au contenu principal

Compatibilité de BetterFood

Versions ciblées​

Le dépôt actuel cible :

  • Version du plugin : 1.5.5
  • Bukkit api-version : 1.21.4
  • Version de l'API Spigot utilisée pour la compilation : 26.3-R0.1-SNAPSHOT
  • Java : 21

Commandes​

Le plugin utilise :

  • /betterfood
  • /bf

Les sous-commandes destinées aux joueurs permettent d'activer ou de désactiver :

  • l'alimentation automatique : toggleEating, ou simplement /betterfood sans argument
  • les notifications de consommation dans la barre d'action : toggleMessage

Les sous-commandes d'administration nécessitent betterfood.admin et donnent accès aux outils Nightbreak partagés :

  • setup — ouvre le menu de configuration en jeu
  • recommendedplugins — affiche les plugins qui complètent BetterFood. Celui-ci n'a actuellement aucune entrée dans le catalogue de recommandations partagé : le menu est donc vide et un message indique qu'il n'y a aucune recommandation supplémentaire pour le moment. La console reçoit la même information sous forme de texte.
  • downloadpluginupdate / downloadall — télécharge une mise à jour du plugin si elle est disponible
  • applypluginupdate applique une mise à jour du plugin déjà téléchargée sans redémarrer le serveur (voir Mises à jour du plugin sans redémarrage)
  • downloadallcontent — indique que BetterFood n'a aucun pack de contenu

La complétion par tabulation tient compte des permissions et du texte déjà saisi : toggleEating et toggleMessage ne sont proposés qu'aux expéditeurs possédant betterfood.user, tandis que downloadpluginupdate, applypluginupdate, downloadallcontent, setup et recommendedplugins nécessitent betterfood.admin. L'alias downloadall est accepté, mais volontairement absent des suggestions. Les deux réglages de joueur sont réservés au jeu : les sous-commandes explicites toggleEating et toggleMessage refusent les expéditeurs qui ne sont pas des joueurs avec le message « BetterFood settings can only be changed in-game. ». La commande /betterfood seule indique plutôt à la console la commande de mise à jour. Un joueur sans betterfood.user reçoit un message indiquant qu'il n'a pas la permission de modifier les réglages de BetterFood. Une sous-commande inconnue ou plusieurs arguments entraînent l'affichage de l'aide. Les administrateurs voient les réglages ainsi que les commandes de mise à jour, de configuration et de recommandations ; les autres voient uniquement les deux réglages. L'aide omet downloadallcontent, même si cette commande est acceptée et proposée dans la complétion pour les administrateurs.

Commandes MagmaCore partagées​

Les outils MagmaCore intégrés ajoutent les commandes suivantes au démarrage. Les commandes globales sont enregistrées au chargement uniquement si leur nom est disponible ; sur un serveur avec d'autres plugins de MagmaGuy, le premier enregistrement conserve chaque nom. La commande de notes de version de BetterFood est initialisée à l'activation du plugin :

  • /nightbreak plugins — permet de parcourir le catalogue de plugins dans un menu en jeu ou une liste textuelle depuis la console ; nécessite nightbreak.plugins, par défaut op. /nightbreak seul affiche uniquement l'aide.
  • /nightbreaklogin <token> et /nightbreaklogout — lient ou retirent le jeton du compte Nightbreak partagé ; nécessitent nightbreak.login, par défaut op
  • /logify — envoie le journal actuel du serveur sur mclo.gs ; nécessite logify.*, par défaut op
  • /betterfoodchangelog [dismiss|disable] — affiche les notes de version BetterFood non lues. Son nom étant propre au plugin, elle n'entre pas en conflit avec les autres. Si /betterfoodchangelog est malgré tout déjà enregistré, un nom de type betterfood:betterfoodchangelog est utilisé.

La commande de notes de version est réservée aux administrateurs en jeu. Elle répond aux utilisateurs sans permission d'administration et à la console : « This command is only available to plugin administrators in-game. ». Un joueur est considéré comme administrateur s'il est op ou possède betterfood.admin ou betterfood.*. Les administrateurs reçoivent également un rappel des notes non lues peu après leur connexion, sauf s'ils ont exécuté /betterfoodchangelog disable. L'état lu ou ignoré est enregistré pour chaque joueur dans plugins/BetterFood/nightbreak-changelogs.yml.

Consultez Jetons Nightbreak, Configuration de Nightbreak et Notifications de notes de version pour le fonctionnement commun.

Permissions​

  • betterfood.user (par défaut true) — autorise l'alimentation automatique et les réglages destinés aux joueurs.
  • betterfood.admin (par défaut op) — autorise le téléchargement et l'application des mises à jour du plugin, le menu de configuration et les recommandations de plugins. Elle donne aussi les droits d'administration pour la commande de notes de version.
  • nightbreak.plugins, nightbreak.login et logify.* (toutes par défaut op) — sont enregistrées par les outils MagmaCore intégrés pour les commandes partagées ci-dessus ; elles ne sont pas déclarées dans le plugin.yml de BetterFood.

Autres intégrations​

  • Les statistiques bStats sont activées, avec l'identifiant de plugin 4557. Vous pouvez les désactiver globalement dans la configuration de bStats.
  • BetterFood intègre désormais les outils MagmaCore partagés. Il génère un config.yml contenant deux clés : l'option nightbreak.autoDownloadPluginUpdates (par défaut false) et nightbreak.applyPluginUpdatesWithoutRestart (par défaut never, voir Mises à jour du plugin sans redémarrage). Il recherche une nouvelle version sur nightbreak.io quelques minutes après le démarrage, avec un délai différent par plugin pour éviter que plusieurs plugins de MagmaGuy ne fassent leurs requêtes simultanément, puis environ une fois par heure. Les résultats ne sont écrits dans les logs que lorsqu'ils changent, afin de ne pas répéter les mêmes messages toutes les heures. BetterFood ne fournit aucun identifiant de ressource SpigotMC et son entrée de catalogue n'en contient pas non plus ; aucune vérification de version de secours n'est donc effectuée sur SpigotMC.
  • Les opérateurs qui se connectent lorsqu'une mise à jour est disponible reçoivent, quelques secondes après leur connexion, un message contenant le lien de téléchargement. Il est envoyé à chaque connexion tant que la version installée est ancienne.
  • Le jeton du compte est conservé hors du dossier du plugin, dans le fichier partagé plugins/MagmaCore/nightbreak.yml. Une seule liaison suffit donc pour tous les plugins de MagmaGuy sur le serveur.
  • Aucune dépendance à un plugin externe n'est requise ; la logique d'alimentation écoute uniquement l'événement vanilla FoodLevelChangeEvent.

Mises à jour du plugin sans redémarrage​

Une mise à jour du plugin téléchargée attend dans le dossier de mise à jour du serveur. /betterfood applypluginupdate l'installe sans redémarrer le serveur : BetterFood est désactivé, son jar est remplacé, puis la nouvelle version est chargée et activée. Les réglages d'alimentation et de messages des joueurs sont enregistrés sur les joueurs eux-mêmes et sont donc conservés.

La commande refuse, avec un message, lorsqu'aucune mise à jour téléchargée n'est en attente, lorsque la mise à jour en attente n'est pas plus récente que la version en cours ou que son jar n'est pas valide, lorsqu'un plugin d'un autre auteur dépend de BetterFood (dépendance ou dépendance optionnelle), ou lorsqu'un autre remplacement de plugin est déjà en cours. Si la nouvelle version ne parvient pas à s'activer, l'ancien jar est rechargé et la mise à jour reste dans le dossier de mise à jour pour le prochain redémarrage.

nightbreak.applyPluginUpdatesWithoutRestart dans config.yml détermine ce qui se passe juste après le téléchargement d'une mise à jour du plugin, qu'elle provienne de downloadpluginupdate, de downloadall, du menu de configuration ou d'un téléchargement automatique :

ValeurComportement
neverPar défaut. La mise à jour attend le prochain redémarrage. Les administrateurs connectés possédant betterfood.admin ou betterfood.* sont informés qu'un redémarrage est nécessaire et voient la commande applypluginupdate
when-emptyApplique la mise à jour immédiatement si aucun joueur n'est connecté ; sinon, vérifie toutes les 30 secondes et l'applique dès que le serveur est vide
immediatelyApplique la mise à jour dès la fin du téléchargement

Toute autre valeur se comporte comme never.