Плагин mcTops - Топы и лидерборды с наградами за место в Майнкрафт
mcTops - Топы и лидерборды с наградами за место

Плагин mcTops - Топы и лидерборды с наградами за место 1.0.4

Требуется UtilM
https://mcdev.su/resources/utilm.73/
Для версий
  1. 1.8.x-1.21.x

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 секунд до выдачи наград — это классная “подсветка” финала сезона:

  • игроки видят, что осталось совсем немного,
  • начинаются последние попытки “вырвать место”,
  • повышается соревновательный азарт.

Установка и запуск​

Быстрый старт (один сервер)​

  1. Установите зависимости UtilM и PlaceholderAPI.
  2. Положите mcTops в /plugins/ и перезапустите сервер.
  3. Создайте хотя бы один рейтинг: выберите режим (ALL_TIME/PERIOD), укажите плейсхолдер-источник, количество мест.
  4. Настройте награды за места и выведите топ в голограмму/скорборд/меню.

Сеть серверов​

Если нужно собирать общий топ на несколько серверов:

  • используйте MySQL,
  • задайте уникальные идентификаторы серверов, чтобы данные не конфликтовали.

Идеи, где “топ с наградами” работает лучше всего​

  1. Недельный топ по поинтам (PlayerPoints)
  • идеален для регулярной движухи,
  • награды раздаёте автоматически каждую неделю.
  1. Топ донатеров/покупателей за месяц
  • мягкая монетизация: покупают валюту/поинты — участвуют в гонке,
  • победителям выдаёте бонусы, ключи, временные статусы.
  1. Сезонный топ ивента
  • отдельная валюта/очки события,
  • в конце сезона награды за топ-места.
  1. “Престиж + сезон” в связке
  • 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: { }

Screenshot 2025-09-09 at 7.30.54 PM.webp

Screenshot 2025-09-09 at 7.30.54 PM.webp
Автор
mcdev
Куплено
4
Показов
339
Первый выпуск
Обновление

Оценки

0.00 звёзд 0 оценок

Другие ресурсы пользователя mcdev

Последние обновления

  1. 1.0.4

    - Оптимизация. Операция записи счёта теперь происходит асинхронно. Обновление лидерборда уже...