UnicoreCMS

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 не умеет, а команды придётся описать шаблонами.

Содержание