Aller au contenu principal

Comportement de BetterFood

BetterFood choisit les aliments en fonction du niveau de faim, au lieu de manger systématiquement le plus nutritif en premier.

Déclenchement​

BetterFood réagit à l'événement vanilla FoodLevelChangeEvent avec la priorité HIGHEST et ignore les événements déjà annulés au moment où son écouteur s'exécute. Il lit la valeur de faim laissée par les écouteurs exécutés auparavant. Cela ne garantit aucun ordre par rapport à un autre écouteur de même priorité. Il intervient uniquement lorsque la faim du joueur diminue. Le joueur doit posséder la permission betterfood.user et ne pas avoir désactivé l'alimentation automatique avec /betterfood toggleEating.

Règles de sélection​

Pour choisir l'aliment à consommer, le plugin parcourt une seule fois les aliments pris en charge :

  1. Les aliments sont conservés dans un tableau trié par quantité de faim restaurée décroissante. À égalité, ils sont départagés par saturation restaurée décroissante, puis par nom de matériau croissant. Une table précalculée donne l'indice de départ pour chaque niveau de faim.
  2. À partir de cet indice, le plugin descend vers les aliments moins nourrissants et choisit le premier aliment que le joueur possède réellement et qui n'est pas personnalisé. Si le joueur possède plusieurs piles du même aliment, celle dont l'emplacement a l'indice le plus bas est utilisée. Dès qu'un aliment convient, il est consommé et la recherche s'arrête.

Le premier aliment admissible peut restaurer davantage de faim qu'il n'en manque. Par exemple, avec une faim de 11, le ragoût de lapin, qui restaure 10 points, peut être choisi avant le bœuf cuit, qui en restaure 8, alors qu'il ne manque que 9 points. Aucune seconde passe ne cherche à limiter ce gaspillage.

Après la consommation, la faim est plafonnée à 20 et la saturation au niveau de faim obtenu, conformément aux limites vanilla.

Aliments servis dans un bol​

La soupe de betteraves, la soupe de champignons et le ragoût de lapin rendent un bol vide lorsqu'ils sont consommés automatiquement, comme en vanilla :

  • si la pile consommée est épuisée, le bol la remplace au même emplacement
  • sinon, le bol est ajouté à l'inventaire, ou lâché aux pieds du joueur s'il n'y a pas de place

Objets protégés​

BetterFood compare chaque aliment candidat à un objet vanilla neuf du même matériau avec la méthode Bukkit ItemStack.isSimilar. La taille de la pile n'entre pas dans la comparaison. Les objets dont les données diffèrent sont ignorés, notamment ceux qui possèdent :

  • un nom d'affichage personnalisé
  • une description (lore)
  • des enchantements, des données de modèle personnalisé ou d'autres composants d'objet
  • des données persistantes écrites par d'autres plugins

La vérification compare l'objet entier à une pile vanilla nouvellement créée, au lieu de consulter une liste de champs maintenue manuellement. Les objets contenant des données ajoutées par de futures versions de Minecraft sont donc eux aussi ignorés automatiquement. Cette protection vise à réduire le risque de consommer par erreur un objet de plugin ou de décoration.

Aliments pris en charge​

BetterFood consomme automatiquement les aliments suivants :

AlimentFaim restauréeSaturation restaurée
Pomme42.4
Pomme de terre cuite56.0
Betterave11.2
Soupe de betteraves67.2
Pain56.0
Carotte33.6
Bœuf cuit812.8
Poulet cuit67.2
Morue cuite56.0
Mouton cuit69.6
Côtelette de porc cuite812.8
Lapin cuit56.0
Saumon cuit69.6
Cookie20.4
Algue séchée10.6
Baies lumineuses20.4
Carotte dorée614.4
Tranche de pastèque21.2
Soupe de champignons67.2
Pomme de terre10.6
Tarte à la citrouille84.8
Ragoût de lapin1012.0
Baies sucrées20.4

Aliments exclus​

Les objets comestibles suivants sont volontairement exclus de l'alimentation automatique. Il s'agit de viandes crues, d'objets spéciaux ou d'aliments aux effets négatifs ou imprévisibles :

  • Bœuf cru
  • Poulet cru
  • Fruit du chorus
  • Morue crue
  • Pomme dorée enchantée
  • Pomme dorée
  • Fiole de miel
  • Mouton cru
  • Pomme de terre empoisonnée
  • Côtelette de porc crue
  • Poisson-globe
  • Lapin cru
  • Chair putréfiée
  • Saumon cru
  • Œil d'araignée
  • Soupe suspecte
  • Poisson tropical

Tout autre matériau comestible ajouté dans une version plus récente de Minecraft, mais absent de la liste des aliments pris en charge ci-dessus, est également ignoré jusqu'à son ajout explicite à cette liste.

Au démarrage, BetterFood vérifie tous les objets comestibles connus de votre version du serveur et écrit une seule ligne dans la console pour énumérer ceux qu'il ne consomme volontairement pas automatiquement : BetterFood is intentionally not auto-eating these food items: .... Vous pouvez ainsi voir immédiatement quels objets sont ignorés sur votre version. Cette ligne n'apparaît que s'il existe au moins un objet ignoré ; son absence signifie donc que la liste prend déjà en charge tous les objets comestibles de cette version.

Dépannage​

Si la nourriture d'un joueur n'est pas consommée, vérifiez dans cet ordre :

  • le joueur possède betterfood.user et n'a pas désactivé la consommation avec /betterfood toggleEating
  • l'aliment figure dans la liste des aliments pris en charge
  • la pile est de la nourriture vanilla standard, sans nom personnalisé, lore, enchantement ni donnée de plugin (voir Objets protégés)
  • la faim diminue réellement. BetterFood n'est pas un minuteur et ne consomme que lorsque la barre de faim baisse.
  • aucun autre plugin n'annule le changement de faim. BetterFood ignore les FoodLevelChangeEvent déjà annulés.

Lorsque vous demandez de l'aide, indiquez les versions de BetterFood et du serveur, le type d'aliment, si la pile est de la nourriture vanilla standard, et les étapes qui reproduisent le problème.