▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/MerchantJS - Кастомные торговцы для KubeJS
MerchantJS - Кастомные торговцы для KubeJS

MerchantJS - Кастомные торговцы для KubeJS

MerchantJS - аддон для KubeJS, позволяющий создавать кастомные сделки с любыми мобами и блоками в Майнкрафт. Настройте нестандартных торговцев и систему прогрессии.

Оцените первым
23.3K
1

MerchantJS - аддон для KubeJS, который решает давнюю проблему создания кастомных торговцев в Майнкрафт. В ванильном Minecraft торговля жестко привязана к жителям (виллагерам) и их профессиям. Хочешь, чтобы игрок торговал со статуей? Или чтобы босс предлагал обмен после победы? Раньше приходилось городить сложные команды или писать свои моды. Теперь все решается парой строк JavaScript.

Торговля где угодно и с чем угодно

По факту, мод позволяет открыть интерфейс торговли с любым объектом. Хоть с куском эндерняка, хоть с зачарованным золотым яблоком, хоть просто из воздуха. Вот рабочий пример, как заставить свинью торговать:

javascript // server_scripts ItemEvents.entityInteracted(event => { // Проверяем, свинья ли это if (event.getTarget().type === "minecraft:pig") { // Создаем полноценную сделку с двумя предметами на входе let offer0 = MerchantJSUtils.createMerchantOffer({ buy: Item.of("minecraft:potato").toNBT(), buyB: Item.of("minecraft:bread").toNBT(), sell: Item.of("minecraft:stone").toNBT(), uses: 0, maxUses: 50, xp: 5, priceMultiplier: 0, demand: 0 }); // Создаем простую сделку let offer1 = MerchantJSUtils.createMerchantOffer({ buy: Item.of("minecraft:beef").toNBT(), sell: Item.of("minecraft:egg").toNBT() }); // Открываем кастомное меню торговли MerchantJSUtils.openMerchant( event.player, Component.translatable("Little Piggy's Cartoon House"), [offer0, offer1] ); } });

Короче, кликаешь по свинье - открывается GUI с названием "Little Piggy's Cartoon House". Внутри - твои кастомные предложения. Удобно для сюжетных карт, RPG-сборок модов и адвенчур, где стандартные жители не вписываются в лор.

Настройка сделок: разбираем параметры

Чтобы сделать сложную экономику, нужно понимать, что вообще можно настроить. Вот полный список параметров для createMerchantOffer:

javascript let offer0 = MerchantJSUtils.createMerchantOffer({ buy: Item.of("minecraft:potato").toNBT(), // Первый предмет на вход (обязательно) buyB: Item.of("minecraft:bread").toNBT(), // Второй предмет на вход (необязательно) sell: Item.of("minecraft:stone").toNBT(), // Предмет на выход (обязательно) uses: 0, // Сколько раз использовали (по умолчанию 0) maxUses: 50, // Лимит использований (по умолчанию 99) xp: 5, // Сколько опыта даст сделка (по умолчанию 0) priceMultiplier: 0, // Множитель цены (по умолчанию 0) demand: 0 // Начальный спрос (по умолчанию 0) });

Тут есть одна хитрая фишка. Если поставить maxUses на 0, сделка станет недоступной (заблокируется). Это круто для систем прогрессии - показал игроку крутой меч, но он серый, пока не выполнен квест.

А чтобы это выглядело естественно, используем клиентское событие:

javascript // client_scripts MerchantEvents.switchTrade(event => { if (event.titleKey == "Little Piggy's Cartoon House") { // Проверяем окно торговли (работает и с ванильными жителями!) if (event.getOffer().getMaxUses() == 0) { Client.player.tell("Эта сделка заблокирована..."); } } });

Так можно гибко включать и выключать сделки. Идеально для поэтапного прохождения.

Совместимость с ванилью и сохранение данных

Важно понимать: MerchantJS не пытается переизобрести экономику Майнкрафт. Он дает инструмент для легкого создания самих сделок. А вот такие штуки, как восстановление запасов (ресток), колебания цен или спрос - это уже придется реализовывать самому через скрипты.

Совет от практика: каждый вызов openMerchant создает предложения заново. Если тебе нужно хранить инфу о том, сколько раз игрок уже купил зелье у кастомного НПС, используй persistentData из KubeJS. Это нативный механизм сохранения данных, который не вызывает лагов и не ломает мир при удалении мода.

А вот событие afterTrade срабатывает после любой сделки, включая ванильные:

javascript // server_scripts MerchantEvents.afterTrade(event => { event.player.tell(Спасибо за покупку ${event.getOffer().result.id}! Заходи еще!); event.player.addXP(event.getOffer().xp); });

Отличное место, чтобы выдать кастомный опыт или запустить тригггер для квеста. Что касается рестока - просто проверяй временные интервалы при каждом открытии окна торговли.

Итог

Скачайте MerchantJS, если делаете свой сервер на KubeJS и хотите гибкую систему бартера без ограничений ванильных жителей. Мод работает на Fabric, Forge, NeoForge и Quilt (в зависимости от того, какая версия KubeJS у вас установлена для нужной версии Minecraft). С ним создание уникальных торговцев занимает минуты, а не часы копания в исходном коде.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.20.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Ссылки

Детали

Лицензия:
Опубликован:10 месяцев назад
Обновлён:10 месяцев назад
Главная