Магазин мебели FreeMinecraftModels
FreeMinecraftModels поставляется с опциональным магазином на базе Vault, в котором игроки могут покупать крафтящиеся реквизиты за внутриигровую валюту. Магазин отключён по умолчанию — он регистрируется только когда явно включён и доступен экономический провайдер Vault.
Быстрая настройка
- Установите Vault и совместимый с Vault экономический провайдер (EssentialsX, CMI и т. п.).
- Запустите сервер один раз, чтобы создался
plugins/FreeMinecraftModels/shop_config.yml. - Установите
enabled: trueвshop_config.yml. - Перезапустите сервер (магазин регистрируется при старте).
- Выполните
/fmm shopв игре, чтобы убедиться, что меню открывается.
Если хотя бы одно из этих условий отсутствует, команда /fmm shop остаётся незарегистрированной, и игроки видят ошибку «нет такой команды», а не настраиваемое сообщение об отключении.
Как это работает
- Магазин читает рецепты из
plugins/FreeMinecraftModels/recipes/. - В магазин попадает каждый рецепт, у которого
isEnabled: trueиshopEnabled: true. - Каждая запись показывает итоговый предмет рецепта (бумажный предмет размещения реквизита) с двумя добавленными строками lore: строкой
Price:и подсказкойClick to purchase. - Клик по записи вызывает
PurchaseHandler, который проверяет баланс игрока через Vault, списывает цену и выдаёт игроку предмет размещения. Предметы, не помещающиеся в инвентарь, роняются под ноги игроку.
Права
| Право | По умолчанию | Описание |
|---|---|---|
freeminecraftmodels.shop | true | Требуется для открытия магазина. По умолчанию true, чтобы каждый игрок мог смотреть |
Одно лишь это право не включает магазин — всё равно требуется enabled: true в shop_config.yml и рабочий экономический провайдер.
shop_config.yml
См. страницу конфигурации для полной справки по ключам. Основные ключи:
enabled— главный переключатель (по умолчаниюfalse)defaultPrice— записывается в файлы рецептов, у которых не задано собственноеshopPricemenuTitle,priceLoreFormat,clickToBuyLoreFormat— визуальный стильmessages.*— пять настраиваемых сообщений обратной связи
Все строки сообщений поддерживают цветовые коды & и плейсхолдеры, перечисленные в справке по конфигурации.
Поля в рецептах
Каждый рецепт в plugins/FreeMinecraftModels/recipes/<model_id>.yml несёт два специфичных для магазина поля:
isEnabled: true
model_id: "wooden_chair"
shape:
- "L L"
- "LLL"
- "L L"
ingredients:
L: OAK_LOG
shopEnabled: true
shopPrice: 250.0
| Поле | По умолчанию | Поведение |
|---|---|---|
shopEnabled | true | Когда false, рецепт по-прежнему крафтится, но никогда не появляется в /fmm shop |
shopPrice | defaultPrice из shop_config.yml | Стоимость в валюте Vault при клике игрока по предмету |
Конструктор /fmm craftify записывает оба поля при сохранении, так что настройка цены сводится к правке текста в файле рецепта и последующему /fmm reload.
Исходы покупки
PurchaseHandler различает пять исходов. Каждому соответствует настраиваемое сообщение в shop_config.yml:
| Исход | Срабатывает когда | Ключ сообщения |
|---|---|---|
SUCCESS | Списание прошло успешно и предмет поместился в инвентарь | messages.purchaseSuccess |
SUCCESS_WITH_OVERFLOW | Списание прошло успешно, но предмет пришлось бросить под ноги игроку | messages.purchaseSuccess + messages.inventoryFull |
INSUFFICIENT_FUNDS | Баланс игрока ниже цены или базовый экономический провайдер отклонил списание | messages.insufficientFunds |
NOT_FOR_SALE | Рецепт отключён или shopEnabled: false | messages.itemNotForSale |
SHOP_DISABLED | Принудительно отключён во время работы (например, пропал экономический провайдер) | messages.shopDisabled |
Решение проблем
/fmm shop не существует.
Магазин не зарегистрирован. Проверьте все три условия:
- Установлен Vault
- Зарегистрирован экономический провайдер (выполните
/balanceили/eco, чтобы убедиться, что провайдер отвечает) enabled: trueвshop_config.yml
Затем перезапустите сервер. Команда регистрируется только при старте.
В меню отсутствуют предметы, которые я ожидаю увидеть.
Откройте файл рецепта в plugins/FreeMinecraftModels/recipes/. Убедитесь, что isEnabled и shopEnabled оба равны true. После правки выполните /fmm reload.
С игроков списывают валюту, но они не получают предмет.
Проверьте консоль сервера на ошибки Vault. Обработчик списывает валюту только после успешной проверки баланса, но downstream-провайдер экономики всё равно может отклонить само списание — обработчик ловит это и возвращает INSUFFICIENT_FUNDS. Если списание прошло, но предмет так и не появился, заведите баг-репорт с полным логом консоли в момент клика.