TGViewer
Phase Of Horizon | HollowEngine Phase Of Horizon | HollowEngine @hollowengine · 373 subscribers
Post #187 669
Что такое Грабля и почему все её боятся? 🔱 | День 87

Сегодня опять обзорный пост, пока я вожусь с рефакторингом)
Поговорить я бы хотел насчёт Gradle, инструмента для компиляции и сборки .jar файлов. Если вы делаете моды или хотя бы смотрели исходники других проектов, то часто могли заметить там файлик вроде build.gradle или build.gradle.kts, это - скрипт сборки, который собирает файлы зависимостей и проекта(ов) в один архив .jar. И по сути это всё, конец, всем спасибо за внимание, пока!
Ну, а если серьёзно, то за простой сборкой проекта кроется ещё тонна разных интересных задач, в рамках создания модов, самое простое, что можно вспомнить - это декомпиляция и деобфускация Minecraft для разработки, а также реобфускация вашего кода после компиляции (чтобы он работал с обфусцированным Minecraft). Также с его помощью, можно обрабатывать файлы в вашем проекте, например, часто в mods.toml, название мода напрямую берётся из конфига, а не прописывается вручную (особенно в мультиплатформенных модах).
В HollowEngine я использую несколько кастомных скриптов для Gradle с достаточно уникальным функционалом, который я пока не видел в других модах, так что хочу поделиться)
- Автоматическая генерация mods.toml / neoforge.mods.toml / fabric.mod.json - Заполнять эти шаблоны под каждую версию и загрузчик было бы довольно неудобно, поэтому я создал скрипт, который автоматически создаёт эти файлы на основе параметров проекта!
- Автоматическая генерация констант для всех ресурсов. Однажды я просто з**бался писать очередной раз hollowengine:textures/gui/icons/[texture].png, и тогда я подумал, почему бы мне не генерировать класс со всеми такими ресурсами, тогда IDE всегда сможет мне подсказать все файлы в нужной папке.
Идея получилась очень удобная и имеет куда больше возможностей, о которых я раньше не задумывался - теперь я сразу вижу, какие ассеты в моде не используются. А если я удалю ассет, который уже используется в движке - мод просто не скомпилируется. В особенности это важно, когда допустил опечатку в названии текстуры, потом её переименовал, но заменил не все места, где она использовалась.
- Ну и последняя фича, которую я ввёл буквально на днях, это аналогичный генератор для ключей перевода. По сути логика та же, что и писал выше, но его пока "не обкатал" 🙃
Но думаю аналогично, куда проще будет отслеживать мёртвые ключи, которые когда-то были в моде, а потом были из него удалены)
И благодаря Gradle это всё работает перед компиляцией, тем самым само обновляется при добавлении новых ресурсов и перекомпиляции проекта 🤔
  • 🤯 4
More from @hollowengine
  1. Sep 24, 2026Новый интерфейс движка 🛞 | День 10 Да, я опять его переделал, и что вы мне сделаете? В пе…
  2. Sep 23, 2026Эмиттеры партиклов 🎮 | День 9 В общем, сегодня доработал ядро системы эффектов до уровня…
  3. Sep 22, 2026Ну вот, и даже ничего не сгорело, не зря год назад запарился и написал систему инстансинга…
  4. Sep 22, 2026Зря вы мне доверили систему эффектов и партиклов 😱 (День 8)
  5. Sep 21, 2026Ещё больше визуальных доработок ✨ (День 7) Продолжаю вчерашние доработки и исправления, на…
  6. Sep 20, 2026Доработка панелей мода 🛞 Сегодня я существенно доработал панели и окна движка, если корот…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →