Як 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 і щоденні ліміти. Для ширшої картини дивись як знайти гравців для нового сервера.