ДОКУМЕНТАЦИЯ

ПЛАГИН · § 011

Настройка автоматической выдачи

Плагин подключается к backend, опрашивает очередь доставок и выполняет нужные команды прямо в консоли сервера. RCON - отправляет команды сразу.

Paper / Spigot 1.13+Java 8+Kotlin · Bukkit API~3 минуты установка

§ 011.01

Что делает плагин

Один JAR, который превращает оплаченную покупку в реальный предмет/привилегию на сервере

  1. 01 -

    Раз в N секунд (по умолчанию 10s) плагин ходит на /plugin/deliveries/pending и спрашивает "есть что выдать?"

  2. 02 -

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

  3. 03 -

    На PlayerJoinEvent проверяет очередь - через 2 секунды после захода игрока выдаёт всё что накопилось.

  4. 04 -

    После выдачи рапортует результат в /plugin/deliveries/:id/result - успех или лог каждой команды. Платёж в панели переходит в статус delivered.

§ 011.02

Шаг 01 — Получить API-ключ

Без ключа плагин получит 401/403 от бекенда и ничего не выдаст

  1. 1. Открой админ-панель - Настройки - раздел Плагин.
  2. 2. Нажми "Сгенерировать токен" - появится длинная случайная строка. Скопируй.
  3. 3. Этот токен - секрет. Не коммить его в git, не показывай в стримах.

※ Токен можно перевыпустить в любой момент - старый сразу перестанет работать. Полезно если он утёк.

§ 011.03

Шаг 02 — Скачать JAR

Готовая сборка лежит в 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

Шаг 03 — Настроить config.yml

Три поля: 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

Шаг 04 — Проверка подключения

Убедимся что плагин видит бекенд и ключ принят

Зайди на сервер с правами оператора и выполни:

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

Альтернатива — RCON без плагина

Если не хочется ставить JAR на сервер

Backend умеет выдавать покупки сам через RCON-протокол ванильного Minecraft. Это режим "push" вместо "pull" - backend сам стучится в сервер при оплате, без опроса и плагина.

ПЛАГИН (РЕКОМЕНДУЕТСЯ)

Pull через HTTPS

  • ✓ Не нужно открывать порт RCON наружу
  • ✓ Работает за NAT и firewall
  • ✓ Очередь для офлайн-игроков
  • ✓ Подробные логи каждой команды

RCON

Push через TCP

  • ✓ Не нужен JAR на сервере
  • ✗ Backend должен видеть IP/порт сервера
  • ✗ Сам ванильный RCON слабее по логам
  • ✗ Нужно открывать порт (или VPN)

Включить RCON-режим: в админ-панели - Настройки - RCON - указать хост, порт и пароль. Затем у каждого товара выбрать "Доставка через RCON" вместо "Плагин".

※ Можно совмещать: на одном сервере плагин для онлайн-выдачи, на другом - RCON для редких товаров без офлайн-очереди.

§ 011.10

Что дальше

Плагин подключен и готов выдавать

※ Что-то не выдаётся, плагин ругается, не видит API? Логи плагина - в logs/latest.log сервера, ищи строки с FreshDonate. Если не помогает - пиши в Telegram @zWork1.

FreshDonate