UnicoreConnect
Что умеет плагин UnicoreConnect и какие ручки за это отвечают
UnicoreConnect — плагин для Spigot/Paper/Sponge, который связывает игровой сервер с сайтом в обе стороны: забирает покупки, синхронизирует экономику, шлёт баны и статистику.
Всё, что он делает, доступно через API. Если плагин вам не подходит, дёргайте те же ручки из своего кода.
Подключение
Выпустите API-ключ с правом kernel.unicore.connect и укажите в разрешённых адресах IP игрового сервера. Ключ и адрес API впишите в конфиг плагина.
Один ключ на сервер
Выписать один ключ на все игровые серверы можно, но удобнее выдать по ключу на сервер: такой отзывается точечно, и в списке разрешённых адресов ровно один IP.
Склад покупок
Игрок купил на сайте, покупка легла на склад, плагин её забрал.
| Метод | Путь | Что делает |
|---|---|---|
GET | /store/warehouse/:uuid/:server | Что лежит на складе у игрока |
POST | /store/warehouse | Отметить позиции выданными |
Плагин получает список, выдаёт предметы в игре и отчитывается о выдаче. Пока отчёт не пришёл, позиция остаётся на складе. Если сервер упадёт посреди выдачи, покупка не потеряется.
Экономика
Внутриигровая валюта хранится на сайте и разложена по серверам.
| Метод | Путь | Что делает |
|---|---|---|
GET | /cabinet/money/user/:server/:uuid | Баланс игрока на сервере |
POST | /cabinet/money/user | Установить баланс |
POST | /cabinet/money/user/deposit | Начислить |
POST | /cabinet/money/user/withdraw | Списать |
GET | /cabinet/money/top/:server | Топ по балансу |
Начислять и списывать отдельными ручками нужно, чтобы не терять деньги при гонках: два одновременных deposit дадут сумму, а два одновременных «установить» — то значение, которое пришло вторым.
Привилегии
| Метод | Путь | Что отдаёт |
|---|---|---|
GET | /donates/groups/user/:server/:uuid | Группы игрока на сервере |
GET | /donates/permissions/user/:server/:uuid | Отдельные права игрока |
Плагин дёргает обе ручки при заходе игрока и выдаёт ему группу.
Баны
| Метод | Путь | Что делает |
|---|---|---|
GET | /bans/:uuid | Активный бан игрока |
POST | /bans | Забанить |
DELETE | /bans/:uuid | Разбанить |
Забанить можно из игры и из админки, список у них общий. В кабинете игрок увидит свой бан с причиной и сроком.
Наигранное время
| Метод | Путь | Что делает |
|---|---|---|
PATCH | /cabinet/playtime | Отправить время пачкой |
GET | /cabinet/playtime/user/:server/:uuid | Время игрока на сервере |
GET | /cabinet/playtime/top/:server | Топ по времени |
PATCH принимает массив, поэтому плагин копит данные и шлёт их пачками, а не по игроку на запрос.
На наигранное время завязана реферальная программа: награду за приглашённого начислят, когда тот наиграет заданный порог.
Товар из игры
POST /store/products/from_gameПлагин отправляет предмет прямо из рук администратора, так что игровой ID и NBT приезжают в каталог готовыми. Руками остаётся вписать цену и картинку.
Так проще всего завести зачарованный сет: набрать такой NBT вручную практически невозможно.
События в реальном времени
Плагин может держать вебсокет-соединение и получать события сразу, не опрашивая API:
| Событие | Когда |
|---|---|
give_group | Игрок купил привилегию |
take_group | Срок привилегии вышел |
give_permission | Куплено отдельное право |
take_permission | Срок права вышел |
События уходят в комнату kernel.unicore.connect, их получают все клиенты с этим правом. Подробнее в разделе Вебсокеты.
Если плагин не подходит
Довести покупку до сервера можно и без него, через RCON: сайт сам выполняет команды в консоли. Работает с любым сервером, ставить на него ничего не надо. Но офлайн-игроков RCON не умеет, а команды придётся описать шаблонами.