Як голос перетворюється на нагороду
Разом працюють три частини. Гравець голосує в списку серверів. Список надсилає повідомлення про голос до 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 (типово). Перевір і голоси офлайн, бо команди, яким потрібен гравець онлайн, поводяться інакше.
Vote party, рубежі та серії
Коли базові нагороди працюють, SpecialRewards.yml додає цілі, що мотивують голосувати й далі: VoteParty, що спрацьовує, коли весь сервер набирає певну кількість голосів, VoteMilestones для особистих підсумків і VoteStreaks за голосування кілька днів поспіль. Роби нагороди корисними, але чесними; нагороди, що ламають економіку, роблять голосування обов’язком.
Хочеш значок рангу для найактивніших гравців? Посібник з префіксів LuckPerms показує, як видати гравцеві префікс-зображення командою, яку можна виконати як нагороду.
Типові помилки
| Проблема | Рішення |
|---|---|
| Тестовий голос приходить, але ніхто нічого не отримує | Сайт голосування не увімкнено, або ServiceSite не BestMCServerList. Перевір /av servicesites. |
| У консолі взагалі нічого | Votifier не отримує голос. Перевір порт, токен і фаєрвол за журналом доставки на своїй сторінці Votifier. |
| NuVotifier пише, що немає доступних слухачів | VotingPlugin не встановлено або він не завантажився. Перевір лог запуску. |
/av vote працює, справжні голоси – ні | Адмін-команда обходить Votifier. Перевіряй натомість через Надіслати тестовий голос. |
| Гравці Bedrock нічого не отримують | BedrockPlayerPrefix не збігається з твоїм префіксом Floodgate. |