Мы используем файлы cookie, чтобы вам было удобнее пользоваться нашим сайтом. Продолжая использование сайта, вы соглашаетесь с использованием файлов cookie и политикой конфиденциальности.

Перейти к содержимому

Плагин на голоса 🗳️

Награды за голосование: подключение Votifier и разбор ошибок.

Как это работает

Игрок голосует за ваш сервер на МайнСтат — мы тут же отправляем на сервер зашифрованный пакет с его ником. Плагин расшифровывает пакет своим приватным ключом и выдаёт награду.

Работают две связки плагинов, и обе нужны:

  1. Приёмник голосовVotifierPlus или NuVotifier. Он слушает порт и принимает пакет.
  2. Выдача наград — 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 приносит баллы престижа — они учитываются в обоих рейтингах. Баллы держатся, пока связь работает: пропала связь — пропали и баллы, поэтому чинить стоит сразу.