Comportamiento de BetterFood
BetterFood selecciona los alimentos según el hambre del jugador, en vez de comer siempre el más nutritivo primero.
Cuándo se activa
BetterFood responde al FoodLevelChangeEvent de vanilla con prioridad HIGHEST e ignora los eventos que ya están cancelados cuando se ejecuta su listener. Lee el valor de hambre que hayan dejado los listeners anteriores. Esto no garantiza el orden respecto a otro listener con la misma prioridad. Solo actúa cuando disminuye el nivel de hambre del jugador. El jugador debe tener el permiso betterfood.user y no haber desactivado la alimentación automática con /betterfood toggleEating.
Reglas de selección
Para decidir qué comer, el plugin recorre una sola vez sus alimentos compatibles:
- Los alimentos compatibles se guardan en un array ordenado por hambre restaurada, de mayor a menor. En caso de empate, se usa la saturación restaurada, también de mayor a menor, y después el nombre del material, en orden ascendente. Una tabla precalculada selecciona el índice inicial para cada nivel de hambre.
- Desde ese índice, el plugin recorre el array hacia los alimentos menos nutritivos y toma el primer alimento que el jugador lleve y que no sea un objeto personalizado. Si el jugador lleva varias pilas del mismo alimento, se usa la que ocupa la ranura de menor índice del inventario. En cuanto encuentra uno, lo consume y termina la búsqueda.
El primer alimento válido puede restaurar más hambre de la que falta. Por ejemplo, con un nivel de hambre de 11, puede elegir estofado de conejo, que restaura 10, antes que filete, que restaura 8, aunque solo falten 9 puntos. No hay una segunda pasada para reducir el exceso de restauración.
Tras comer, el hambre se limita a 20 y la saturación al nivel de hambre resultante, como en vanilla.
Alimentos con cuenco
La sopa de remolacha, el estofado de champiñones y el estofado de conejo devuelven un cuenco vacío al consumirse automáticamente, como en vanilla:
- si se agota la pila consumida, el cuenco la sustituye en la misma ranura
- en caso contrario, se añade el cuenco al inventario y, si no hay espacio, se deja caer a los pies del jugador
Objetos protegidos
BetterFood compara cada candidato con un objeto vanilla recién creado del mismo material mediante ItemStack.isSimilar de Bukkit. No tiene en cuenta el tamaño de la pila. Omite los objetos cuyos datos difieran, incluidos:
- un nombre visible personalizado
- lore
- encantamientos, datos de modelo personalizado y otros componentes de objeto
- datos persistentes escritos por otros plugins
La comprobación compara el objeto completo con una pila vanilla recién creada, en lugar de usar una lista de campos mantenida a mano. Así, los datos de objeto que añadan futuras versiones de Minecraft también hacen que se omita el objeto automáticamente. Esto busca reducir el riesgo de consumir por error objetos de plugins o decorativos.
Alimentos compatibles
BetterFood consume automáticamente los siguientes alimentos:
| Alimento | Hambre restaurada | Saturación restaurada |
|---|---|---|
| Manzana | 4 | 2.4 |
| Patata asada | 5 | 6.0 |
| Remolacha | 1 | 1.2 |
| Sopa de remolacha | 6 | 7.2 |
| Pan | 5 | 6.0 |
| Zanahoria | 3 | 3.6 |
| Filete | 8 | 12.8 |
| Pollo cocinado | 6 | 7.2 |
| Bacalao cocinado | 5 | 6.0 |
| Cordero cocinado | 6 | 9.6 |
| Chuleta de cerdo cocinada | 8 | 12.8 |
| Conejo cocinado | 5 | 6.0 |
| Salmón cocinado | 6 | 9.6 |
| Galleta | 2 | 0.4 |
| Alga seca | 1 | 0.6 |
| Bayas luminosas | 2 | 0.4 |
| Zanahoria dorada | 6 | 14.4 |
| Rodaja de sandía | 2 | 1.2 |
| Estofado de champiñones | 6 | 7.2 |
| Patata | 1 | 0.6 |
| Pastel de calabaza | 8 | 4.8 |
| Estofado de conejo | 10 | 12.0 |
| Bayas dulces | 2 | 0.4 |
Alimentos excluidos
Los siguientes objetos comestibles se excluyen de la alimentación automática de forma intencionada. Son carnes crudas, objetos especiales o alimentos con efectos negativos o impredecibles:
- Carne de vaca cruda
- Pollo crudo
- Fruta chorus
- Bacalao crudo
- Manzana dorada encantada
- Manzana dorada
- Frasco con miel
- Cordero crudo
- Patata venenosa
- Chuleta de cerdo cruda
- Pez globo
- Conejo crudo
- Carne podrida
- Salmón crudo
- Ojo de araña
- Estofado sospechoso
- Pez tropical
Cualquier otro material comestible que añadan versiones posteriores de Minecraft y que no figure en la lista de alimentos compatibles también se omitirá hasta que se añada expresamente a esa lista.
Al arrancar, BetterFood comprueba todos los objetos comestibles que reconoce tu versión del servidor y escribe una sola línea en la consola con los que ha decidido no consumir automáticamente (BetterFood is intentionally not auto-eating these food items: ...). Así puedes ver exactamente qué objetos omite en tu versión del servidor. La línea solo aparece si hay al menos un objeto omitido; si no aparece, la lista de alimentos compatibles ya cubre todos los objetos comestibles de esa versión.
Solución de problemas
Si no se está comiendo la comida de un jugador, comprueba esto en orden:
- el jugador tiene
betterfood.usery no ha desactivado la alimentación con/betterfood toggleEating - la comida está en la lista de alimentos compatibles
- la pila es comida vanilla normal, sin nombre personalizado, lore, encantamientos ni datos de plugins (consulta Objetos protegidos)
- el hambre realmente está bajando. BetterFood no es un temporizador y solo come cuando baja la barra de hambre.
- ningún otro plugin cancela el cambio de hambre. BetterFood ignora los
FoodLevelChangeEventque ya están cancelados.
Cuando pidas ayuda, incluye las versiones de BetterFood y del servidor, el tipo de comida, si la pila es comida vanilla normal y los pasos que reproducen el problema.