ДОКУМЕНТАЦИЯ
ПЛАГИН · § 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/plugin/releases/latest/download/FreshDonate.jar
mv FreshDonate.jar /path/to/server/plugins/
Если предпочитаешь собрать сам:
SHELL
git clone https://github.com/Fresh-Donate/plugin.git
cd 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.