Поведение BetterFood
BetterFood использует выбор еды с учётом голода вместо простого поедания самого питательного предмета в первую очередь.
Когда срабатывает
BetterFood реагирует на ванильное событие FoodLevelChangeEvent с наивысшим приоритетом и только тогда, когда уровень голода игрока падает. У игрока должно быть разрешение betterfood.user, и он не должен был отключить автоматическое поедание через /betterfood toggleEating.
Правила выбора
Когда плагин решает, что съесть, он работает в два прохода:
- Идеальный кандидат — сначала он подбирает единственную лучшую еду для недостающего голода:
- Предпочитает еду с наибольшим значением голода, которое всё ещё укладывается в недостающий голод (насыщение используется при равенстве).
- Если ничего не подходит точно, выбирает еду с наименьшим избытком (насыщение используется при равенстве).
- Поиск в инвентаре — затем он сканирует хранилище инвентаря игрока в поисках этой идеальной еды. Если у игрока её фактически нет, плагин обходит весь инвентарь и применяет то же сравнение по точному соответствию/избытку к каждой поддерживаемой еде, которой владеет игрок, после чего выбирает наилучшую из доступных.
Цель — не тратить впустую сильную еду на небольшой пробел в голоде, когда подойдёт более слабый предмет.
После поедания восстановленный голод ограничивается значением 20, а насыщение ограничивается итоговым значением голода, что соответствует ванильным правилам.
Защищённые предметы
Текущий код защищает гораздо больше, чем просто переименованную еду или еду с описанием. BetterFood избегает автоматического употребления еды, если она имеет характеристики пользовательского предмета, такие как:
- пользовательское имя или имя предмета
- описание (lore)
- пользовательские данные модели (custom model data)
- зачарования
- модификаторы атрибутов
- неразрушимое состояние
- теги контейнера постоянных данных
Это предназначено для снижения вероятности случайного употребления предметов плагинов или декоративных предметов.
Поддерживаемая еда
BetterFood будет автоматически употреблять следующую еду:
| Еда | Восстановление голода | Восстановление насыщения |
|---|---|---|
| Яблоко | 4 | 2.4 |
| Печёный картофель | 5 | 6.0 |
| Свёкла | 1 | 1.2 |
| Свекольный суп | 6 | 7.2 |
| Хлеб | 5 | 6.0 |
| Морковь | 3 | 3.6 |
| Жареная говядина | 8 | 12.8 |
| Жареная курятина | 6 | 7.2 |
| Жареная треска | 5 | 6.0 |
| Жареная баранина | 6 | 9.6 |
| Жареная свинина | 8 | 12.8 |
| Жареная крольчатина | 5 | 6.0 |
| Жареный лосось | 6 | 9.6 |
| Печенье | 2 | 0.4 |
| Сушёные водоросли | 1 | 0.6 |
| Светящиеся ягоды | 2 | 0.4 |
| Золотая морковь | 6 | 14.4 |
| Ломтик арбуза | 2 | 1.2 |
| Тушёные грибы | 6 | 7.2 |
| Картофель | 1 | 0.6 |
| Тыквенный пирог | 8 | 4.8 |
| Тушёный кролик | 10 | 12.0 |
| Сладкие ягоды | 2 | 0.4 |
Исключённая еда
Следующие съедобные предметы намеренно исключены из автоматического поедания. Это сырое мясо, особые предметы или еда с отрицательными или непредсказуемыми эффектами:
- Говядина (сырая)
- Торт
- Курятина (сырая)
- Плод хоруса
- Треска (сырая)
- Зачарованное золотое яблоко
- Золотое яблоко
- Бутылочка мёда
- Баранина (сырая)
- Ядовитый картофель
- Свинина (сырая)
- Иглобрюх
- Крольчатина (сырая)
- Гнилая плоть
- Лосось (сырой)
- Паучий глаз
- Подозрительное рагу
- Тропическая рыба
Любые другие съедобные материалы, добавленные в новых версиях Minecraft, которые ещё не были классифицированы, также будут пропущены. Плагин выводит предупреждение при запуске, если обнаруживает неклассифицированные съедобные материалы.
Остатки контейнера
Если употреблённая еда оставляет остаточный предмет, BetterFood сохраняет его.
Примеры включают миски или другую еду, возвращающую контейнеры. Остаток возвращается в инвентарь или выбрасывается рядом с игроком, если в инвентаре нет места.