ДОКУМЕНТАЦИЯ
ПЛАГИН · § 011
Плагин подключается к backend, опрашивает очередь доставок и выполняет нужные команды прямо в консоли сервера. RCON - отправляет команды сразу.
§ 011.01
Один JAR, который превращает оплаченную покупку в реальный предмет/привилегию на сервере
Раз в N секунд (по умолчанию 10s) плагин ходит на /plugin/deliveries/pending и спрашивает "есть что выдать?"
Если игрок онлайн - сразу выполняет команды товара через консоль. Если офлайн и товар требует онлайна - кладёт в очередь и ждёт логина.
На PlayerJoinEvent проверяет очередь - через 2 секунды после захода игрока выдаёт всё что накопилось.
После выдачи рапортует результат в /plugin/deliveries/:id/result - успех или лог каждой команды. Платёж в панели переходит в статус delivered.
§ 011.02
Без ключа плагин получит 401/403 от бекенда и ничего не выдаст
※ Токен можно перевыпустить в любой момент - старый сразу перестанет работать. Полезно если он утёк.
§ 011.03
Готовая сборка лежит в Releases на Github
Скачай последний релиз и закинь его в папку plugins/ своего Minecraft-сервера:
SHELL
wget https://github.com/Fresh-Donate/fresh-donate-plugin/releases/latest/download/FreshDonate.jar
mv FreshDonate.jar /path/to/server/plugins/
Если предпочитаешь собрать сам:
SHELL
git clone https://github.com/Fresh-Donate/fresh-donate-plugin.git
cd fresh-donate-plugin
./gradlew shadowJar
# готовый JAR появится в build/libs/
※ Перезапусти сервер после копирования JAR - плагин подгрузится и создаст дефолтный plugins/FreshDonate/config.yml.
§ 011.04
Три поля: URL бекенда, API-ключ, интервал опроса
Открой plugins/FreshDonate/config.yml и заполни:
plugins/FreshDonate/config.yml
# FreshDonate Plugin Configuration api: # URL вашего FreshDonate Backend API url: "https://api.your-domain.com" # API-ключ из админ-панели - Настройки - Плагин apiKey: "вставь-сгенерированный-токен" # Как часто плагин опрашивает API (в секундах) pollInterval: 10
api.url
Полный URL твоего backend, без слэша на конце. На проде - HTTPS-домен из WEBHOOK_BASE_URL в .env бекенда.
api.apiKey
Токен из шага 01. Передаётся в заголовке X-Api-Key с каждым запросом плагина.
api.pollInterval
Секунды между запросами в API. Дефолт 10 - комфортный баланс между скоростью выдачи и нагрузкой. Меньше 5 ставить не стоит.
※ После правки конфига выполни /fd reload - не нужно перезапускать сервер.
§ 011.05
Убедимся что плагин видит бекенд и ключ принят
Зайди на сервер с правами оператора и выполни:
MINECRAFT CHAT
/fd test
Возможные ответы:
✓ успешно
Плагин достучался до бекенда и ключ принят. Можно делать пробную покупку.
✗ не удалось
Проверь api.url (должен быть достижим с сервера Minecraft) и api.apiKey (нет ли пробелов / кавычек внутри). Логи плагина - в logs/latest.log.
§ 011.06
Все требуют права freshdonate.admin (по умолчанию - только OP)
/fd status
Текущий URL бекенда, интервал опроса, сколько доставок ждут офлайн-игроков и кого именно.
/fd test
Проверка подключения к API. Отвечает "успешно" или "не удалось - проверь url и apiKey".
/fd poll
Принудительный опрос API прямо сейчас, не дожидаясь следующего тика. Полезно после ручной правки в панели.
/fd reload
Перечитать config.yml без перезапуска сервера. Применяет новый URL/ключ/интервал.
※ Алиас: /freshdonate работает идентично /fd.
§ 011.07
Плагин подставит их перед выполнением - пиши шаблоны в админ-панели
В админ-панели у каждого товара есть список команд, которые выполнятся при выдаче. Туда можно вставлять плейсхолдеры:
{player}
Ник игрока-получателя (так, как он указал на витрине магазина).
{amount}
Количество единиц товара с учётом userSelectedCount. Например, если купили "10 алмазов × 3" → 30.
{product}
Название товара из админ-панели - удобно для логов или broadcast-команд.
Пример набора команд для товара "VIP-привилегия + 1000 рублей в игре":
ПРИМЕР
lp user {player} parent set vip
eco give {player} {amount}
broadcast {player} только что купил {product}!
※ Команды выполняются от имени консоли, так что можно использовать любые админские команды любых плагинов.
§ 011.08
Что делать если у тебя сервер с регистрацией или если игрок ушёл сразу после покупки
У каждого товара в админке есть флаг forceDelivery:
выключен (по умолчанию)
Если игрок офлайн - покупка ждёт его в очереди плагина. Команды выполнятся через 2 секунды после захода. Идеально для команд типа give, tp, которые требуют живого игрока.
включен
Плагин выполнит команды сразу, даже если игрока нет на сервере. Подходит для команд через LuckPerms (lp user X parent set vip), которые работают с офлайн-данными игрока.
§ 011.09
Если не хочется ставить JAR на сервер
Backend умеет выдавать покупки сам через RCON-протокол ванильного Minecraft. Это режим "push" вместо "pull" - backend сам стучится в сервер при оплате, без опроса и плагина.
ПЛАГИН (РЕКОМЕНДУЕТСЯ)
Pull через HTTPS
RCON
Push через TCP
Включить RCON-режим: в админ-панели - Настройки - RCON - указать хост, порт и пароль. Затем у каждого товара выбрать "Доставка через RCON" вместо "Плагин".
※ Можно совмещать: на одном сервере плагин для онлайн-выдачи, на другом - RCON для редких товаров без офлайн-очереди.
§ 011.10
Плагин подключен и готов выдавать
※ Что-то не выдаётся, плагин ругается, не видит API? Логи плагина - в logs/latest.log сервера, ищи строки с FreshDonate. Если не помогает - пиши в Telegram @zWork1.