RingoWay Developer

RingoWay Developer 

Разработчик майнкрафт модов

71subscribers

44posts

goals1
8 of 100 paid subscribers
Лекции по NeoForge 1.21.10

Forge Моддинг 1.20.1 — Лекция 4: Собственная творческая вкладка

Приветствую, друзья!
Предыдущая лекция:
Forge Моддинг 1.20.1 — Лекция 3: Создание предмета
Цель лекции
В этом маленьком уроке мы разберём, как создать собственную вкладку в режиме креатив. Вкладка будет иметь свою уникальную иконку, название, а также список отображаемых предметов. Мы шаг за шагом настроим процесс регистрации и локализации вкладки, а также научимся отображать предметы из мода во вкладке.
Старая лекция

1. Класс регистрации вкладки креатива
1.1. Создание класса
Первым шагом создадим класс для вкладки в креативе.  
В папке регистраций (registry) создаём класс:
{АббревитураМода}CreativeTabs.
Пример: RCreativeTabs для мода Rinova.  
1.2. DeferredRegister для вкладок
Далее создаём переменную отложенной регистрации DeferredRegister, где в угловых скобках указываем уже тип - креативную вкладку вкладки:
Запись схожа с тем, что мы делали при регистрации предметов, не правда ли? Почти всегда когда мы будем регистрировать что либо, запись будет такая, будет лишь меняться классы в угловых скобках отложенной регистрации и ForgeRegistries/Registries.
1.3. Регистрация креативной вкладки
Далее переходим уже к созданию самой вкладки. Я назвал его TAB, но вы можете как угодно. Код может выглядеть немного сложно, но если разобраться, то всё понятно. 
Разбор кода
• "tab" - айди вкладки
• CreativeModeTab.builder() - запускаем процесс "строительства" нашей вкладки, то есть задание ей характеристик и параметров 
• .icon()
- Указывает ItemStack для иконки вкладки.
- RItems.PINKYLITE_CRYSTAL.get() — получает зарегистрированный предмет.
- getDefaultInstance() — создаёт ItemStack (объект, представляющий предмет в инвентаре).
• .title()
- Задаёт локализованное название через Component.translatable().
- Ключ локализации: creative_tab.{mod_id}.{tab_id}.
Пример: creative_tab.rinova.tab
• .displayItems()
- Определяет, какие предметы отображаются во вкладке.
- output.accept() — добавляет предмет в список.
Вы можете использовать два вида добавления предметов в креативную вкладку:
- Единично через output.accept() (как на скрине)
- Автоматическое добавления всех предметов мода: RItems.ITEMS.getEntries().forEach(item -> output.accept(item.get()));
2. Регистрация класса регистрации креативных вкладок
Создаём идентичный метод register, как в RItems, только в этот раз регистрируем именно CREATIVE_MODE_TABS. Для понимания, код выглядит так:
Далее в главном классе мода регистрируем через EventBus наш класс вкладок:
Желательно убрать метод addCreative и всю сопутствующую логику, что добавляла наш предмет в ванильные вкладки майнкрафта, так как у нас теперь своя вкладка.
3. Настройка локализации
Чтобы вкладка отображалась с правильным названием, необходимо настроить файл локализации. Находим файлы en_us.json и ru_ru.json в нашей папке lang. Теперь пишем ключ "creative_tab.rinova.tab" в перевод. Выглядит это примерно так:
en_us.json:
ru_ru.json:
4. Проверка работы
После того как вы настроили иконку, название и предметы, запустите игру, чтобы проверить работу вашей вкладки. Если всё сделано правильно, в креативном инвентаре появится новая вкладка с вашей иконкой, названием и списком предметов.  
В следующем посте будет написана лекция как создавать блоки!
Весь написанный код:
https://github.com/ringoway/Rinova/pull/3/commits/2a16473d3594498564820d8f7c5296b100ea7350
Следующая лекция:
Forge Моддинг 1.20.1 — Лекция 5: Создание блока
Subscription levels4

🌱Junior Dev

$3.5 per month
Начало пути в моддинге

Включено:
✅ Базовые лекции по моддингу
✅ Шаблоны и примеры кода (Github)
✅ Приватный Telegram-чат "Сообщество мододелов"
✅ Роль "🌱Junior Dev" в Discord
+ chat

🛠️Middle Dev

$5.1 per month
Практикующий моддер

Включено:
✅ Всё из уровня «Junior Dev»
✅ Продвинутые лекции по моддингу
✅ Роль "🛠️Middle Dev" в Discord
+ chat

🎓Senior Dev

$7.3 per month
Опытный разработчик

Включено:
✅ Всё из уровня «Middle Dev»
✅ Большая благодарность!
✅ В будущем будут расширенные лекции 
✅ Роль "🎓Senior Dev" в Discord
+ chat

🎓Architect Dev

$12.7 per month
Опытный разработчик

Включено:
✅ Всё из уровня «Senior Dev»
✅ Огромная благодарность!
✅ В будущем будут расширенные лекции 
✅ Роль "🎓Architect Dev" в Discord
+ chat
Go up