[1.15.2] Добавляем своего моба

Привет! Думал подождать выхода forge для 1.16, но как-то скучно стало вечером и я решил улучшить… корову. А вообще из этого вполне можно сделать урок по созданию моба. Так я подумал, вот, делаю :D. Но чтобы не грузить в этот раз лишним – будем использовать код сущности без всего лишнего и со стандартной моделью. Впрочем, финальный результат тоже уже готов.

Рекомендую пройти предыдущие уроки для большего понимания.

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

Финальный результат: Моя корова уже имеет свою, отличную от оригинальной модель (хотя можно было просто редактировать старую, но я хотел попробовать сам). Сама суть новой коровы – исправление логической ошибки оригинальной. Я считаю, что странно это, доить корову бесконечно и без пауз. А потому мою можно доить только когда молоко «готово». После этого ей нужна еда и время. Ест она сама, траву и блоки с травой (взят код и анимация овцы), а также добавлен таймер готовности молока (как с яйцами у кур, но тут только с момента сытости).

Также корова сохраняет состояние голода и готовности молока при выходе из игры, что логично.

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

JAVA-часть

В первую очередь нам нужно создать класс сущности. Как обычно, я стараюсь соответствовать оригинальной игре в именах файлов и папок. У меня класс получает почетное имя: GSCowEntity.

По сути дела, тут мы имеем копию обычной коровы. Но! Мы же будем потом её улучшать, так что всё ок.

Думаю, что из названий вполне очевидно, что за что отвечает. Тут у нас указаны звуки (шагов, смерти), громкость, высота глаз коровы и детёныша, атрибуты, отвечающие за скорость и здоровье, а также goals, т.е. цели, которые и создают своего рода модель поведения.

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

Так как в приоритетах указаны они последовательно, то даже паникуя она не утонет, т.к. сначала проверит необходимость плыть, а только потом уже начнёт панику.

Теперь нужно зарегистрировать сущность. Как вы могли заметить в структурах, блоках или предметах – регистрация аналогична. Это же работает и тут.

Ну, может немного сложнее, но всё так же нужно указывать класс, имя, ресурсы. Также тут мы указываем тип и размеры сущности. В остальном вроде ничего нового.

Регистрируем ModEntityTypes:

Рендер моба в мире

И переходим к интересной части. Дело в том, что в отличие от блоков или предметов, сущностям нужно создать ещё и класс, который будет отвечать за рендер модели, а ещё тут мы укажем текстуру. Её можно прописать прямо, как это я сделал, а можно добавить немного логики или вариативности, как у жителей, лошадей, кроликов и т.д. Ну, вы поняли. Этим займёмся позже.

Как видите, вот путь к моей текстуре, а также указана модель обычной коровы из игры.

И теперь нам нужно связать сущность с её классом рендера, а также давайте добавим новую корову во все биомы. Для этого создадим ещё один файл ClientEventBusSubscriber:

Где 3 и 8 это минимальное и максимальное количество сущностей при спавне.

50 – вес, если судить по имени в коде. На деле же это значение влияет на частоту появления. Куры, Эндермены и Свиньи имеют вес 10, а позже и я такой укажу. Зомби, скелеты и пауки имеют вес 100. Если переводить в проценты, то монстры с весом равным 100 будут иметь шанс на появление 19%, а с шансом 1 – всего 0.2%. Животные с весом 20 будут иметь шанс на появление 33%, а для 10 это значение равно 20%.

Т.е. уяснили, что вес – это шанс спавна. Чем больше это значение – тем больше будет в мире ваших мобов. Но при этом один и тот же вес для разных типов существ (животные, монстры и т.д.) будет давать разный шанс спавна.

Ну, вроде с этим всё…Теперь текстура. Т.к. у нас модель обычной коровы, то и текстуру нужно брать соответствующую. В следующий раз мы будем делать модель с другой текстурой, так что пока можно просто немного перекрасить существующую.

«Новая корова»

Вот вам скрин с двумя коровами, у которых абсолютно одинаковый функционал, но при этом левая уже наша собственная. Классно же!

Красота!

На это вроде всё, мобов оказалось добавлять куда проще, чем я это помнил. Дальше интереснее, ведь впереди нас ждёт модель для моба, а так же целый список изменений в логике нашей, улучшенной коровы. Так что далеко не уходите :D.

Исходный код!

6 thoughts on “[1.15.2] Добавляем своего моба

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