Compukter Kraft | Dev
4 subscribers
19 photos
1 file
3 links
Наивный мальчик, желающий стать гигачадом в мире разработки

GitHub: https://github.com/LazyHat/Compukter-Kraft

Modrinth: https://modrinth.com/mod/compukterkraft
Download Telegram
Compukter Kraft | Dev
Ох как же я устал от конфигурирования проекта мода в Gradle С одной стороны я хорошо знаю Gradle и знаю как сделать что угодно. С другой стороны есть всякие плагины для модлоадеров, которые совершенно не интуитивно работают с classpath и sourceSet Вот я…
Вообще я просто хочу добавить:
во-первых поддержку Kotlin в моде без KotlinForForge, потому что я не хочу завязываться на этот мод, он как-то странно поддерживается

во-вторых добавить поддержку Kotlin Scripting

всего-то...

А на деле это выливается в кучу проблем с внедрением этого всего в java мир Minecraft, знаю разраб HollowEngine тоже запарился, настала и моя очередь)

Пока я не сильно представляю как устроена разработка мода, зачем деобфусцировать я в целом понимаю, но тонкости упаковки мода, загрузки его модлоадером, а также конфигурация в Gradle - это пока неизведанное
Не знаю почему, но что бы я не попробовал, везде натыкался на какую-то ошибку, о которой никто не знает. Копаться в исходниках мне не очень хочется, особенно Gradle плагинов, где люди забывают что такое типизация как правило

Пробовал разные плагины и в итоге решил остановится на чистом ForgeGradle 6

Почему-то 7-мая версия у меня не завелась, вылетел непонятный NPE, ишьюс не было никакого, поэтому я решил забить на него и откатиться на 6-ой

ModDevGradle(legacy) от neoforge завёлся, но мне была совсем непонятно как он управляет конфигурациями. Банально не полуилось подтянуть зависимость в мод (kotlin-stdlib). При запуске задачи runClient Forge не находил зависимость и классы в ней. В classpath разумеется было пусто. Я попробовал разные варианты прокидывания: и в рантайм, и в implementation, нейронки тоже ничего путного не подсказали.

Поэтому я решил попробовать использовать форджовский оригинальный Gradle плагин, ну нахер эти ваши обёртки


В целом ветки я оставил, может ещё вернусь к новым плагинам
УРААААААААААААА ПОБЕДАААААААААА СЛАВА ARCHITECTURY!!!!!!
Compukter Kraft | Dev
УРААААААААААААА ПОБЕДАААААААААА СЛАВА ARCHITECTURY!!!!!!
В общем да... Я решил всё таки попробвать ещё раз. И у меня получилось, счастья полные штаны

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

+ Forge уже уходит в закат, а плагин NeoForge разумеется несовместим никак со старым Forge

Даже в architectury на сайте с инициализацией проекта у тебя выбор Forge доступен только на 1.20.x версиях. На 1.21.x на Forge писать уже моветон хах
И вот я вернулся к ошибке, из-за которой забросил разработку этого мода...

Как ни странно, но раньше у меня получалось работать с ModDevGradle от NeoForged и всё подгружалось... но да не важно уже )))
Compukter Kraft | Dev
И вот я вернулся к ошибке, из-за которой забросил разработку этого мода... Как ни странно, но раньше у меня получалось работать с ModDevGradle от NeoForged и всё подгружалось... но да не важно уже )))
Просто в тупую подключить зависимости для Kotlin Scripting увы не получится, есть такой вот пакет с названием "native". А в Java слово "native" является зарезервированным и как название пакета использоваться не может. буду ремапить штош
Please open Telegram to view this post
VIEW IN TELEGRAM
Compukter Kraft | Dev
Просто в тупую подключить зависимости для Kotlin Scripting увы не получится, есть такой вот пакет с названием "native". А в Java слово "native" является зарезервированным и как название пакета использоваться не может. буду ремапить штош
Не совсем как оказалось. Проблема ещё глубже, на уровне загрузки этих зависимостей в мод.

Как я понял, самое лучшее решение - делать отдельный Jar со всей мишурой компиляторной и делать маленький слой взаимодействия с модом. Т.е. напрямую не пользоваться зависимостями для kts скриптов

Подключил нейронку для такого действия, буду внимательно изучать, так как всё это для меня в новинку
оно запустилося, ураааааа
Заодно я окончательно решил что буду использовать Architectury для своего мода
Решил таки переименовать мод, всё таки Kraft мне больше нравится чем Craft
Довольно удобная штука в Cursor недавно появилась - Планы

Сейчас выстраиваю основной скелет, привлёк нейронку (GPT-5.4) Хочу узнать как вообще можно сделать, потому что у самого мыслей 0 🫠
Так сильно я ещё не бабки не пропивал
😁1
Ну наконецта
Кто третий?))) у меня же всего 2 подпещщщщщека и то один это я
Вот получается самая простейшая программа, как видно все интерфейсы пробрасываются из мода, и с компом можно взаимодействовать прямо из скрипта. Более того - ТИПОБЕЗОПАСНО.

Осталось только нормально ScriptDef описать чтобы всё соотестовало конфигурации в моде, потому что в моде зависимости в рантайме подтягиваются, что разумеется не пойдёт для @KotlinScript аннотации, которую кушает IDE
В общем идея реализовать рантайм используя Kotlin Scripting - разбилась об этот же рантайм

К сожалению изолировать скрипты от хост системы не представляется возможным... А я возлагал такие надежды на Kotlin.

Максимум что можно было сделать - запускать sandbox средствами ОС, но это влечёт дикий оверхед на мод

Поэтому не долго думая я решил написать свой собственный компилятор и рантайм, используя за основу яп Kotlin. Разумеется для CK мне не нужен фулл функционал котлина, только базовые части, но это уже довольно много.

Так что работа снова пришла в начало)
Channel name was changed to «Compukter Kraft Dev»
Channel name was changed to «Compukter Kraft | Dev»
В общем и целом я написал (точно я, поверьте мне) компилятор нового языка под коротким названием CKL (Compukter Kraft Language).
Сейчас пишу shell, а потом и ide(то, чего мне очень не хватало в CC) чтобы сделать полностью независимый стек.