Как Votifier доставляет голос
- Игрок голосует за твой сервер в списке.
- Список открывает TCP-подключение к твоему серверу на порт Votifier и отправляет ник игрока, своё имя сервиса, адрес и метку времени.
- NuVotifier проверяет сообщение (RSA-ключ для v1, токен для v2) и вызывает событие голоса.
- Плагин наград, например VotingPlugin, слушает это событие и выдаёт награду.
Сам NuVotifier ничего не выдаёт. Он поставляется без слушателей, так что для наград всегда нужен второй плагин.
Шаг 1: установи NuVotifier на Paper или Spigot
Положи JAR NuVotifier в папку plugins и один раз запусти сервер. Он создаст конфиг, пару RSA-ключей и токен. При первом запуске консоль выводит токен: Your default NuVotifier token is ….
host: 0.0.0.0
port: 8192
disable-v1-protocol: false
tokens:
default: <generated token>
forwarding:
method: none
pluginMessaging:
channel: nuvotifier:voteshost– адрес, на котором слушает NuVotifier. По умолчанию он берёт IP, на который настроен твой сервер, или0.0.0.0для всех интерфейсов.port– порт Votifier, по умолчанию8192. Это не должен быть порт Minecraft.tokens.defaultиспользуется для всех списков, если ты не добавишь токен под именем сервиса конкретного списка.- Ключи для v1 создаются в
plugins/Votifier/rsa/какpublic.keyиprivate.key.
Шаг 2: сделай порт доступным
Списки подключаются из интернета, поэтому порт Votifier должен быть открыт для входящих TCP-подключений. Именно здесь ломается большинство настроек.
- Обычный хостинг: многие панели открывают только игровой порт. Добавь в панели дополнительный порт и впиши ровно это число в
port. Некоторые хостеры назначают номер сами. - Свой VPS или выделенный сервер: разреши порт в файрволе, например
ufw allow 8192/tcp. - Дома: пробрось порт в роутере на машину, где работает сервер.
После изменения конфига перезапусти сервер. У NuVotifier есть и команда /nvreload, которая работает из консоли.
Шаг 3: выбери v1 (публичный ключ) или v2 (токен)
| Протокол v1 | Протокол v2 | |
|---|---|---|
| Секрет | Пара RSA-ключей | Общий токен |
| Что нужно списку | Содержимое rsa/public.key | Токен из tokens.default |
| Поддержка | Классический Votifier; его понимает большинство списков | NuVotifier и списки, которые его поддерживают |
Никому не давай private.key. Если список поддерживает v2, токен – более простой вариант: одна строка, никакого файла ключа. BestMCServerList поддерживает оба, так что выбирай, что нравится, на своей странице Votifier.
На одиночном сервере оставь disable-v1-protocol: false. Сам NuVotifier предупреждает, что многие списки понимают только v1.
Шаг 4: сети на Velocity или BungeeCord
В сети серверов список подключается к прокси. NuVotifier работает на прокси и пересылает голоса на бэкенд-серверы, где стоит плагин наград. Для большинства сетей вики NuVotifier рекомендует plugin messaging.
Прокси (Velocity)
host = "0.0.0.0"
port = 8192
disable-v1-protocol = false
[tokens]
default = "<generated token>"
[forwarding]
method = "pluginMessaging"
[forwarding.pluginMessaging]
channel = "nuvotifier:votes"
cache = "file"В BungeeCord те же ключи лежат в plugins/NuVotifier/config.yml в формате YAML. cache = "file" сохраняет голоса игроков, которые офлайн, и доставляет их позже.
Каждый бэкенд-сервер (Paper)
port: -1
forwarding:
method: pluginMessaging
pluginMessaging:
channel: nuvotifier:votesport: -1 отключает слушатель на бэкенде, так что голоса получает только прокси. Убедись, что бэкенды доступны только через прокси, иначе кто-нибудь сможет слать фейковые голоса.
Другой вариант, method = "proxy", отправляет голоса с прокси на порт NuVotifier каждого бэкенда, который настраивается адресом, портом и токеном для каждого сервера в [forwarding.proxy.<name>]. У него нет кэша голосов, поэтому plugin messaging обычно подходит лучше.
Шаг 5: введи данные и отправь тестовый голос
- Сначала проверь локально:
/testvote Steve serviceName=BestMCServerListна Paper или/ptestvoteс теми же аргументами на прокси. Если плагин наград реагирует, внутренняя часть работает. - На BestMCServerList открой свой сервер в панели и перейди в Votifier. Введи публичный адрес сервера или прокси, порт и токен (v2) или публичный ключ (v1), потом сохрани.
- Нажми Отправить тестовый голос. Мы отправим голос от
TestVote, который не учитывается в рейтинге, и лог доставки за несколько секунд покажет, дошёл ли он.
Голоса от BestMCServerList приходят с именем сервиса BestMCServerList. Игроки Bedrock, которые заходят через Geyser и Floodgate, голосуют с ником с префиксом, например .Steve, и этот ник доходит до NuVotifier без изменений. С каждого ника Minecraft можно голосовать за сервер раз в календарный день по времени Europe/Berlin.
Ещё не в списке? Сначала добавь свой сервер, а потом возвращайся к этому шагу.
Частые ошибки и их решение
| Проблема | Что проверить |
|---|---|
| Connection refused | NuVotifier не запущен или слушает другой порт. Сравни порт в конфиге с тем, что ты ввёл. |
| Timed out | Файрвол или хостинг отбрасывает трафик. Открой порт для TCP или попроси у хостера дополнительный порт. |
| Тест доходит, а игроки ничего не получают | Нет плагина наград. В консоли пишется A vote was received, but you don't have any listeners available to listen for it. |
| Голос отклонён в v2 | Токен не совпадает. Скопируй tokens.default заново, без пробелов и кавычек. |
| На прокси работает, на бэкенде нет | На бэкенде не выставлен pluginMessaging или названия каналов различаются. |
| Введён не тот порт | Вместо NuVotifier отвечает порт Minecraft. Используй порт Votifier. |
Когда голоса начнут приходить, настрой награды: наш гайд награды за голоса с VotingPlugin разбирает имя сервиса, VoteSites.yml и дневные лимиты. Общая картина – в гайде как найти игроков для нового сервера.