Гибкая настройка эквивалентного обмена: KubeJS ProjectE
Мод ProjectE давно стал классикой для любителей магии чисел и алхимии в Minecraft. Он добавляет энергию EMC, позволяя превращать практически любые предметы друг в друга через Конденсатор или Философский камень. Но что, если стандартные значения EMC кажутся вам несбалансированными или вы хотите добавить собственные цепочки трансмутаций? Именно здесь на сцену выходит KubeJS ProjectE — скриптовый мост между гибкостью KubeJS и мощью ProjectE. Этот аддон позволяет не просто менять цифры, а полностью переписывать правила эквивалентного обмена под нужды вашего сервера или сборки.
Что умеет KubeJS ProjectE
Основная задача мода — дать возможность через привычный синтаксис KubeJS задавать EMC для любых предметов, управлять энергией игрока и регистрировать мировые трансмутации, которые срабатывают при использовании Философского камня. Вам больше не нужно лезть в конфиги или править исходники — всё делается парой строк JavaScript.
Ключевые возможности:
- Установка абсолютного EMC — фиксированное значение для предмета, которое не меняется при пересчётах.
- Установка EMC до генерации — значение задаётся до того, как ProjectE попытается вычислить EMC из рецептов крафта. Это позволяет создавать базовые элементы, от которых потом пойдут цепочки автоматического расчёта.
- Работа с EMC игрока — получение, добавление и установка персонального баланса прямо в скриптах.
- Мировые трансмутации — превращение блоков в мире по клику Философским камнем, как в классическом Equivalent Exchange.
Примеры скриптов для server_scripts
Все основные манипуляции с EMC выполняются в папке server_scripts вашего экземпляра KubeJS. Рассмотрим базовый сценарий: вы хотите обнулить EMC булыжника, чтобы игроки не фармили бесконечные ресурсы из камня, но при этом задать высокую стоимость палки, сделав её ценным ресурсом для крафтов.
ProjectEEvents.setEMC(event => {
// абсолютное значение EMC — теперь булыжник ничего не стоит
event.setEMC("minecraft:cobblestone", 0)
// значение до автоматического расчёта — палка получит 10000 EMC,
// и все предметы, которые крафтятся из палок, пересчитаются от этой базы
event.setEMCBefore("minecraft:stick", 10000)
})
Обратите внимание на разницу между setEMC и setEMCBefore. Первый метод жёстко фиксирует число, игнорируя любые зависимости. Второй задаёт отправную точку, от которой ProjectE может развернуть дерево рецептов — это полезно, когда вы хотите сохранить динамический расчёт, но скорректировать базовые элементы.
Следом можно добавить интерактивность: например, при клике правой кнопкой по палке игрок увидит свой текущий баланс EMC и получит 1000 единиц. Такой приём часто используют для создания квестовых предметов или обучающих механик.
ItemEvents.rightClicked("minecraft:stick", event => {
let player = event.player
// getPlayerEMC всегда возвращает строку, потому что числа могут быть огромными
player.tell("Твой текущий EMC: " + ProjectE.getPlayerEMC(player))
ProjectE.addPlayerEMC(player, 1000)
player.tell("Новый баланс: " + ProjectE.getPlayerEMC(player))
})
Методы addPlayerEMC и setPlayerEMC принимают как числа, так и строки — это спасает от переполнения, когда счёт идёт на триллионы. Вы можете встроить такую механику в интерфейс кастомного блока или привязать к достижениям.
Мировые трансмутации в startup_scripts
Для регистрации превращений блоков используется событие ProjectEEvents.registerWorldTransmutations, которое принято размещать в startup_scripts. Классический пример — превращение динамита в дубовые доски. После этого любой игрок с Философским камнем в руке сможет одним кликом менять TNT на доски прямо в мире.
ProjectEEvents.registerWorldTransmutations(event => {
event.transform("minecraft:tnt", "minecraft:oak_planks")
})
Такие трансмутации можно использовать для создания уникальных алхимических путей: камень в руду, землю в гравий или даже воздух в ценный ресурс — всё ограничено лишь фантазией. Комбинируя это с кастомными EMC, вы получаете полноценный редактор эквивалентного обмена.
Установка и первый запуск
Для работы KubeJS ProjectE вам потребуется сам KubeJS, мод ProjectE и, разумеется, этот аддон. Все три компонента должны быть загружены в папку mods вашего клиента или сервера. Если вы не хотите возиться с ручной установкой и отслеживанием зависимостей, можно воспользоваться лаунчером foxygame.net — удобным, гибким и современным инструментом для Minecraft, где моды скачиваются прямо из меню и сразу помещаются в нужную директорию. Это сильно экономит время при сборке сложных модпаков с множеством скриптовых аддонов.
После запуска игры KubeJS автоматически создаст структуру папок для скриптов. Разместите приведённые выше примеры в соответствующих файлах, выполните команду /kubejs reload (если она доступна) или перезапустите мир, и новые правила эквивалентного обмена вступят в силу.
Практические советы и балансировка
При настройке EMC важно помнить о цикличности: если вы зададите слишком высокое значение для базового ресурса, а затем создадите рецепт, который дёшево превращает его обратно в другой предмет, может возникнуть бесконечный генератор EMC. Всегда тестируйте цепочки крафтов в одиночном мире перед запуском на сервере.
Также учитывайте, что setEMCBefore не гарантирует, что значение будет применено, если ProjectE обнаружит конфликт. В таких случаях используйте setEMC для финальной фиксации. Для отладки удобно добавить временные сообщения в чат, как в примере с палкой — это позволит игрокам видеть, что скрипты работают корректно.
Заключение
KubeJS ProjectE стирает границу между готовым модом и инструментом для творчества. Вы больше не привязаны к предустановленным таблицам EMC — теперь каждая единица энергии подчиняется вашим правилам. Будь то жёсткий хардкорный сервер с нулевой стоимостью камня или магическая сборка, где палка ценится дороже алмазов, этот аддон даёт полный контроль над экономикой ProjectE. Сочетайте скриптовую гибкость KubeJS с алхимической глубиной, и ваша игра заиграет новыми красками без необходимости писать отдельные моды.