Как голос превращается в награду
Работают вместе три части. Игрок голосует в списке серверов. Список отправляет сообщение о голосе в Votifier на твоём сервере – вместе с ником игрока и именем сервиса, которое обозначает список. VotingPlugin слушает эти сообщения, ищет сайт голосования, у которого ServiceSite совпадает с именем сервиса, и выдаёт награды этого сайта.
Сам по себе VotingPlugin голосов не получает. Сначала нужен рабочий Votifier, обычно NuVotifier. Если ты его ещё не настроил, пройди гайд по настройке NuVotifier и возвращайся.
- Votifier принимает голос и проверяет его (токен для v2, RSA-ключ для v1).
- VotingPlugin сопоставляет имя сервиса и выдаёт награды.
- BestMCServerList отправляет имя сервиса
BestMCServerList.
Шаг 1: установи VotingPlugin
- Убедись, что NuVotifier запущен и доступен. Тестовый голос с твоей страницы Votifier должен появиться в консоли.
- Положи JAR VotingPlugin в папку
pluginsсвоего сервера Spigot или Paper и один раз перезапусти сервер. - VotingPlugin создаст свои файлы, среди них
plugins/VotingPlugin/VoteSites.ymlдля сайтов голосования иConfig.ymlдля общих настроек.
В сети с прокси голоса обычно приходят на прокси, а награды выдаются на бэкенд-серверах. Держи VoteSites.yml одинаковым на каждом бэкенде.
Шаг 2: добавь BestMCServerList в VoteSites.yml
Каждый список, в котором ты есть, получает свою запись в VoteSites. Ключ – внутреннее имя: короткое, без пробелов и точек. Самая важная строка – ServiceSite.
VoteSites:
BestMCServerList:
Enabled: true
Name: 'BestMCServerList'
Priority: 5
ServiceSite: 'BestMCServerList'
VoteURL: 'https://bestmcserverlist.net/server/your-server/vote'
VoteDelay: 24h
WaitUntilVoteDelay: false
VoteDelayDaily: true
ForceOffline: false
DisplayItem:
Material: 'DIAMOND'
Amount: 1
Rewards:
Commands:
- 'eco give %player% 250'
- 'give %player% diamond 2'
Messages:
Player: '&aThanks for voting on BestMCServerList!'Enabled: trueобязателен, по умолчанию стоит false.ServiceSiteдолжен совпадать с именем сервиса, которое отправляет список. VotingPlugin сравнивает без учёта регистра, но в остальном текст должен быть идентичным. У нас этоBestMCServerList.VoteURL– ссылка, которую игроки получают через/vote. Скопируй ссылку на голосование со страницы своего сервера;your-serverздесь – твой собственный slug.DisplayItemнужен для каждого сайта, потому что он показывается в меню VotingPlugin.- Команды выполняются из консоли, а
%player%заменяется на ник голосующего. Дляeco giveнужен плагин экономики; используй те команды, что есть на твоём сервере.
Сохрани файл и выполни /av reload.
Шаг 3: задержка голосования и ежедневный сброс
На BestMCServerList с каждого ника Minecraft можно голосовать за сервер раз в календарный день, а день считается по часовому поясу Europe/Berlin. Новый голос возможен сразу после полуночи по берлинскому времени, а не через 24 часа после предыдущего.
VoteDelay: 24hиспользуется для/vote next– обратного отсчёта, который видят игроки. Голоса он не блокирует.VoteDelayDaily: trueвместо этого сбрасывает задержку раз в день, что подходит для списков с ежедневным сбросом, как у нас.VoteDelayDailyHourзадаёт час по времени сервера (1–24). Если часы твоего сервера идут не по берлинскому времени, учти разницу при настройке.WaitUntilVoteDelay: trueотклонял бы голоса, пришедшие до окончания задержки. Оставьfalse: мы и так ограничиваем один голос на ник в день, а неверная настройка задержки лишила бы игроков наград.
Шаг 4: проверь награды
- Выполни
/av vote <player> BestMCServerList. Команда выдаёт игроку награды этого сайта и показывает, что конфиг наград работает. Votifier она не проверяет. - Открой свою страницу Votifier на BestMCServerList и нажми Отправить тестовый голос. Мы отправим голос от ника
TestVote, который не учитывается в рейтинге. Лог доставки покажет, принял ли его твой сервер. - Поищи в консоли строку вроде
[VotingPlugin] Received a vote from service site 'BestMCServerList' by player 'TestVote'!. - Выполни
/av servicesites, чтобы увидеть имена сервисов, которые VotingPlugin уже получал.
Если тестовый голос приходит, но VotingPlugin сообщает о неизвестном service site, проблема в строке ServiceSite. С AutoCreateVoteSites: true в Config.yml (по умолчанию) VotingPlugin может и сам создать новую запись; ей всё равно нужны Enabled: true и твои награды.
Игроки Bedrock и офлайн-голоса
У игроков Bedrock, которые заходят через Geyser и Floodgate, есть префикс ника, по умолчанию точка: .Steve. Они голосуют с этим полным ником, и мы передаём его в Votifier без изменений. В VotingPlugin укажи тот же префикс в Config.yml. В сети серверов используй одно и то же значение на прокси и на каждом бэкенде:
BedrockPlayerPrefix: '.'.Steve и Steve – разные игроки. Никогда не убирай префикс, чтобы ник «подошёл».
Игрокам не обязательно быть онлайн, когда они голосуют. У наград есть RewardType: ONLINE, OFFLINE или BOTH (по умолчанию). Проверяй и офлайн-голоса, потому что команды, которым нужен игрок онлайн, ведут себя иначе.
Вотпати, рубежи и серии
Когда базовые награды работают, SpecialRewards.yml добавляет цели, ради которых игроки продолжают голосовать: VoteParty, которая срабатывает, когда весь сервер набирает определённое число голосов, VoteMilestones для личных итогов и VoteStreaks за голосование несколько дней подряд. Делай награды полезными, но честными; награды, ломающие экономику, превращают голосование в обязаловку.
Хочешь значок ранга для топ-голосующих? Гайд по префиксам LuckPerms показывает, как выдать игроку префикс-картинку командой, которую можно запускать как награду.
Типичные ошибки
| Проблема | Решение |
|---|---|
| Тестовый голос приходит, но никто ничего не получает | Сайт голосования не включён или ServiceSite не BestMCServerList. Проверь /av servicesites. |
| В консоли вообще ничего | Votifier не получает голос. Проверь порт, токен и файрвол по логу доставки на своей странице Votifier. |
| NuVotifier пишет в лог, что нет доступных слушателей | VotingPlugin не установлен или не загрузился. Проверь лог запуска. |
/av vote работает, а настоящие голоса нет | Админская команда обходит Votifier. Проверяй кнопкой Отправить тестовый голос. |
| Игроки Bedrock ничего не получают | BedrockPlayerPrefix не совпадает с твоим префиксом Floodgate. |