Новый дизайн редактора кода
Я тут немного доработал интерфейс редактора кода, теперь он гораздо приятнее. По сути осталось пару мелких косяков поправить и протестировать и в целом будет готово.
Также появился набросок редактора рецептов. По задумке там можно будет фильтровать все рецепты по типу и названию, а также показывать добавленные/изменённые/удалённые рецепты, а также менять всякие мета-данные, вроде тегов, зеркальных рецептов, бесформенных рецептов и т.п.
Но этим я буду заниматься уже после релиза, пока это просто инструмент просмотра рецептов вроде JEI :D
Ну а до релиза по сути осталось только доработать плагин, чтобы он правильно обрабатывал лямбда-функции и "асинки", которые работают по тому же принципу. Для тех кто не помнит, или не знает, лямбды, это по сути функции без названия, которые можно использовать в переменных. Рассмотрим такой пример:
У нас есть 3 квеста и несколько неочевидных моментов, так что расскажу про каждый отдельно:
1) Аннотация @Suspendable - означает что лямбда приостанавливаемая (т.е. её как и сам скрипт можно будет приостановить и сохранить при выходе)
2) Выражение `(NPCEntity) -> Unit` по сути описание функции, т.е. она принимает персонажа и возвращает Unit (т.е. ничего)
Эти переменные по сути своей - независимые подпрограммы, управляет которыми в данном случае класс `MyQuestSystem`. Таким образом можно реализовать сложные механики вроде: 'выполнить 3 этих квеста одновременно вне зависимости от порядка' или 'выполнить любые 2 квеста'. И к слову эти функции тоже будут сохраняться, т.е. не получится так, что игрок вышел из игры не завершив все квесты и они сбросились.
На первый взгляд может показаться, что фича довольно сложная, редко используется и лучше было бы отложить её на пару обновлений вперёд, но к сожалению от неё зависят несколько встроенных в движок систем, вроде асинхронных действий, или диалогов (которые по сути как раз и выполняют лямбды в зависимости от выбора в диалоге)
Ну и понятное дело сохранять их тоже задача не из простых, поскольку мало того, что нужно сохранять содержимое функции, так ещё и нужно учитывать то, что лямбды могут быть запущены сразу из нескольких систем одновременно, к тому же они умеют захватывать внешние переменные, за пределами самой лямбды, что заставляет разработчиков таких сложных плагинов, как я, плакать ;)
Axel Encore
Ну легендарно, я все больше убеждаюсь что такое масштабное по своим возможностям и проработке - творение не может быть бесплатным
Ждем чуть подробнее информацию о Suspendable в доках и желаем удачи и терпения к релизу, тащи🔥
Mar 15 2025 20:17