Добавляем еду, еду с эффектами и корм

Всем привет! Продолжаю переработку своих гайдов и сегодня сделаем еще пару предметов. Это будет две сосиски. Обе можно будет съесть, так же они будут пригодны для лечения волков, а золотая версия будет еще и различные эффекты выдавать. В этот раз я так же начну с пустого мода, но не буду подробно разбирать моменты, который уже были в прошлый раз.

Список уроков

Для полного понимания происходящего рекомендую сначала пройти урок о предметах:

Немного о еде

С момента введения голода в игру – еда получила особое место для выживания. От состояния голода зависит регенерация, возможность бегать, а также критический голод приведёт к потере здоровья.

Помимо видимого голода у нас есть еще и насыщение. Этот параметр определяет, как скоро мы снова захотим есть. В дорогих блюдах насыщение должно быть на уровне!

Так же еда может иметь свои особенности. К примеру, Золотое яблоко даст регенерацию, поглощение и что-то там ещё. И его можно есть даже когда наш персонаж не голоден, в отличии от той же баранины. Курица и мясо зомби могут дать голод, а подозрительные супы и вовсе целый рад эффектов, в зависимости от ингредиентов крафта. Уникальное применение так же имеет ведро молока. Оно снимает любые активные эффекты с игрока. А ещё некоторые виды еды пригодны для лечения питомцев!

И хотя да, можно сказать, что игра и так имеет достаточно широкий выбор пищи. Но лично мне иногда не хватает разнообразия, сложных рецептов еды и т.д. Салатиков там, борща… Лишь уточню, что стоит учитывать баланс. Ведь никто не будет делать ваш офигенный и сложный суп, если приготовленная курочка окажется лучше.

JAVA часть — подготовка

Аналогично обычному предмету нам нужно создать несколько файлов (желательно в папке item). Первый будет хранить статические переменные с нашими предметами (ModItems.java). Сразу же создадим пару обычных предметов как в прошлом уроке. Пока по функционалу они не круче палки, но скоро мы это изменим.

Так же ModItemGroups.java, для своих вкладок.

И, конечно же, сам ModItemGroup.java, класс для реализации вкладок.

Не забываем о моделях и текстурах. Для этого урока я нарисовал такое вот чудо:

Золотая сосиска
Просто сосиска

Еще добавьте Локализацию! Не обязательный шаг, но хуже не сделает)

Готово?

Отлично. У нас теперь есть своя вкладка и пара готовых к бою предметов!

Java часть – Делаем еду

Чтобы предмет стал едой нам нужно лишь передать в свойствах предмета параметры еды (там, где мы указываем вкладку).

Тут я использовал уже готовые свойства приготовленной говядины, но нам такое не катит и пора сделать свой класс с едой. Если хотите посмотреть на всю еду из игры, то ищите класс Foods.java (net.minecraft.item). Так что аналогично игровой создадим MyFoods.java:

Разберём что я тут натворил. Создание свойств для еды происходит при помощи паттерна строителя (builder).  Hunger – сколько голода будет восстановлено, saturation – насыщение, meat – делает предмет мясом, пригодным для лечения волков, setAlwaysEdible – позволяет есть еду даже когда нет голода, fastToEat – увеличивает скорость применения еды. Отдельное внимание уделим effect. Эта функция принимает два значения: объект EffectInstance и шанс получения. 1F – 100%. При создании EffectInstance мы указываем сам эффект (в файле Effects.java можете посмотреть все), его длительность и уровень эффекта.

Вроде всё понятно…должно быть…

Но, прежде чем бежать править предметы нам нужно разобрать ещё один момент. Эффект зачарования.

Для зачарованной сосиски нужно создать свой дочерний класс от Item:

Всё, что мы тут изменяем, так это значение функции hasEffect на true. Логично, что именно это действие и подарит предмету характерный блеск.

Чтобы применить все эти изменения, создавать зачарованную сосиску нужно теперь не от обычного Item, а от нашего. Итоговый результат вот:

Он явно заинтересован!

Получаем свего раненого волка:

Как я его ранил думайте сами 😀

И лечим его!

И никаких обид!

Теперь можно тестировать и голод

И вторую:

На этом у меня всё. Спасибо за внимание!

Ссылка на исходники

One thought on “Добавляем еду, еду с эффектами и корм

Добавить комментарий