Урок шестой. Добавляем вкладку

Наш мод будем большим и крутым? Несомненно. Многие крутые и большие моды имеют собственные разделы меню, а потому и мы сегодня добавим вкладку, свою вкладку.

Список уроков
Урок пятый. Текстура и модель для предмета!

Ранее вкладки в творческом режиме назывались CretiveTab, но сейчас переименованы в ItemGroup.

Очевидно, что они нам нужны для отображения наших предметов в творческом режиме.

Подготовка

В первую очередь создадим папку init (mod.astler.tutorial_mod_gs.init). Далее в этой папке нужно создать класс с именем «ModItemGroup«, который наследует класс ItemGroup (net.minecraft.item.ItemGroup).

Чтобы писать меньше кода и не писать кучу классов (как в ванильном майне). Мы будем использовать Supplier<ItemStack>.

Supplier это интерфейс, который не принимает никаких объектов, но создаёт объект. Подробнее читайте тут. Supplier — одна из ключевых возможностей функционального программирования.

Так же мы будем использовать лямбда выражения. Узнать их можно по оператору ->. Они так же представляют функциональный интерфейс и имеют такой синтаксис: параметр(ы) -> тело выражения

Почему же мы используем Supplier, а не получим предмет прямо из вкладки? Нам нужна задержка, так как ItemGroup вкладки создаются до регистрации любых предметов, а иконка не нужна до момента первого рендера ItemGroup. Если же попробовать создать ItemStack с предметом при создании ItemGroup — мы получим ошибку, так как никаких предметов в игре еще нет. Использование Supplier позволяет отложить запрос иконки до момента, когда она будет нужна.

В итоге наш класс должен выглядеть как-то так:

Создание вкладки ItemGroup

Итак. Мы написали класс своего ItemGroup и теперь можем создать вкладку в игре. Для этого создаём новый класс MyModItemGroups (в той же папке) и создадим константу ItemGroup c именем MOD_ITEM_GROUP.

В нашем классе два параметра. Первый — наш MODID, а второй — Supplier, где можно указать желаемый любой предмет из игры. Например: () -> new ItemStack(Items.DIAMOND).

Получаем в итоге что-то такое:

И укажем нашему предмету нашу вкладку!

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

setup (new Item (new Item.Properties().group(ItemGroup.FOOD)), «sausage»)

и заменяем ItemGroup.FOOD на MyModItemGroups.MOD_ITEM_GROUP.

Запускаем…

Ваааау!

Итак, народ. Это оно! Ваша вкладка, без смс и регистрации! С кака…ммм… Сосиской и алмазиком!

Свои предметы на вкладке

Если вы когда-либо видели моды, то знаете, что чаще всего новые вкладки используют новые предметы. Сделаем так и мы. Вот только есть один момент. В майнкрафте есть статические ссылки на все предметы и блоки (что мы и использовали). А значит и нам такие нужны. Все в той же папке init создаем файл ModItems и аннотируем его @ObjectHolder (net.minecraftforge.registries.ObjectHolder) с параметром аннотации TutorialGSMod.MODID.

После чего в самом классе добавляем константу типа Item, которая должна иметь такое же имя, как и наш предмет, но значением указываем null.

Иными словами, вот код для сосиски:

Если вы в теме, то у вас могут возникнуть вопросы по поводу null. Но ничего страшного! Переменная будет инициализирована при регистрации предмета. На этом тут все, а мы можем спокойно заменять Items.DIAMOND на ModItems.SAUSAGE.

Проверяем.

Слишком много сосисок…

На этом пожалуй все. Теперь у вас есть своя вкладка для своих предметов и будем её пополнять!

Спасибо за внимание. Перевел и адаптировал Aslter. Оригинал.

Урок седьмой. Локализация

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