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

Настройка NuVotifier на Paper, Velocity и BungeeCord

NuVotifier – это звено между списком серверов и твоим плагином наград: список подключается к нему при каждом голосе, а он передаёт голос плагину, который выдаёт награду. Этот гайд настраивает его на одиночном сервере Paper и в сети на Velocity или BungeeCord, а потом проверяет всё тестовым голосом.

Обновлено:

Как Votifier доставляет голос

  1. Игрок голосует за твой сервер в списке.
  2. Список открывает TCP-подключение к твоему серверу на порт Votifier и отправляет ник игрока, своё имя сервиса, адрес и метку времени.
  3. NuVotifier проверяет сообщение (RSA-ключ для v1, токен для v2) и вызывает событие голоса.
  4. Плагин наград, например VotingPlugin, слушает это событие и выдаёт награду.

Сам NuVotifier ничего не выдаёт. Он поставляется без слушателей, так что для наград всегда нужен второй плагин.

Шаг 1: установи NuVotifier на Paper или Spigot

Положи JAR NuVotifier в папку plugins и один раз запусти сервер. Он создаст конфиг, пару RSA-ключей и токен. При первом запуске консоль выводит токен: Your default NuVotifier token is ….

plugins/Votifier/config.yml
host: 0.0.0.0
port: 8192
disable-v1-protocol: false
tokens:
  default: <generated token>
forwarding:
  method: none
  pluginMessaging:
    channel: nuvotifier:votes
  • host – адрес, на котором слушает 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)

plugins/nuvotifier/config.toml
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)

plugins/Votifier/config.yml
port: -1
forwarding:
  method: pluginMessaging
  pluginMessaging:
    channel: nuvotifier:votes

port: -1 отключает слушатель на бэкенде, так что голоса получает только прокси. Убедись, что бэкенды доступны только через прокси, иначе кто-нибудь сможет слать фейковые голоса.

Другой вариант, method = "proxy", отправляет голоса с прокси на порт NuVotifier каждого бэкенда, который настраивается адресом, портом и токеном для каждого сервера в [forwarding.proxy.<name>]. У него нет кэша голосов, поэтому plugin messaging обычно подходит лучше.

Шаг 5: введи данные и отправь тестовый голос

  1. Сначала проверь локально: /testvote Steve serviceName=BestMCServerList на Paper или /ptestvote с теми же аргументами на прокси. Если плагин наград реагирует, внутренняя часть работает.
  2. На BestMCServerList открой свой сервер в панели и перейди в Votifier. Введи публичный адрес сервера или прокси, порт и токен (v2) или публичный ключ (v1), потом сохрани.
  3. Нажми Отправить тестовый голос. Мы отправим голос от TestVote, который не учитывается в рейтинге, и лог доставки за несколько секунд покажет, дошёл ли он.

Голоса от BestMCServerList приходят с именем сервиса BestMCServerList. Игроки Bedrock, которые заходят через Geyser и Floodgate, голосуют с ником с префиксом, например .Steve, и этот ник доходит до NuVotifier без изменений. С каждого ника Minecraft можно голосовать за сервер раз в календарный день по времени Europe/Berlin.

Ещё не в списке? Сначала добавь свой сервер, а потом возвращайся к этому шагу.

Частые ошибки и их решение

ПроблемаЧто проверить
Connection refusedNuVotifier не запущен или слушает другой порт. Сравни порт в конфиге с тем, что ты ввёл.
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 и дневные лимиты. Общая картина – в гайде как найти игроков для нового сервера.

Частые вопросы

Какой порт использует NuVotifier?

По умолчанию порт 8192. Его можно поменять в конфиге, но это должен быть отдельный порт, не порт Minecraft, и он должен быть доступен из интернета по TCP.

Где найти токен NuVotifier?

В plugins/Votifier/config.yml в разделе tokens → default. Консоль также выводит его при первом запуске.

Нужен ли NuVotifier на каждом сервере моей сети?

С plugin messaging – да: на прокси, чтобы принимать голоса, и на каждом бэкенде с forwarding.method: pluginMessaging и port: -1, чтобы передавать их плагину наград.

Что использовать – v1 или v2?

Используй v2 с токеном, если список его поддерживает. v1 с публичным RSA-ключом существует для старых конфигураций. BestMCServerList поддерживает оба.

NuVotifier сам выдаёт награды?

Нет. Он только принимает голоса. Слушать их должен плагин наград, например VotingPlugin.

Источники

Сверено с официальной документацией: