CountdownLib: обратные отсчёты и кулдауны для Minecraft

CountdownLib: библиотека обратных отсчётов и кулдаунов для серверов Minecraft Разработка плагинов под Bukkit или Spigot часто требует работы с таймерами — будь то задержка перед выполнением команды, периодическое событие или ограничение на частое использование определённых действий. CountdownLib ...

Скачать CountdownLib

Оригинальное название: CountdownLib

ФайлВерсияЗагрузчикРазмер
CountdownLib.jar——73 КБСкачать

CountdownLib: библиотека обратных отсчётов и кулдаунов для серверов Minecraft

Разработка плагинов под Bukkit или Spigot часто требует работы с таймерами — будь то задержка перед выполнением команды, периодическое событие или ограничение на частое использование определённых действий. CountdownLib решает эту задачу максимально просто, предоставляя разработчикам лёгкий инструментарий для создания обратных отсчётов и автоматических кулдаунов команд. По сути это библиотека, которая берёт на себя всю рутину, связанную с шедулерами и событиями, позволяя сосредоточиться на логике самого плагина.

Что умеет CountdownLib

Библиотека построена вокруг трёх ключевых сущностей: самого счётчика, событий его тика и завершения, а также класса для кулдаунов команд. Всё взаимодействие происходит через привычные ивенты Bukkit, поэтому интеграция в существующий проект занимает считанные минуты.

  • Создание обратного отсчёта. Вы указываете общее время работы счётчика, интервал между тиками и флаг, нужно ли переводить интервал в секунды. Метод возвращает UUID, который можно сохранить в HashMap для привязки к игроку или действию.
  • Событие тика. Каждый раз, когда счётчик «тикает», вызывается CountdownTickEvent. В обработчике можно обновить интерфейс, проверить условия или отправить сообщение.
  • Событие окончания. Когда время истекает, срабатывает CountdownEndEvent — идеальное место для выполнения финальной логики, например, телепортации или выдачи награды.
  • Автоматические кулдауны команд. Отдельный класс CommandCooldown позволяет буквально одной строкой добавить задержку на повторное использование команды. При попытке повторного вызова игрок получит стильное сообщение с оставшимся временем, которое можно кастомизировать через конструктор.

Простота внедрения

Автор постарался сделать API интуитивно понятным даже для новичков. Чтобы запустить счётчик, достаточно создать объект Countdown, передав нужные параметры, и вызвать метод start(). Полученный UUID можно сразу сохранить в любую структуру данных — например, в HashMap, сопоставляющую имена игроков с активными таймерами. Такой подход исключает конфликты между разными плагинами, ведь каждый счётчик идентифицируется уникальным ключом, а не строковым названием.

Пример кода из документации выглядит так:

public void startCountdown(long time, long interval, boolean intervalToSeconds) {
    Countdown c = new Countdown(time, interval, intervalToSeconds, plugin);
    someVariable = c.start();
}

А прослушивание событий сводится к обычным аннотациям @EventHandler — точно так же, как и для любых других ивентов Bukkit. Разработчику не нужно вникать во внутреннюю кухню планировщика задач: библиотека сама управляет потоками и гарантирует вызов событий в главном потоке сервера.

Кулдауны команд без головной боли

Одна из самых приятных фич CountdownLib — встроенная поддержка кулдаунов для команд. Достаточно после выполнения основной логики команды создать экземпляр CommandCooldown, указав длительность в секундах, метку команды и имя отправителя. Библиотека автоматически запомнит, когда игрок использовал команду, и не позволит ему вызвать её снова до истечения времени. При этом сообщение об оставшемся времени формируется автоматически, но при желании его можно заменить на собственное, используя перегруженный конструктор с шаблоном, где %d заменяется на число секунд.

Стоит учитывать, что кулдауны хранятся в оперативной памяти и сбрасываются при перезапуске сервера. Поэтому такой механизм идеален для коротких задержек — от нескольких секунд до пары минут — когда вероятность рестарта невелика. Для долгосрочных ограничений лучше комбинировать библиотеку с базой данных.

Дополнительные возможности и команды

В четвёртой версии добавилась возможность выполнять команды с задержкой прямо из консоли или через код. Команда /Countdown <Секунды> <Команда> [Аргументы] запускает обратный отсчёт, по истечении которого сервер автоматически выполняет указанную команду. Это удобно для администраторов, желающих отложить перезагрузку, смену погоды или выдачу ресурсов. Для использования этой команды требуется право cdl.countdown.

Кстати, если вы активно экспериментируете с плагинами и серверными сборками, оцените удобство современных лаунчеров. Например, через foxygame.net можно в несколько кликов установить нужные моды и серверные пакеты прямо из меню — это здорово экономит время при настройке тестового окружения для ваших разработок. Такой инструмент особенно выручает, когда нужно быстро развернуть чистый сервер Bukkit и проверить работу CountdownLib в связке с другими плагинами.

Почему стоит выбрать CountdownLib

Главное преимущество библиотеки — её минималистичность. Она не тянет за собой тяжёлых зависимостей, не требует сложной конфигурации и полностью документирована на GitHub. Исходный код открыт, что позволяет при необходимости адаптировать поведение под специфические нужды проекта. Кроме того, использование UUID для идентификации счётчиков исключает путаницу, если на сервере одновременно работают несколько плагинов, использующих эту библиотеку.

CountdownLib регулярно обновляется: в версии 2 появилась проверка по UUID, в версии 3 — модификация времени и класс CommandCooldown, а в версии 4 — отложенные команды и статический метод для их вызова из кода. Автор оперативно исправляет баги, например, в v3 была решена проблема с null в CountdownTickEvent. Такая поддержка говорит о том, что библиотека будет развиваться и дальше.

Заключение

CountdownLib — это тот случай, когда небольшая библиотека закрывает сразу несколько частых потребностей серверного разработчика. Она избавляет от написания шаблонного кода для таймеров и кулдаунов, предлагая чистый событийно-ориентированный подход. Если вы создаёте мини-игры, квесты, системы прокачки или просто хотите ограничить спам командами, обязательно обратите внимание на этот инструмент. Простота внедрения и читаемый код делают CountdownLib отличным выбором как для новичков, так и для опытных разработчиков, ценящих своё время.