Saltar para o conteúdo principal

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:

  1. 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.
  2. 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:

AlimentoFome recuperadaSaturação recuperada
Maçã42.4
Batata assada56.0
Beterraba11.2
Sopa de beterraba67.2
Pão56.0
Cenoura33.6
Carne assada812.8
Frango assado67.2
Bacalhau assado56.0
Carneiro assado69.6
Costeleta de porco assada812.8
Coelho assado56.0
Salmão assado69.6
Biscoito20.4
Alga seca10.6
Bagas luminosas20.4
Cenoura dourada614.4
Fatia de melancia21.2
Ensopado de cogumelos67.2
Batata10.6
Tarte de abóbora84.8
Ensopado de coelho1012.0
Bagas doces20.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.