RingoWay Developer

RingoWay Developer 

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

71subscribers

44posts

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

Forge Моддинг 1.20.1 — Лекция 7: Создание блока руды

Приветствую, друзья!
Предыдущая лекция
Forge Моддинг 1.20.1 — Лекция 6: Как настроить дроп и добычу блока
Цель лекции
В этой лекции мы научимся создавать руды. Вы узнаете:
• Как добавить выпадение опыта при добыче руды.
• Настроить лут-таблицу как у руды с учётом шёлкового касания.
• Ввести новый уровень добычи (незерит) через теги.
1. Регистрация руд
Руда отличается от обычного блока тем, что при добыче может давать опыт и ресурсы. Для этого используется класс DropExperienceBlock:
И в эти скобки будут передаваться два значения:
• Параметры блока BlockBehaviour.Properties.of()
• Значение опыта UniformInt.of().
Полная запись будет выглядеть примерно так:
Пояснение:
• Здесь для удобства я копировал свойства блока, который мы до этого создавали (PINKYLITE_CRYSTAL_BLOCK), указал обновленное значение strength
• UniformInt.of(min, max) — задаёт случайное количество опыта в указанном диапазоне. (например UniformInt.of(3, 7).
• Если в strength() указать одно значение, оно будет применено к destroyTime и explosionResistance.
2. Лут-таблица руды
Руда должна дропать ресурсы (например, пинкилитовый кристалл) и учитывать шёлковое касание (по желанию).
Внизу будет пример лут таблицы для руды, а так же мы разберём каждую строчку:
json
pinkylite_ore.json1.62 Kb
2.1. Подробное объяснение лут таблицы
"type": "minecraft:block"
• Говорит игре, что это лут-таблица для блока, а не для моба или сундука.
"pools": [ ... ]
• Это «пулы» дропа — группы предметов, которые могут выпасть.
• Можно создать несколько пулов, например:
- Первый пул — основной дроп (ресурсы).
- Второй пул — редкий дроп (дополнительные предметы).
"bonus_rolls": 0.0
• Дополнительные попытки дропа.
• 0.0 — дополнительные шансы отключены.
• Если бы было 1.0, игра проверила бы дроп ещё раз (может выпасть больше предметов).
В принципе эту строчку можете не писать
"entries": [ ... ]
• Список вариантов дропа.
• В данном случае используется alternatives — выбирается только один из вариантов.
В прошлый раз мы просто item использовали, в этот раз alternatives, так как мы добавляем условие шёлкового касания.
"type": "minecraft:alternatives"
• Тип дропа «альтернативы» — игра проверит условия каждого варианта по порядку и выберет первый подходящий.
• Поэтому он должен быть первее обычного дропа ресурсов, иначе это условие альтернативы будет пропускаться.
"children": [ ... ]
• Дочерние варианты дропа.
• Здесь два варианта:
- Вариант 1: Дроп руды, если есть шёлковое касание.
- Вариант 2: Дроп кристалла, если шёлкового касания нет.
"conditions": [ ... ]
• Условия для выбора варианта.
• "minecraft:match_tool" — проверяет, есть ли у инструмента определённые свойства.
• "enchantment": "minecraft:silk_touch" — проверка на зачарование «Шёлковое касание».
"name": "rinova:pinkylite_ore"
• Если условие выполнено (есть шёлковое касание), выпадет сама руда.
• Здесь вы указываете свой мод_айди:айди_руды. 
"functions": [ ... ]
Функции, которые изменяют дроп:
• set_count: Устанавливает количество выпадающих предметов.
- "uniform" — случайное число между min и max (1-2 кристалла).
• apply_bonus: Учитывает зачарование «Удача» (Fortune).
- "ore_drops" — стандартная формула для увеличения дропа руд.
• explosion_decay: Учитывает взрыв ресурса
"rolls": 1.0
• Количество «попыток» дропа из этого пула.
• 1.0 — одна попытка (выпадет либо руда, либо кристалл).
"random_sequence": "rinova:blocks/pinkylite_ore"
• Идентификатор для генерации случайных чисел (RNG).
• Нужен, чтобы дроп был одинаковым для всех игроков в одном мире.
• Можно игнорировать, если не требуется синхронизация, но рекомендую использовать
rinova - айди мода, 
blocks - просто блоки, писать всегда, 
pinkylite_ore - айди блока
Поскольку мы добавили два типа руды — каменную и глубинносланцевую, можно создать аналогичный JSON-файл для глубинной версии.
Для этого:
1. Скопируйте существующий файл лут-таблицы каменной руды.
2. В названии файла и внутри него замените ID каменной руды (pinkylite_ore) на ID глубинной (deepslate_pinkylite_ore).
3. При необходимости скорректируйте параметры (например айди руды и дропа)."
2.2. Как это работает в игре?
1. Игрок добывает руду без шёлкового касания:
• Выпадает 1-2 кристалла (зависит от удачи).
2. Игрок добывает руду с шёлковым касанием:
• Выпадает сама руда (блок pinkylite_ore).
3. Если блок разрушен взрывом:
• Шанс дропа снижается (из-за explosion_decay).
Если вы будете копировать файл, то вам достаточно изменить лишь эти строки:
• min, max - изменение количество дропа
• rinova:pinkylite_ore - ваша руда (которая получается шёлковым касанием)
• rinova:pinkylite_crystal - ваш ресурс, который дропается после добычи
• rinova:blocks/pinkylite_ore - айди руды, для генерации случайных чисел. 
Ссылка на лут-таблицу на сайте: 
https://misode.github.io/loot-table/?share=Ipd2SDmcIk
3. Уровень добычи - незерит.
Теперь научимся настраивать блоки, которые можно добыть только незеритовыми инструментами или выше. Это полезно для создания интересного усложнения игры, к примеру «титанового дерева», «демонической руды» или других суперпрочных материалов (к примеру).
3.1 Создание тега для незерита
Для этого в папке data создайте такой путь папок: forge/tags/blocks:
Далее создайте файл needs_netherite_tool.json в этой папке:
Добавьте ID вашего блока в этот файл:
Не забудьте указать ваши новые руды в тегах инструментов (кирка):
Так же я обычную пинкилитовую руду добавлю в уровень железа:
4. Json моделей, blockstate
Здесь не должно быть ничего сложного:
Файлы идентичны по структуре, меняется лишь содержание и айди:
5. Тестирование
Теперь запускаем игру как обычно через runClient    
Как добываются блоки в игре + проверка условий:  
Весь написанный код:
https://github.com/ringoway/Rinova/commit/450915dcc4bd496465c40652565b8933e3462e0b
Следующие лекции будут посвящены:
1. Полный гайд по настройкам блоков (BlockBehaviour.Properties)
Разберём все 33 параметра блока — от прочности и звуков до светимости и трения.
Следующая лекция (Платная): 
Forge Моддинг 1.20.1 — Лекция 8: BlockBehaviour.Properties — 33 параметра блока
2. Создание рецептов для крафта в верстаке
Научимся добавлять рецепты для предметов и блоков, включая форменное, бесформенное создание и плавку.
Следующая лекция (Бесплатная): 
Forge Моддинг 1.20.1 — Лекция 9: Рецепты для верстака и печи

К сожалению для вас, с этого момента лекции будут платными
Привет, твои туториалы реально классные, может быть ты обратишь внимание на мой комментарий, потому что я столкнулся с небольшой проблемой, пока писал свой мод: моя руда не генерируется. Я пробовал и через классы в папке worldgen, и через json-обьекты, но так и не заработало. Может ты расскажешь об этом?) Удачи!
ringoway, Знаете, давно думал начать пробовать делать моды для майнкрафта, но это как мечта была. Недавно решил попробовать и начал уж было искать гайды, но встретил очень-очень много разных и все как один непонятных. Ваши лекции просто удивительная находка! Я на вас сразу подписался как только начал изучать, сейчас как раз закончил эту лекцию, уже 7 без остановки, с интересом потратил на это почти целый день, но оно того стоило! Больше всего удивило что и солидная часть бесплатна и в общем доступе, тоже большая редкость и гигантский плюс. Спасибо вам огромное! Буду продолжать следить за вашим творчеством и с интересом изучать лекции 
Савелий Аблогин, я только что заметил ваш комментарии. Спасибо большое что вы подписались! Я очень ценю это! У меня часто случались паузы в лекциях, но когда я вижу такие комментарии, то у меня есть мотивация продолжать. Спасибо!
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