mcTops — плагин топов и лидербордов с наградами за место
mcTops — это плагин лидербордов для Minecraft 1.8+, который строит топы по любому числовому плейсхолдеру через PlaceholderAPI, но его главная фишка —
автоматические награды за места в топе. Вы настраиваете,
за что идёт соревнование (баланс, поинты, статистика ивента),
как часто подводятся итоги (за всё время или за период) и
что получают победители (команды/призы) — дальше mcTops сам фиксирует значения, формирует таблицу лидеров и выдаёт награды по расписанию.
Чем mcTops отличается от “обычных” топов
Большинство плагинов лидербордов ограничиваются отображением: показали таблицу — и всё.
mcTops превращает топ в игровой механизм:
- итоги подводятся автоматически (по таймеру),
- победители получают награды (за 1/2/3 место и любые другие позиции),
- есть напоминания перед “срезом”, чтобы игроки успели включиться в гонку,
- вы получаете готовый инструмент для сезонов, событий, марафонов и донат-гонок.
Именно связка
“топ + период + награды” делает плагин особенно полезным для живого сервера.
Ключевые возможности
1) Награды за места в топе (главная логика)
Вы задаёте список призов и привязываете их к позициям в рейтинге. Награды выдаются командами — это значит, что можно выдать практически что угодно:
- ключи от кейсов,
- валюту/поинты,
- предметы,
- временные привилегии,
- доступ к варпам/наборам,
- запуск любых команд других плагинов.
Можно сделать награды не только за 1–3 место, а хоть за топ-10 или “утешительные” призы для 4–10.
2) Два формата соревнований: за всё время и за период
- ALL_TIME — престижный “вечный” топ (статус и витрина сервера).
- PERIOD — топ “за период” (ежедневный/недельный/месячный сезон) — идеален для наград и активности.
Практика показывает: именно
PERIOD + награды сильнее всего двигают онлайн и вовлечённость.
3) Топы по любому числовому плейсхолдеру
mcTops строит рейтинг по значению плейсхолдера (если он возвращает число). Поэтому легко сделать:
- топ по балансу,
- топ по PlayerPoints,
- топ по статистике ивента,
- топ по кастомной валюте,
- топ по любым метрикам других плагинов, если у них есть PlaceholderAPI.
4) Плейсхолдеры для красивого вывода
Плагин отдаёт плейсхолдеры для:
- ника/счёта на позиции (1–10 и далее),
- позиции игрока в топе,
- таймеров до обновления/награждения,
- даты последнего обновления.
Выводите это в голограммы, скорборд, TAB, меню — любым плагином, который умеет PlaceholderAPI.
5) Предупреждения перед награждением
Можно настроить сообщения за N секунд до выдачи наград — это классная “подсветка” финала сезона:
- игроки видят, что осталось совсем немного,
- начинаются последние попытки “вырвать место”,
- повышается соревновательный азарт.
Установка и запуск
Быстрый старт (один сервер)
- Установите зависимости UtilM и PlaceholderAPI.
- Положите mcTops в /plugins/ и перезапустите сервер.
- Создайте хотя бы один рейтинг: выберите режим (ALL_TIME/PERIOD), укажите плейсхолдер-источник, количество мест.
- Настройте награды за места и выведите топ в голограмму/скорборд/меню.
Сеть серверов
Если нужно собирать общий топ на несколько серверов:
- используйте MySQL,
- задайте уникальные идентификаторы серверов, чтобы данные не конфликтовали.
Идеи, где “топ с наградами” работает лучше всего
- Недельный топ по поинтам (PlayerPoints)
- идеален для регулярной движухи,
- награды раздаёте автоматически каждую неделю.
- Топ донатеров/покупателей за месяц
- мягкая монетизация: покупают валюту/поинты — участвуют в гонке,
- победителям выдаёте бонусы, ключи, временные статусы.
- Сезонный топ ивента
- отдельная валюта/очки события,
- в конце сезона награды за топ-места.
- “Престиж + сезон” в связке
- ALL_TIME держит “витрину” и статус,
- PERIOD создаёт постоянную борьбу за призы.
Команды и права
- /mctops help — справка
- /mctops reload — перезагрузка
- право на reload: tag.reload
Конфигурация плагина:
YAML:
# Плагин: mcTops (Топы)
# Версия: 1.8+
#
# Описание:
# Плагин добавляет топы на базе PlaceholderAPI.
#
# Зависимости: (плагины без которых этот работать не будет)
# - UtilM https://mcdev.su/resources/utilm.73/
# - PlaceholderAPI https://www.spigotmc.org/resources/placeholderapi.6245/
#
# Опциональные зависимости: (плагины без которых не будет полного функционала, но работать будет)
# - Vault https://www.spigotmc.org/resources/vault.34315/
# - PlayerPoints https://www.spigotmc.org/resources/playerpoints.80745/
#
# Плейсхоледры:
# %mctops_placeholder_tracker_id_N1_leaderboard_position_N2_player_name% - Никнейм игрока в лидерборде на позиции N2 трекера плейсхолдера с ID N1.
# %mctops_placeholder_tracker_id_N1_leaderboard_position_N2_score% - Счёт игрока в лидерборде на позиции N2 трекера плейсхолдера с ID N1.
# %mctops_placeholder_tracker_id_N_leaderboard_time_to_update% - Строка обратного отсчета до обновления лидерборда трекера плейсхолдера с ID N.
# %mctops_placeholder_tracker_id_N_leaderboard_time_to_reward% - Строка обратного отсчета до выдачи награды лидерборда трекера плейсхолдера с ID N.
# %mctops_placeholder_tracker_id_N_leaderboard_last_update% - Строка даты последнего обновления лидерборда трекера плейсхолдера с ID N.
# %mctops_placeholder_tracker_id_N_leaderboard_player_position% - Строка даты последнего обновления лидерборда трекера плейсхолдера с ID N.
#
# Примеры использования плейсхолдеров по умолчанию:
# 1. Пример первых трёх мест топа по балансу Vault.
# &e1. &b%mctops_placeholder_tracker_id_placeholder_tracker_1_leaderboard_position_1_player_name% &7- &e%mctops_placeholder_tracker_id_placeholder_tracker_1_leaderboard_position_1_score%
# &e2. &b%mctops_placeholder_tracker_id_placeholder_tracker_1_leaderboard_position_2_player_name% &7- &e%mctops_placeholder_tracker_id_placeholder_tracker_1_leaderboard_position_2_score%
# &e3. &b%mctops_placeholder_tracker_id_placeholder_tracker_1_leaderboard_position_3_player_name% &7- &e%mctops_placeholder_tracker_id_placeholder_tracker_1_leaderboard_position_3_score%
#
# 2. Пример первых трёх мест топа по PlayerPoints за последний час.
# &e1. &b%mctops_placeholder_tracker_id_placeholder_tracker_2_leaderboard_position_1_player_name% &7- &e%mctops_placeholder_tracker_id_placeholder_tracker_2_leaderboard_position_1_score%
# &e2. &b%mctops_placeholder_tracker_id_placeholder_tracker_2_leaderboard_position_2_player_name% &7- &e%mctops_placeholder_tracker_id_placeholder_tracker_2_leaderboard_position_2_score%
# &e3. &b%mctops_placeholder_tracker_id_placeholder_tracker_2_leaderboard_position_3_player_name% &7- &e%mctops_placeholder_tracker_id_placeholder_tracker_2_leaderboard_position_3_score%
message:
# Поддерживается вывод сообщений в мультистрочном формате.
reload_success:
- "&aПлагин перезагружен!"
permission_denied: "&cОтказано в доступе."
help:
- "&e/mctops reload &7- перезагрузить плагин"
- "&e/mctops help &7- показать список команд"
permission:
reload: tag.reload # Разрешение на перезагрузку этого плагина.
# Конфигурация базы данных.
#
# Примечание:
# Раскомментируйте нужный вариант, но закомментируйте все не нужные.
# По умолчаницию раскомментирован "Пример конфигурации если база данных H2 (просто локальный файл).", а
# все остальные закомментированы.
#
# Доступные типы баз данных на данный момент:
# - H2
# - MYSQL
database:
# Пример конфигурации если база данных H2 (просто локальный файл).
type: H2
# Пример конфигурации если база данных это MySQL сервер.
# type: MYSQL
# database: "database"
# host: "127.0.0.1"
# port: 3306
# username: "username"
# password: "password"
# Конфигурация наград.
reward_module:
# Оставьте секцию пустой 'reward_list: {}' чтобы наград не было.
reward_list:
reward_1: # ID награды.
display_name: "&aНаграда 1" # Название награды.
command_list: # Команды награды (учитывайте, игрок %player% может быть оффлайн).
- "minecraft:tell %player% команда 1 награды 1 за позицию %leaderboard_position% со счётом %score%!"
- "minecraft:tell %player% команда 2 награды 1 за позицию %leaderboard_position% со счётом %score%!"
reward_2:
display_name: "&bНаграда 2"
command_list:
- "minecraft:tell %player% команда 1 награды 2 за позицию %leaderboard_position% со счётом %score%!"
- "minecraft:tell %player% команда 2 награды 2 за позицию %leaderboard_position% со счётом %score%!"
placeholder_tracker_module:
# Маркер этого сервера (уникальная произвольная строка).
# Например в случае если этот плагин используется на 2-х серверах одновременно, то они оба
# будут вести запись в 1 базу данных, и чтобы понимать чьи данные чьи и нужен такой маркер.
# Если он будет повторяться, то представим, что на сервере "A" у игрока баланс $100, а на
# сервере "B" $500, оба плагина будут поочерёдно перезаписывать это значение и как итог на
# одном из серверов топ будет показывать что у игрока например $100, а не $500.
server_name: "server_1"
# (Сек.) Интервал записи в базу данных из которых будут формироваться лидерборды.
update_interval_seconds: 30
placeholder_tracker_list: # Список трекеров плейсхолдеров.
placeholder_tracker_1: # ID трекера плейсхолдера.
# Тип трекера.
#
# Доступные типы:
# ALL_TIME - Обычный лидерборд с топами за всё время игры.
# PERIOD - Например лидерборд за неделю или месяц.
type: ALL_TIME
# Плейсхолдер числа из которого будет формироваться лидерборд.
# В данном примере это баланс Vault https://www.spigotmc.org/resources/vault.34315/
target_placeholder_string: "%vault_eco_balance%"
leaderboard_max_positions: 10 # Число позиций в лидерборде.
leaderboard_player_name_placeholder: "&7пусто" # Никнейм пустого места в лидерборде.
leaderboard_score_placeholder: "&e0" # Счтёт пустого места в лидерборде.
leaderboard_update_interval_seconds: 60 # (Сек.) Интервал обновления лидерборда.
# Конфигурация визуализации плейсхолдера времени до начала сражения.
leaderboard_time_to_update_formatter:
string: "&fДо обновления: %formatted_seconds%" # Формат плейсхолдера.
# Цвет цифр.
# Полный список цветов можно найти по адресу: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/ChatColor.html.
number_color: GREEN
abbreviation_color: WHITE # Цвет аббревиатур (час. мин. сек. и тд.).
leaderboard_last_update_formatter:
string: "&fОбновлено: &a%date%" # Формат плейсхолдера.
date_format: "EEEE, dd MMM yyyy" # Формат времени. Полный список форматов времени можно найти по адресу: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html.
leaderboard_reward_interval_seconds: 60 # (Сек.) Интервал выдачи награды.
# Конфигурация визуализации плейсхолдера времени до начала сражения.
leaderboard_time_to_reward_formatter:
string: "&fДо награды: %formatted_seconds%" # Формат плейсхолдера.
number_color: GOLD
abbreviation_color: WHITE
# Конфигурация призовых мест.
reward_place_module:
# Оставьте секцию пустой 'reward_place_list: {}' чтобы наград за призовые места не было.
reward_place_list:
reward_place_1: # ID призового места.
leaderboard_position: 1 # Позиция в лидерборде.
reward_id_list: # Список ID наград из секции 'reward_module.reward_list'.
- "reward_1"
message: # Конфигурация сообщений.
winner: # Конфигурация сообщения о выдаче награды игроку занявшему это 1-ое место.
reward_display_name_delimiter: "&e, " # Конфигурация разделителя названий наград (если в списке 'reward_id_list' их задано несколько).
text: "&eИгрок &b%player% &eзанял &61 &eместо в топе по балансу и получил награды: &r%combined_reward_display_name%&r&e!" # Текст сообщения.
reward_place_2:
leaderboard_position: 2
reward_id_list:
- "reward_2"
message:
winner:
reward_display_name_delimiter: "&e, "
text: "&eИгрок &b%player% &eзанял &62 &eместо в топе по балансу и получил награды: &r%combined_reward_display_name%&r&e!"
# Конфигурация сообщений-напоминаний.
reminder_message_module:
# Оставьте секцию пустой 'reminder_message_list: {}' чтобы не отправлять сообщения-напоминания.
reminder_message_list:
reminder_message_1: # ID сообщения-напоминания.
text: "&eОсталось всего &b30 &eсек. до определения призовых мест топа по балансу, &6торопись&e!"
seconds_until_reward: 30 # (Сек.) Время до выявления победителей.
reminder_message_2:
text: "&eОсталось всего &b10 &eсек. до определения призовых мест топа по балансу, &cскорее&e!"
seconds_until_reward: 10
placeholder_tracker_2:
type: PERIOD
history_period_seconds: 3600 # (Сек.) Лидерборд за последний час.
# Плейсхолдер числа из которого будет формироваться лидерборд.
# В данном примере это поинты PlayerPoints https://www.spigotmc.org/resources/playerpoints.80745/
target_placeholder_string: "%playerpoints_points%"
leaderboard_max_positions: 10
leaderboard_player_name_placeholder: "&7пусто"
leaderboard_score_placeholder: "&e0"
leaderboard_update_interval_seconds: 60
leaderboard_time_to_update_formatter:
string: "&fДо обновления: %formatted_seconds%"
number_color: AQUA
abbreviation_color: WHITE
leaderboard_last_update_formatter:
string: "&fОбновлено: &b%date%"
date_format: "EEEE, dd MMM yyyy"
leaderboard_reward_interval_seconds: 60
leaderboard_time_to_reward_formatter:
string: "&fДо награды: %formatted_seconds%"
number_color: GOLD
abbreviation_color: WHITE
# Нет наград за призовые места.
reward_place_module:
reward_place_list: { }
# Нет сообщений-напоминаний.
reminder_message_module:
reminder_message_list: { }