ShopGUI+ и экономика сервера: магазины и Vault
Настройка ShopGUI+ и Vault-экономики на Minecraft сервере: shops.yml, цены, категории, PlaceholderAPI и частые ошибки.
Кратко: ShopGUI+ - самый популярный GUI-магазин для Minecraft, работает через Vault. Установите Vault + EssentialsX (или CMI), настройте shops.yml с ценами и категориями - и игроки смогут покупать и продавать предметы прямо из красивого меню.
ShopGUI+ и экономика сервера: магазины и Vault
Экономика - одна из главных механик выживания и RPG-серверов. Без нормального магазина игроки не знают, куда тратить монеты, а без валюты - нет смысла фармить ресурсы. ShopGUI+ решает обе проблемы сразу: плагин предоставляет наглядный GUI-магазин с поддержкой категорий, цен и персональных скидок. Но сам по себе он не умеет считать деньги - это задача Vault и экономического плагина. В этой статье разберём весь стек с нуля: от установки Vault до тонкой настройки shops.yml и интеграции с PlaceholderAPI.
Pterohost - игровой хостинг с NVMe-дисками, DDoS-защитой и поддержкой 24/7, идеально подходит для серверов с плагинной экономикой. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг
Как работает стек Vault + EssentialsX + ShopGUI+
Прежде чем тратить время на настройку, важно понять архитектуру. Три плагина образуют цепочку:
- EssentialsX (или CMI) - хранит баланс каждого игрока в своей базе данных и регистрирует провайдера экономики.
- Vault - API-прослойка. Он не хранит деньги сам, но предоставляет единый интерфейс для любых плагинов, которым нужно работать с балансом.
- ShopGUI+ - общается с Vault через его API. Когда игрок покупает предмет, ShopGUI+ вызывает Vault, Vault обращается к EssentialsX и списывает деньги.
Схема выглядит так:
ShopGUI+ -> Vault API -> EssentialsX Economy
Если убрать любое звено - система сломается. Именно поэтому типичная ошибка “ShopGUI+ не видит экономику” почти всегда означает отсутствие Vault или то, что EssentialsX не зарегистрировал свой провайдер (например, из-за ошибки при загрузке).
Поддерживаемые экономические плагины
| Плагин | Vault | Несколько валют | Рекомендация |
|---|---|---|---|
| EssentialsX | да | нет | лучший выбор для большинства |
| CMI | да | ограничено | для серверов с CMI-оберткой |
| iConomy 6 | да | нет | устарел |
| TheNewEconomy | да | да | для сложных серверов |
Установка Vault и EssentialsX
Шаг 1 - скачать плагины
Vault: github.com/MilkBowl/Vault/releases EssentialsX: essentialsx.net ShopGUI+: spigotmc.org/resources/shopgui
Положите все три jar-файла в папку plugins/.
Шаг 2 - порядок загрузки
Vault должен загружаться до EssentialsX и ShopGUI+. В большинстве случаев это происходит автоматически - Vault прописывает softdepend в plugin.yml других плагинов. Но если порядок нарушен, добавьте в spigot.yml:
# Это не настоящий параметр spigot.yml, порядок управляется через plugin.yml плагинов
# Vault сам прописывает зависимости - просто убедитесь, что все три jar в одной папке
Проверка после запуска - в консоли должны появиться строки:
[Vault] Economy plugin found: EssentialsX
[ShopGUI+] Economy handler found: Vault
Шаг 3 - проверка через команду
Зайдите на сервер и выполните:
/vault-info
Вывод покажет, какая экономика зарегистрирована и версию Vault.
Структура конфига ShopGUI+
После первого запуска ShopGUI+ создаёт несколько файлов в plugins/ShopGUIPlus/:
plugins/ShopGUIPlus/
config.yml - основные настройки плагина
shops.yml - описание всех категорий и предметов
prices/ - опциональные файлы динамических цен (в новых версиях)
config.yml - ключевые параметры
# plugins/ShopGUIPlus/config.yml (фрагмент)
# Валюта
currencySymbol: "$"
# Формат отображения баланса
economyResponse:
insufficientFunds: "&cНедостаточно средств! Нужно: {price}"
notEnoughItems: "&cУ вас нет {amount}x {item} для продажи!"
# Звуки при покупке/продаже
sounds:
buy:
enabled: true
sound: ENTITY_EXPERIENCE_ORB_PICKUP
sell:
enabled: true
sound: ENTITY_ITEM_PICKUP
# Подтверждение покупки
confirmationGUI:
enabled: true
title: "Подтвердить покупку?"
Настройка shops.yml - категории и предметы
Это самый важный файл. Вся структура магазина описывается именно здесь.
Базовая структура категорий
# plugins/ShopGUIPlus/shops.yml
shops:
# --- Категория "Блоки" ---
blocks:
name: "&6Блоки"
item:
typeData: GRASS_BLOCK
slot: 0 # позиция иконки в главном меню (0-53)
permission: "" # пусто = доступно всем
rows: 4 # строк в GUI категории (1-6)
items:
1:
item:
typeData: STONE
buyPrice: 5
sellPrice: 2
slot: 0
2:
item:
typeData: OAK_LOG
quantity: 1
buyPrice: 10
sellPrice: 4
slot: 1
3:
item:
typeData: DIAMOND
buyPrice: 200
sellPrice: 80
slot: 2
# --- Категория "Еда" ---
food:
name: "&aЕда"
item:
typeData: BREAD
slot: 1
rows: 3
items:
1:
item:
typeData: BREAD
quantity: 16
buyPrice: 30
sellPrice: 10
slot: 0
2:
item:
typeData: COOKED_BEEF
quantity: 8
buyPrice: 50
sellPrice: 20
slot: 1
Параметры предмета
| Параметр | Тип | Описание |
|---|---|---|
| typeData | строка | ID предмета из Bukkit Material |
| quantity | число | количество в стопке (default 1) |
| buyPrice | число | цена покупки игроком (double) |
| sellPrice | число | цена продажи серверу (-1 = запрещена) |
| slot | число | позиция в GUI категории (0-53) |
| permission | строка | право для доступа к предмету |
| enchantments | список | зачарования предмета |
| name | строка | кастомное название в GUI |
Добавление зачарованных предметов
items:
10:
item:
typeData: DIAMOND_SWORD
quantity: 1
name: "&bМеч силы"
enchantments:
- DAMAGE_ALL:3 # Sharpness III
- FIRE_ASPECT:1 # Fire Aspect I
buyPrice: 2500
sellPrice: -1 # нельзя продать
slot: 9
permission: "shopgui.vip"
Предметы с кастомными NBT (для совместимости с другими плагинами)
ShopGUI+ (версия 1.77+) поддерживает покупку предметов с customModelData:
items:
20:
item:
typeData: PAPER
customModelData: 1001
name: "&dТокен"
buyPrice: 100
sellPrice: 50
slot: 18
Права доступа и LuckPerms
ShopGUI+ использует гранулярную систему прав. Базовые:
shopguiplus.shop - открыть магазин (/shop)
shopguiplus.buy - покупать предметы
shopguiplus.sell - продавать предметы
shopguiplus.sell.all - команда /sell all
shopguiplus.sell.hand - продать предмет в руке
Права для конкретных категорий формируются автоматически по ключу категории в shops.yml:
shopguiplus.shop.blocks - доступ к категории "blocks"
shopguiplus.shop.food - доступ к категории "food"
Назначение через LuckPerms:
/lp group default permission set shopguiplus.shop true
/lp group default permission set shopguiplus.buy true
/lp group default permission set shopguiplus.sell true
/lp group vip permission set shopguiplus.shop.vip true
Интеграция с PlaceholderAPI
PlaceholderAPI позволяет выводить баланс игрока в чат-плагинах, табе, scoreboard и других местах.
Установка расширения Vault для PAPI
/papi ecloud download Vault
/papi reload
После этого доступны плейсхолдеры:
| Плейсхолдер | Описание |
|---|---|
| %vault_eco_balance% | баланс числом (1234.56) |
| %vault_eco_balance_formatted% | форматированный (1,234.56) |
| %vault_eco_balance_fixed% | без дробной части (1234) |
Пример использования в плагине TAB (скорборд):
# config.yml TAB
scoreboard:
title: "&6&lМой сервер"
lines:
- ""
- "&fБаланс: &a%vault_eco_balance_formatted%$"
- ""
Плейсхолдеры ShopGUI+
Начиная с ShopGUI+ 1.70+ плагин сам регистрирует плейсхолдеры через PAPI:
%shopguiplus_itemPrice_buy_STONE% - цена покупки камня
%shopguiplus_itemPrice_sell_STONE% - цена продажи камня
Это удобно для динамических табличек в игре или holograms.
Типичные ошибки и их решение
Ошибка 1 - “No economy plugin found”
ShopGUI+ не видит экономику. Диагностика:
# Проверить, что Vault загружен
# В консоли после старта сервера должна быть строка:
# [Vault] Enabling Vault v1.7.3-b131
# Если строки нет - Vault.jar отсутствует или повреждён
ls plugins/ | grep -i vault
Решение: убедитесь, что Vault.jar и EssentialsX.jar оба в plugins/, затем полностью перезапустите сервер (не reload).
Ошибка 2 - предметы не отображаются в GUI
Причина чаще всего в опечатке в typeData. Material-имена чувствительны к регистру и должны совпадать с Bukkit API для вашей версии Minecraft.
# Неправильно (Minecraft 1.19+):
typeData: log # устаревшее имя
# Правильно:
typeData: OAK_LOG
Список актуальных Material для 1.21: hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
Ошибка 3 - дублирующиеся слоты (slot conflict)
Если два предмета занимают один slot, ShopGUI+ покажет только один из них (случайный). Следите за уникальностью слотов в каждой категории.
# Быстрая проверка через grep (в терминале сервера)
grep -n "slot:" plugins/ShopGUIPlus/shops.yml
Ошибка 4 - цены с плавающей точкой
YAML может неправильно распарсить цену 1.5 как строку в некоторых конфигах. Всегда явно пишите дробные цены:
buyPrice: 1.5 # OK в большинстве версий
sellPrice: 0.75 # OK
# Если плагин ругается - используйте целые числа или формат "1.50"
Ошибка 5 - sellAll не работает
Команда /sell all требует отдельного права:
/lp group default permission set shopguiplus.sell.all true
Также убедитесь, что в конфиге не отключён sellAll:
# config.yml
sellAll:
enabled: true
Балансировка экономики - практические советы
Неправильно выставленные цены разрушают экономику за первые дни работы сервера. Вот базовые принципы:
Соотношение buy/sell
Цена продажи должна быть ниже цены покупки. Рекомендуемый коэффициент:
sellPrice = buyPrice * 0.4..0.6
Если sellPrice близок к buyPrice или выше - игроки будут бесконечно фармить дюп-машины и скупать предметы в магазине для перепродажи. Это называется “price exploit”.
Таблица ориентировочных цен (для старта)
| Предмет | buyPrice | sellPrice |
|---|---|---|
| Камень (x64) | 32 | 12 |
| Железный слиток | 25 | 10 |
| Золотой слиток | 80 | 30 |
| Алмаз | 300 | 120 |
| Изумруд | 150 | 60 |
| Пшеница (x64) | 20 | 8 |
| Говядина (x16) | 40 | 15 |
Это стартовые значения - их нужно корректировать под вашу специфику (PvP/RP/SMP, ставки опыта, скорость фарма).
Динамические цены (ShopGUI+ Pro)
Платная версия ShopGUI+ поддерживает dynamicPricing - цены меняются в зависимости от количества покупок/продаж за период. Это решает проблему инфляции автоматически:
# shops.yml - динамические цены (только ShopGUI+ Pro)
items:
1:
item:
typeData: DIAMOND
buyPrice: 300
sellPrice: 120
dynamicPricing:
enabled: true
basePrice: 300
floorPrice: 100
ceilingPrice: 1000
decayFactor: 0.95 # каждые X минут без покупок цена откатывается к базовой
Команды для администратора
Полезные команды для управления магазином в живом режиме:
/shop - открыть магазин (для игрока)
/shop <категория> - открыть конкретную категорию
/shopguiplus reload - перезагрузить конфиг без рестарта сервера
/shopguiplus givecredits <игрок> <сумма> - дать деньги игроку (через Vault)
/eco give <игрок> <сумма> - EssentialsX: начислить деньги
/eco take <игрок> <сумма> - EssentialsX: снять деньги
/eco set <игрок> <сумма> - EssentialsX: установить баланс
/balancetop - топ богатых игроков
После редактирования shops.yml не нужен полный рестарт - достаточно /shopguiplus reload.
Связанные материалы
Экономика сервера тесно связана с системой прав и командами для игроков. Подробнее о настройке API-прослойки читайте в статье Vault - плагин для экономики. Команды для управления балансом и инвентарём описаны в EssentialsX: полный список команд. Если вы только подбираете набор плагинов для нового сервера - загляните в наш список лучших плагинов для Minecraft.
Заключение
ShopGUI+ в связке с Vault и EssentialsX - это проверенный стандарт игровой экономики на 2026 год. Схема проста: EssentialsX хранит баланс, Vault предоставляет API, ShopGUI+ рисует интерфейс. Настройка shops.yml занимает несколько часов, но окупается - игроки получают удобный магазин, а вы полный контроль над ценами. Следите за соотношением buy/sell, выдавайте права через LuckPerms, а не вручную, и используйте /shopguiplus reload вместо рестарта для быстрых правок. Если что-то не работает - первым делом проверьте, загружен ли Vault и зарегистрирована ли экономика командой /vault-info.
Pterohost - надёжный хостинг для Minecraft с поддержкой Java Edition, NVMe-хранилищем и круглосуточной технической поддержкой. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг