KubeJS Studio — редактор рецептов и скриптов для Minecraft

KubeJS Studio — внутриигровой редактор рецептов, тегов и лута для Minecraft с живым кодом и GUI. Узнайте, как установить и скачать KubeJS Studio.

KubeJS Studio: визуальный редактор и код-редактор KubeJS для Minecraft

Если вы когда-нибудь писали скрипты KubeJS в блокноте, переключаясь между Minecraft и внешним редактором, вы знаете эту боль. KubeJS Studio решает её радикально: это полноценный фронтенд для KubeJS прямо внутри игры. Нажмите K — и перед вами рабочее пространство для рецептов, тегов, таблиц лута, свойств предметов и блоков, а также регистрации новых записей. Плюс редактор кода, который знает, что именно загружено в вашем модпаке.

Важно понимать: Studio не создаёт собственный формат проекта. Он пишет обычные файлы в папку kubejs/ — скрипты, datapack JSON, языковые файлы и модели. Никакого экспорта, никакой привязки: сгенерированные файлы продолжат работать, даже если вы удалите Studio. Единственное жёсткое требование — сам KubeJS.

Поддерживаемые версии Minecraft и загрузчики

На момент написания дополнение работает на двух ветках:

  • Minecraft 1.21.1 — загрузчик NeoForge 21.1.216 и выше, Java 21, требуется KubeJS.
  • Minecraft 1.20.1 — загрузчик Forge 47 и выше, Java 17, требуется KubeJS и Kotlin for Forge 4.11 и выше.

Манифест не фиксирует конкретную версию KubeJS. Релиз собирался против KubeJS 2101.7.2 на 1.21.1 и 2001.6.5 на 1.20.1 — другие сборки, скорее всего, тоже заведутся, но тестировались именно эти. Завышенный порог NeoForge объясняется встроенной библиотекой LDLib2, которая идёт внутри jar-файла. Studio — клиентский инструмент: ставить его нужно в той сборке, где вы собираете пак, а на сервер и чужие клиенты он не требуется.

Если не хочется возиться с ручной установкой Forge и зависимостей, в лаунчере foxygame.net KubeJS Studio и нужные библиотеки ставятся в один клик, а каталог дополнений сам подбирает совместимые версии под выбранный модпак. Это заметно экономит время, когда вы переключаетесь между 1.20.1 и 1.21.1.

GUI или код: выбирайте по ситуации

Философия Studio проста: иногда быстрее накликать форму, а иногда — отредактировать скрипт руками. Инструмент умеет и то, и другое, переключаться можно в любой момент или использовать оба режима одновременно.

Никогда не писали скриптов KubeJS? Начните с пяти визуальных вкладок. Выберите рецепт, тег, таблицу лута или предмет, измените его через настоящие слоты и обычные поля, нажмите Queue. Studio покажет ровно то, что собирается записать, ещё до того, как что-то тронет на диске.

Уже пишете на KubeJS? Вкладка Files — это полноценный редактор с автодополнением, подсказками при наведении и проверкой ошибок, построенными на живом инстансе, а не на устаревшем файле типизации. Наберите event.recipes. — и увидите список типов рецептов, загруженных именно в этом паке, вместе с модами.

Вкладка Recipes

Все загруженные рецепты доступны в браузере с фильтрами по моду, типу или предмету. Поддерживаемые типы открываются в форме со слотами, заполняемыми из пикера, полями количества и категории, а сгенерированный результат показывается снизу по мере редактирования. Можно переопределить рецепт, отключить его, дублировать или начать с чистого листа. У ванильного крафта, готовки, камнереза и кузнечного дела есть рукописные формы. У рецептов Create — тоже, включая нагретое смешивание и последовательную сборку. Farmer's Delight, Ars Nouveau и распространённые машины Mekanism получили собственные раскладки. Для остальных типов Studio строит плоскую форму из схемы рецепта, которую KubeJS уже для них имеет. Если схемы нет или JSON сложнее, чем форма может переварить, он открывается как сырой JSON.

Вкладка Tags

Выберите реестр — предметы, блоки, жидкости, сущности и любые динамические реестры, которые игра отдаёт, — найдите тег, добавьте или уберите участников. Добавления и удаления показываются прямо на живом содержимом, так что diff виден до постановки в очередь. Это быстрый способ затащить модовые предметы в #minecraft:planks или #c:ingots/copper, чтобы рецепты и механики их подхватили.

Вкладка Loot

Настоящие таблицы лута редактируются на месте как дерево пулов и записей. Rolls, count и weight остаются в строке. Многоточие на строке открывает полный редактор записи — там живут условия и функции в виде типизированных форм: проверки инструмента, случайный шанс, бонусы в стиле Fortune, затухание от взрыва, имена, лор, компоненты или NBT и вложенная логика all_of / any_of. Настройки уровня таблицы — под кнопкой Table. Каталог следует версии Minecraft, а всё без типизированной формы остаётся редактируемым как сырой JSON.

Вкладка Properties

Базовые характеристики, до которых не дотянется ни один рецепт и тег. Предметы отдают размер стека, прочность, пищевую ценность, время горения и флаг огнестойкости. Блоки — твёрдость, взрывоустойчивость, уровень света, трение, необходимость инструмента, уровень добычи и подходящий инструмент. Studio пишет соответствующий стартовый скрипт ItemEvents.modification или BlockEvents.modification. Эта же вкладка переименовывает и перерисовывает всё, что уже есть в игре, — результат ложится языковой записью и оверрайдом модели в kubejs/assets. Изменения статов требуют перезапуска игры, теги добычи применяются по /reload, имена и текстуры — по F3+T. Каждая строка помечена, что именно ей нужно.

Вкладка Create

Новые предметы, блоки и жидкости без единой строчки стартового скрипта. Задайте id, выберите один из типов-строителей Studio (обычный предмет, инструменты, элементы брони, плита, ступени, дверь, культура, жидкость с ведром и другие) и заполните нужные поля. Список полей соответствует версии, так что 1.20.1 показывает только то, что поддерживает KubeJS для 1.20.1. Всё созданное остаётся в списке слева — можно переоткрыть или удалить позже.

Редактор кода: движок, а не типизация

Если вы пользовались ProbeJS, цель покажется знакомой. ProbeJS генерирует типизации, чтобы внешняя IDE помогала писать KubeJS. Studio переносит эту помощь внутрь Minecraft. Он отражает тот рантайм KubeJS, который у вас реально есть — группы событий и обработчики, глобалы в скриптовых областях, включая аддоны, — и читает схемы рецептов и игровые id из открытого мира по мере необходимости. Никакого шага генерации типов и никакого второго окна. Кэшированная копия индекса символов подстрахует в редком случае, когда живая рефлексия падает.

Сама вкладка Files — это файловый менеджер и многозадачный редактор для всего инстанса с подсветкой JS, JSON, TOML и логов. Он правит текстовые файлы до 2 МБ, показывает превью картинок, умеет создавать, переименовывать и удалять с защитными ограничениями. Избранное и закреплённые папки держат дерево kubejs/ под рукой.

Автодополнение и документация

Наберите event. — получите членов события. Наберите event.recipes. — получите неймспейсы всех модов со схемой рецептов KubeJS, затем типы под ними, затем цепные методы, которые тип поддерживает (.heated() у смешивания Create, .xp() у плавки). Строковое дополнение следует контексту: id предметов и тегов с иконками там, где рецепт их ждёт, id модов в фильтрах, типы строителей в событиях реестра, id таблиц лута и языковые ключи. Класс, загруженный через Java.loadClass, получает дополнение статических членов, а datapack JSON распознаёт типовые поля id.

Наведите курсор на член KubeJS, переменную, id или диагностику — увидите сигнатуру и краткое описание, тип, предмет за id, полное сообщение. Пока каретка стоит внутри распознанного вызова, над ней появляется строка сигнатуры. Документация берётся из собранного рантайм-индекса, включая аннотации @Info самого KubeJS, плюс небольшой встроенный справочник по тем частям, о которых KubeJS о себе не рассказывает.

Диагностика и консоль

Ошибки и предупреждения появляются по мере набора: счётчик под редактором и полный текст при наведении. Неизвестные члены и идентификаторы, опечатки в id предметов, тегов, модов и рецептов, несовпадающее число аргументов, id не в том слоте, события не из того типа скрипта, кривые заголовки // priority и // requires, несбалансированные скобки, незакрытые строки и Java-классы, которые отфильтрует KubeJS. Ошибки консоли KubeJS с указанием источника из последней перезагрузки тоже ложатся на нужную строку — сломанный рецепт указывает на конкретный оператор, а не на лог-файл.

Панель консоли перечисляет ошибки и предупреждения KubeJS с последней перезагрузки. Клик по записи прыгает на её строку, а командная строка позволяет выполнить /kubejs errors, /reload или что угодно ещё, не покидая экран. Кнопка Reload перезагружает именно тот тип скриптов, который вы правите, — стартовые, серверные, клиентские или данные, — так что пересобирать весь датапак ради теста одного клиентского скрипта не нужно.

Очередь, проверка, применение

Ничто в визуальных вкладках не пишет на диск напрямую. Изменения копятся в списке ожидания внизу экрана. По умолчанию Apply показывает diff файлов, которые собирается записать, оставляет .bak предыдущей версии рядом с каждым и перезагружает после. Все три поведения отключаются в настройках. Изменения рецептов, тегов и лута можно записать либо как скрипты KubeJS, либо как datapack JSON в kubejs/data — для каждого изменения отдельно, по умолчанию датапак. Статы и новые записи реестра всегда стартовые скрипты, имена и текстуры — всегда ресурсные файлы. Скрипты ложатся в kubejs/server_scripts/kubejsstudio/ и kubejs/startup_scripts/kubejsstudio/, по файлу на вид. Повторное применение сливается по id с тем, что Studio писал раньше, а не заменяет файл целиком, но относитесь к этим файлам как к генерируемому выводу и держите свои рукописные скрипты в другом месте. Всё, что написал Studio, сбрасывается с той же вкладки.

Мелочи, которые решают

Тем восемнадцать: Studio Dark, все четыре вкуса Catppuccin, Dracula, Everforest, GitHub dark и light, Gruvbox, Kanagawa, Monokai, Nord, One Dark, Rose Pine, Solarized dark и light, Tokyo Night. Свой JSON кладётся в config/kubejsstudio/themes — пример появится там при первом запуске. Настройки собраны в одном диалоге с поиском: шрифты, поведение редактора, какие интеллектуальные функции включены и насколько они навязчивы, переключатели рабочего процесса. Горячие клавиши Studio для переключения вкладок, поиска, очереди и применения, дополнения, сниппетов, форматирования и файловых действий переназначаются там же, а клавиша K и прямые бинды на вкладки живут в экране управления Minecraft. Панели меняют размер и сворачиваются, диалоги помнят свой размер, а в настройках есть сброс в один клик. Команда /kubejsstudio открывает рабочее пространство из чата с подкомандой на каждую вкладку.

Среди прочего — поиск и замена с учётом регистра, целых слов и регулярками, форматирование, палитра сниппетов, перенос строк, автозакрытие скобок, превью-вкладки, восстановление сессии и undo, который группирует близкий набор в один шаг. Ctrl+I открывает пикер предметов у каретки и вставляет id или разворачивает тег в список участников, Ctrl+R вставляет JSON рецепта, Ctrl+P ищет по собранному индексу KubeJS, а кнопка { } API открывает тот же индекс, сгруппированный по глобалам, событиям и типам. В языковых файлах есть кнопка Missing keys, которая добавляет ключи блоков, предметов, сущностей, эффектов и зачарований, ещё не переведённых в неймспейсе.

Итог простой. KubeJS Studio для Minecraft закрывает разрыв между «накликать в GUI» и «написать скрипт», не заставляя выбирать что-то одно. Он читает живой рантайм, пишет обычные файлы, которые живут без него, и работает только на клиенте. Если вы собираете модпак и хотите скачать KubeJS Studio, начните с вкладки Recipes и вкладки Files — почти вся повседневная работа укладывается в эти две.