Плагин на голоса 🗳️
Награды за голосование: подключение Votifier и разбор ошибок.
Как это работает
Игрок голосует за ваш сервер на МайнСтат — мы тут же отправляем на сервер зашифрованный пакет с его ником. Плагин расшифровывает пакет своим приватным ключом и выдаёт награду.
Работают две связки плагинов, и обе нужны:
- Приёмник голосов — VotifierPlus или NuVotifier. Он слушает порт и принимает пакет.
- Выдача наград — VotingPlugin и подобные. Что именно получит игрок, решает он.
Сам МайнСтат наград не выдаёт и не знает, что вы за голос даёте. Наша задача — доставить голос; всё остальное настраивается на сервере.
Шаг 1. Установите приёмник
Положите jar в plugins и перезапустите сервер. При первом запуске плагин создаст папку rsa с парой ключей — приватный останется на сервере, публичный понадобится нам.
VotifierPlus, файл plugins/VotifierPlus/config.yml:
host: 0.0.0.0
port: 8192
NuVotifier, файл plugins/NuVotifier/config.yml:
host: 0.0.0.0
port: 8192
disable-v1-protocol: false
Два правила, из-за которых чаще всего ничего не работает:
hostдолжен быть 0.0.0.0, а не127.0.0.1. Сlocalhostплагин слышно только с самой машины, снаружи порт закрыт.disable-v1-protocolу NuVotifier — false. МайнСтат отправляет голоса по протоколу v1: его понимают оба плагина, а v2 умеет только NuVotifier.
Порт 8192 — значение по умолчанию, можно любой свободный. Главное, чтобы он был открыт наружу: на VPS в фаерволе, на хостинге — заявкой в поддержку, дома — пробросом через роутер.
Шаг 2. Скопируйте публичный ключ
Откройте plugins/VotifierPlus/rsa/public.key (у NuVotifier — plugins/NuVotifier/rsa/public.key) и скопируйте всё содержимое целиком.
Внутри одна длинная строка вида MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A... — без заголовков и переносов. Так и должно быть: дописывать -----BEGIN PUBLIC KEY----- не нужно, хотя если вставите ключ с заголовками, мы его тоже примем.
Шаг 3. Заполните настройки в панели
Личный кабинет сервера → Настройки → «Награды за голос (Votifier)»:
- Хост — подставляется адрес сервера из карточки. Менять нужно, только если плагин слушает не по этому адресу: например, домен ведёт на анти-DDoS-прокси, а Votifier работает на реальной машине.
- Порт — тот, что указан в конфиге плагина.
- Публичный ключ — содержимое
public.key.
Сохранение сразу проверяет связь и показывает результат.
Шаг 4. Настройте награды
В плагине наград укажите название сайта ровно так:
minestat.ru
Это имя сервиса, которое приходит вместе с голосом. Если в VotingPlugin сайт назван иначе, голоса будут приходить, но плагин не поймёт, за какой сайт награждать.
Проверка связи
Кнопка «Проверить Votifier» отправляет настоящий голос от служебного ника MinestatRU — в логе сервера он виден как обычное голосование. Между проверками пауза 6 секунд.
Одна тонкость протокола: подтверждение приёма присылает только VotifierPlus. NuVotifier по протоколу v1 молчит, хотя голос принимает и награду выдаёт. Поэтому вердикт «отправлено, подтверждения нет» — не поломка: загляните в лог сервера, там должна быть строка о голосе от MinestatRU.
Коды ошибок
| Код | Что значит | Что делать |
|---|---|---|
ACCEPTED |
Сервер принял голос и подтвердил приём | Ничего, всё работает |
NO_ACK |
Голос отправлен, подтверждения нет | Норма для NuVotifier. Проверьте лог сервера: если записи о голосе нет — не совпадает публичный ключ |
DNS_FAILURE |
Домен не отвечает на DNS-запрос | Проверьте имя и его A-запись. Не уверены — впишите IPv4-адрес напрямую |
CONNECT_TIMEOUT |
Сервер не отвечает | Порт закрыт фаерволом либо в конфиге host: 127.0.0.1. Проверьте оба пункта и проброс порта |
CONNECTION_REFUSED |
Порт закрыт или занят | Плагин не запущен (проверьте /plugins) либо в конфиге другой порт |
CONNECTION_RESET |
Соединение оборвано | Так рвёт связь защита от DDoS. Попросите хостинг открыть порт в обход фильтра либо смените порт |
GREETING_TIMEOUT |
Плагин молчит после подключения | Перегрузка сервера или прокси, не пробрасывающий данные. Подождите минуту и повторите |
GREETING_INVALID |
На порту отвечает не Votifier | Указан чужой порт — часто игровой (25565) или веб-сервер (80/443) |
PRIVATE_IP_NOT_ALLOWED |
Адрес из внутренней сети | 10.x, 172.16–31.x, 192.168.x, 127.x недоступны из интернета. Укажите публичный адрес |
KEY_INVALID |
Ключ не разбирается | Скопируйте public.key заново, целиком и без лишних символов |
KEY_SIZE |
Нерабочая длина ключа | Удалите папку rsa, перезапустите сервер, вставьте новый ключ |
RSA_ENCRYPT_FAIL |
Ключ не подходит для шифрования | Обычно это ключ от другого сервера или повреждённый файл |
Частые случаи
Защита от DDoS съедает голоса. Фильтр пропускает подключение и ответ сервера, но режет входящий пакет. В логе плагина видно «Accepted connection» и следом «No vote payload received» — и то же самое происходит у других мониторингов. Лечится открытием порта Votifier в обход фильтра или переносом плагина на порт вне игрового диапазона.
Сервер за прокси или BungeeCord. Домен ведёт на прокси, а Votifier стоит на бэкенд-сервере. Укажите в поле хоста реальный адрес машины с плагином.
Кириллический домен. Адреса вида сервер.рф не работают — ни у нас, ни в мониторинге онлайна. Используйте латинское имя или IP-адрес.
Votifier сам отключился. Три неудачные отправки подряд гасят доставку: сервер, который не принимает голоса, не должен приносить баллы престижа. Почините связь и нажмите «Проверить Votifier» — доставка включится обратно. Раз в сутки мы сами проверяем, жив ли порт, и снимаем блокировку, если сервер вернулся.
Что это даёт серверу
Подтверждённый Votifier приносит баллы престижа — они учитываются в обоих рейтингах. Баллы держатся, пока связь работает: пропала связь — пропали и баллы, поэтому чинить стоит сразу.