Comportamento do BetterFood
O BetterFood escolhe os alimentos tendo em conta a fome, em vez de consumir sempre primeiro o item mais nutritivo.
Quando atua
O BetterFood reage ao evento vanilla FoodLevelChangeEvent na prioridade HIGHEST e ignora eventos que já estejam cancelados quando o seu listener é executado. Lê o valor de fome deixado pelos listeners anteriores. Isto não garante a ordem de execução relativamente a outro listener com a mesma prioridade. Só atua quando a fome do jogador está a diminuir. O jogador tem de ter a permissão betterfood.user e não pode ter desativado a alimentação automática com /betterfood toggleEating.
Regras de seleção
Para escolher o que consumir, o plugin percorre uma única vez os alimentos compatíveis:
- Os alimentos estão num array ordenado pela fome recuperada, por ordem decrescente. Em caso de empate, usa a saturação recuperada, também por ordem decrescente, e depois o nome do material, por ordem crescente. Uma tabela pré-calculada escolhe o índice inicial para cada nível de fome.
- A partir desse índice, o plugin percorre o array na direção dos alimentos menos nutritivos e escolhe o primeiro que o jogador tenha e que não seja personalizado. Se houver várias pilhas desse alimento, usa a que ocupa a posição de menor índice no inventário. Assim que encontra uma correspondência, consome o alimento e termina a procura.
O primeiro alimento elegível pode recuperar mais fome do que a que falta. Por exemplo, com fome 11, pode escolher ensopado de coelho, que recupera 10 pontos, antes de carne assada, que recupera 8, apesar de faltarem apenas 9 pontos. Não existe uma segunda passagem para minimizar o desperdício.
Depois do consumo, a fome fica limitada a 20 e a saturação ao valor de fome resultante, respeitando os limites vanilla.
Alimentos em tigela
A sopa de beterraba, o ensopado de cogumelos e o ensopado de coelho devolvem uma tigela vazia quando são consumidos automaticamente, tal como no vanilla:
- se a pilha consumida acabar, a tigela substitui-a na mesma posição
- caso contrário, a tigela é acrescentada ao inventário ou largada aos pés do jogador se não houver espaço
Itens protegidos
O BetterFood compara cada candidato com um item vanilla recém-criado do mesmo material através de ItemStack.isSimilar do Bukkit. A quantidade da pilha não entra na comparação. Itens com dados diferentes são ignorados, incluindo:
- um nome de apresentação personalizado
- lore
- encantamentos, dados de modelo personalizado e outros componentes de item
- dados persistentes escritos por outros plugins
A verificação compara o item inteiro com uma pilha vanilla recém-criada, em vez de usar uma lista de campos mantida manualmente. Assim, dados de item acrescentados por futuras versões do Minecraft também fazem com que o item seja ignorado. O objetivo é reduzir o risco de consumir por engano itens de plugins ou itens decorativos.
Alimentos compatíveis
O BetterFood consome automaticamente os seguintes alimentos:
| Alimento | Fome recuperada | Saturação recuperada |
|---|---|---|
| Maçã | 4 | 2.4 |
| Batata assada | 5 | 6.0 |
| Beterraba | 1 | 1.2 |
| Sopa de beterraba | 6 | 7.2 |
| Pão | 5 | 6.0 |
| Cenoura | 3 | 3.6 |
| Carne assada | 8 | 12.8 |
| Frango assado | 6 | 7.2 |
| Bacalhau assado | 5 | 6.0 |
| Carneiro assado | 6 | 9.6 |
| Costeleta de porco assada | 8 | 12.8 |
| Coelho assado | 5 | 6.0 |
| Salmão assado | 6 | 9.6 |
| Biscoito | 2 | 0.4 |
| Alga seca | 1 | 0.6 |
| Bagas luminosas | 2 | 0.4 |
| Cenoura dourada | 6 | 14.4 |
| Fatia de melancia | 2 | 1.2 |
| Ensopado de cogumelos | 6 | 7.2 |
| Batata | 1 | 0.6 |
| Tarte de abóbora | 8 | 4.8 |
| Ensopado de coelho | 10 | 12.0 |
| Bagas doces | 2 | 0.4 |
Alimentos excluídos
Os seguintes itens comestíveis estão deliberadamente excluídos da alimentação automática. São carnes cruas, itens especiais ou alimentos com efeitos negativos ou imprevisíveis:
- Carne de vaca crua
- Frango cru
- Fruta do coro
- Bacalhau cru
- Maçã dourada encantada
- Maçã dourada
- Garrafa de mel
- Carneiro cru
- Batata venenosa
- Costeleta de porco crua
- Peixe-balão
- Coelho cru
- Carne podre
- Salmão cru
- Olho de aranha
- Ensopado suspeito
- Peixe tropical
Qualquer outro material comestível acrescentado por versões mais recentes do Minecraft que não conste da lista acima também é ignorado até ser explicitamente incluído.
No arranque, o BetterFood verifica todos os itens comestíveis conhecidos pela versão do servidor e escreve uma única linha na consola com aqueles que não consome automaticamente: BetterFood is intentionally not auto-eating these food items: .... Isto permite consultar rapidamente quais os itens ignorados nessa versão. A linha só aparece se existir pelo menos um item ignorado. Se não aparecer, a lista de alimentos compatíveis já abrange todos os itens comestíveis dessa versão.