Предметы еды 26.1.2
Узнайте, как добавить FoodComponent к предмету, чтобы сделать его съедобным, и как его настроить.
Еда — это ключевой аспект выживания в Minecraft, поэтому при создании съедобных предметов вам следует учитывать их использование с другими съедобными предметами.
Если вы не создаете мод с очень мощными предметами, вам следует учесть:
- Насколько сильное чувство голода добавляет или убирает ваш съедобный продукт.
- Какой эффект(ы) зелья оно дает?
- Доступно ли оно на ранней или конечной стадии игры?
Добавляем компонент еды
Чтобы добавить компонент к элементу, мы можем передать его экземпляру Item.Properties:
java
new Item.Properties().food(new FoodProperties.Builder().build())1
На данный момент это просто делает продукт съедобным и ничего более.
Класс FoodProperties.Builder имеет несколько методов, которые позволяют вам изменить то, что происходит, когда игрок съедает ваш предмет:
| Метод | Описание |
|---|---|
nutrition | Устанавливает количество очков голода, которое восполнит ваш предмет. |
saturationModifier | Устанавливает количество точек насыщенности, которые добавит ваш элемент. |
alwaysEdible | Позволяет съесть ваш предмет независимо от уровня голода. |
После того как вы настроили конструктор по своему усмотрению, вы можете вызвать метод build(), чтобы получить объект FoodProperties.
Если вы хотите применить к игроку эффекты мобов, (статусные эффекты) когда он съедает вашу еду, вам нужно добавить компонент Consumable наряду с компонентом FoodProperties, как показано в следующем примере:
java
public static final Consumable POISON_FOOD_CONSUMABLE_COMPONENT = Consumables.defaultFood()
// The duration is in ticks, 20 ticks = 1 second
.onConsume(new ApplyStatusEffectsConsumeEffect(new MobEffectInstance(MobEffects.POISON, 6 * 20, 1), 1.0f))
.build();
public static final FoodProperties POISON_FOOD_COMPONENT = new FoodProperties.Builder()
.alwaysEdible()
.build();1
2
3
4
5
6
7
2
3
4
5
6
7
Подобно примеру на странице Создание вашего первого элемента, я буду использовать указанный выше компонент:
java
public static final Item POISONOUS_APPLE = register(
"poisonous_apple",
Item::new,
new Item.Properties().food(POISON_FOOD_COMPONENT, POISON_FOOD_CONSUMABLE_COMPONENT)
);1
2
3
4
5
2
3
4
5
Это делает предмет:
- Всегда съедобным, может быть съеден независимо от уровня голода.
- Всегда дающим Отравление II на 6 секунд когда съеден.

