Як налаштувати нагороди за голосування (Votifier, VotingPlugin та інші)

Встановіть супутній плагін, налаштуйте Votifier для миттєвого доставлення нагород, або підключіть до цього сайту VotingPlugin, SuperVotes чи SuperbVote - із саме тими значеннями, яких цей сайт справді очікує.

Кожному плагіну нагород потрібні від вас дві речі: спосіб дізнатися, що голос було подано, і щось, що запуститься, коли це станеться. У цій статті розглянемо обидва варіанти - супутній плагін, який публікує цей сайт, Votifier для миттєвого доставлення, і що робити, якщо у вас уже встановлено VotingPlugin, SuperVotes чи інший плагін нагород.

Варіант A: плагін VoxelRank (рекомендовано)

Супутній плагін напряму спілкується з API цього сайту. Votifier не потрібен - плагін працює, періодично опитуючи сервер щодо неотриманих голосів, тож він працює навіть за NAT і надолужує все, що було пропущено, поки сервер був вимкнений. Votifier також доступний як опціональне доповнення для миттєвого доставлення (див. Варіант B).

  1. Завантажте jar-файл зі своєї Приладової панелі (картка вашого сервера має кнопку завантаження, щойно з'явиться збірка), або напряму з /download/plugin.
  2. Покладіть його в plugins/ і один раз запустіть сервер. Це створить plugins/VotingSite/config.yml.
  3. Відкрийте сторінку Редагувати вашого сервера → вкладку Нагороди та голосування і скопіюйте показаний там Ключ API.
  4. Вставте його в site.api-key у config.yml (заодно перевірте, що site.url вказує на цей сайт), потім виконайте /votingsite reload.
  5. Вирішіть, як голоси мають до вас надходити, налаштувавши mode у config.yml:
    • poll (за замовчуванням) - плагін сам забирає неотримані голоси. Більше нічого встановлювати не потрібно.
    • votifier - сайт надсилає кожен голос у момент його подання. Потребує NuVotifier або іншого Votifier-listener'а (Варіант B нижче).
    • both - push через Votifier з опитуванням як підстраховкою, без дублів завдяки id голосу.
  6. Заповніть rewards.commands (а за бажанням ще milestones і vote-party) командами консолі, які мають виконуватися при голосуванні.
  7. Перевірте це: /votingsite testvote <player> симулює голос без очікування справжнього. /votingsite status показує режим, чи приймається ключ API та скільки голосів уже доставлено.

Гравці отримують своє посилання для голосування та лічильник голосів через /voxelrank vote - а не через /vote, яку цей плагін свідомо ніколи не займає (два плагіни, що конкурують за одну й ту саму команду - це саме те, через що нагорода непомітно перестає працювати, див. відповідну примітку в config.yml).

Варіант B: миттєве доставлення через NuVotifier

Пропустіть цей розділ, якщо режим poll вас цілком влаштовує - він не обов'язковий. Додайте його, коли важливі ті кілька хвилин затримки опитування, або коли ви віддаєте перевагу окремому плагіну нагород замість вбудованого на цьому сайті.

NuVotifier - це активно підтримуваний форк оригінального Votifier: сам оригінальний проєкт сьогодні практично не підтримується, тож «встановити Votifier» на практиці означає встановити NuVotifier (або сумісний форк на кшталт VotifierPlus).

  1. Покладіть jar-файл NuVotifier у plugins/ і перезапустіть сервер. На сервері Bukkit/Spigot/Paper він зберігає класичну назву папки plugins/Votifier/ заради зворотної сумісності - це власна папка NuVotifier, а не залишок від старого плагіна - і під час першого запуску створює в ній config.yml та пару ключів у rsa/.
  2. Отримайте свої облікові дані з plugins/Votifier/config.yml: токен v2 (рекомендовано) генерується автоматично під ключем default у розділі tokens: - скопіюйте його як є. Якщо волієте старіший спосіб, публічний ключ v1 знаходиться в plugins/Votifier/rsa/public.key; відповідний private.key тримайте в тій самій папці на сервері та ніколи ним не діліться.
  3. Перевірте port, на якому слухає NuVotifier (за замовчуванням 8192), і переконайтеся, що він відкритий у вашому фаєрволі чи панелі хостингу - це окремий порт від звичайного порту Minecraft, і більшість хостингів не відкривають його автоматично.
  4. На сторінці Редагувати вашого сервера → вкладці Нагороди та голосування вкажіть хост Votifier (адресу вашого сервера) і цей порт, потім вставте токен v2 або ключ v1 з кроку 2. Якщо заповнено обидва, використовується лише один - пріоритет у v2.
  5. Натисніть Надіслати тестовий голос прямо на цій вкладці. Це надішле справжній пакет Votifier на хост/порт/ключ/токен, які зараз вказані у формі - попередньо нічого зберігати не потрібно - і одразу покаже, чи прийняв його NuVotifier. Якщо не вдасться, власний консольний лог NuVotifier (за замовчуванням debug: true) покаже, чи з'єднання взагалі дійшло до плагіна, що швидко відрізняє «неправильний ключ» від «заблокованого порту».
  6. Збережіть, потім подайте справжній голос і переконайтеся, що нагорода приходить одразу, а не при наступному опитуванні.

Під капотом цей сайт надсилає стандартний хендшейк VOTIFIER 2 з JSON-payload, підписаним HMAC, якщо задано токен v2, а інакше повертається до класичного блоку v1, зашифрованого RSA - той самий протокол, який уже розуміє будь-який Votifier-сумісний listener, нічого специфічного для цього сайту.

Уже використовуєте VotingPlugin?

Якщо на вашому сервері вже працює VotingPlugin, встановлювати наш плагін не потрібно - і вручну додавати туди цей сайт теж не потрібно, бо для нього у VotingPlugin є підтримуваний пресет.

Виконайте це в грі як оператор (або з правом VotingPlugin.Commands.AdminVote.VotePresets):

/av VotePresets

VotingPlugin завантажує актуальний список пресетів із власного репозиторію VotingPlugin-Presets, дає обрати один - VoxelRank серед них є - а потім запитує значення, потрібні цьому пресету: відображуване ім'я, URL голосування вашого оголошення, затримку між голосами тощо. Або одразу перейдіть до справи з власним посиланням для голосування:

/av VotePresets https://voxelrank.com/server/your-slug/vote

Вказуйте https://; VotingPlugin автоматично зіставляє ім'я хоста з потрібним пресетом, замість того щоб змушувати вас шукати його у списку.

У будь-якому разі він записує або оновлює відповідний запис під VoteSites: у VoteSites.yml - ServiceSite, VoteURL, розумні значення затримки за замовчуванням, а також заглушку відображуваного предмета чи повідомлення з подякою, якщо у сайту їх ще немає - а потім перезавантажує сайти для голосування за вас. Усе інше, що вже є у файлі, залишається незмінним. Зробіть резервну копію VoteSites.yml, якщо змінюєте вже налаштовану конфігурацію, а не додаєте нову, і перевірте, що було записано - особливо нагороди, адже пресет - це відправна точка, а не готова конфігурація - перш ніж рекламувати це гравцям.

VotingPlugin усе одно потребує власного підключення Votifier, щоб реально отримувати голоси - спрямуйте його на те саме налаштування NuVotifier з Варіанту B вище. Також йому потрібно, щоб сервер міг достукатися до GitHub (raw.githubusercontent.com), аби взагалі завантажити пресети; якщо /av VotePresets повідомляє про відсутність доступних пресетів, це проблема мережі чи фаєрвола на сервері, а не відсутній пресет. /av gui, або пряме редагування VoteSites.yml, і далі працюють як запасний варіант - ServiceSite має звучати точно як VoxelRank.com, що можна підтвердити командою /av servicesites після реального чи адміністративного тестового голосу.

Інші плагіни нагород

Використовуєте щось легше за VotingPlugin? SuperVotes та SuperbVote - обидва легкі Votifier-listener'и з власними системами vote-party та команд нагород. Жоден з них не відстежує пресети по сайтах, як це робить VotingPlugin - спрямуйте будь-який з них на той самий хост, порт і токен v2 (або ключ v1) Votifier з вкладки Нагороди та голосування вище і налаштуйте його нагороди так само, як для будь-якого іншого голосування.

Вирішення проблем

  • При /votingsite testvote нічого не відбувається. Спочатку перевірте /votingsite status - якщо ключ API не приймається, голосам (реальним чи тестовим) нікуди йти. Скопіюйте його заново зі сторінки Редагувати та переконайтеся, що в кінці немає зайвого пробілу.
  • Push від Votifier ніколи не приходить, але опитування працює. Зазвичай блокується саме порт Votifier, а не API - більшість хостингів за замовчуванням відкривають вихідний HTTP-трафік, але не довільний додатковий вхідний порт. mode: both (або запуск listener'а іншого плагіна нагород окремо) - розумний постійний запасний варіант замість боротьби з фаєрволом.
  • Нагорода спрацьовує, але в грі нічого не з'являється. Команди нагород виконуються з консолі, тож команда, яка працює лише якщо її ввів гравець (без права, без op), тихо провалиться. Спочатку перевірте точну команду з консолі.
  • VotingPlugin пише в лог "invalid service site" або ніколи не зіставляє голос. Значення ServiceSite має збігатися посимвольно, крім регістру. Перевірте його командою /av servicesites, а не вгадуйте за доменним іменем цього сайту.
  • /av VotePresets повідомляє про відсутність доступних пресетів, або URL нічому не відповідає. Список пресетів завантажується з GitHub під час виконання, тож майже завжди справа в мережі самого сервера - фаєрвол, проксі, DNS чи збій GitHub - що блокує raw.githubusercontent.com, а не в тому, що VoxelRank прибрали зі списку. Збіг за URL також потребує повної адреси, включно з https://; самі лише імена хостів не розпізнаються.
  • Налаштування на вкладці Нагороди та голосування наче не зберігаються. Вони застосовуються лише до заявленого оголошення - див. фільтр Заявлено в списку серверів. Імпортований, незаявлений запис ще не має власника, для якого можна налаштувати нагороди; спочатку заявіть на нього права.

Швидкі відповіді

Чи потрібен мені взагалі Votifier?

Ні. Режим poll (за замовчуванням для плагіна VoxelRank) працює без встановлення чогось іще - Votifier лише скорочує затримку між голосом і нагородою і є єдиним шляхом, якщо ви волієте натомість використовувати VotingPlugin, SuperVotes чи SuperbVote.

Чи можу я використовувати наш плагін і VotingPlugin одночасно?

Не для однієї й тієї самої нагороди - оберіть один плагін, який реально виконуватиме команди нагороди, інакше голос може бути оплачений двічі. Сам Votifier може сповіщати одразу кілька listener'ів, тож це правило «не налаштовуйте одну й ту саму нагороду двічі», а не технічне обмеження.

Мій хостинг не дає відкрити додаткові порти для Votifier.

Використовуйте режим poll з плагіном VoxelRank. Він робить лише вихідні запити, тож відкривати нічого не потрібно. У VotingPlugin і подібних плагінів нагород немає аналога режиму опитування - їм потрібен вхідний порт Votifier.

Потрібна допомога?

Застрягли на якомусь із кроків вище, або щось не збігається з тим, що реально надсилає ваш сервер? Зв'яжіться з нами - найшвидші способи поставити питання про голоси й нагороди перелічені прямо там.