PlayerTimer
Этот проект добавляет таймер, который можно запустить игроком или командным блоком. Таймер уникален для каждого игрока, и у каждого игрока может быть свой запущенный таймер. Это серверная установка для проведения мини-игр и испытаний на время.
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 268
- Подписчиков на Modrinth
- 1
- версии
- 2
- Обновлён
- 26 июня 202626 июн.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
PlayerTimer Fabric
Fabric-мод, добавляющий независимые таймеры для каждого игрока на серверах Minecraft и в одиночных мирах. Текущая сборка Fabric:
- Minecraft
26.2 - Fabric Loader
0.19.3или новее - Fabric API
0.153.0+26.2 - Java 25 или новее У каждого игрока свой таймер, который может:
- считать вверх
- считать вниз
- ставиться на паузу и возобновляться
- скрываться или отображаться независимо
- запускаться командами или командными блоками Предназначен для:
- мини-игр
- эскейп-румов
- испытаний на время
- паркура
- спидранов
- мультиплеерных ивентов
- приключенческих карт
Возможности
- Независимый таймер для каждого игрока
- Режимы счёта вверх и вниз
- Поддержка команд Brigadier
- Поддержка паузы и возобновления
- Управление видимостью таймера
- Уведомление о завершении обратного отсчёта
- Звуковые эффекты при завершении
- Несколько форматов ввода длительности
- Совместимость с командными блоками через
/execute as - Админ-команды для управления таймерами
- Сохранение таймеров между перезапусками и крашами
- Создан для Fabric
- Поддержка Java 25
Команды
| Команда | Описание |
|---|---|
/playertimer startcountup | Запустить таймер счёта вверх с настроенным цветом по умолчанию |
| `/playertimer startcountup ` | Запустить цветной таймер счёта вверх |
/playertimer startcountdown | Запустить обратный отсчёт на 5 минут с настроенным цветом по умолчанию |
| `/playertimer startcountdown ` | Запустить обратный отсчёт с заданной длительностью и настроенным цветом по умолчанию |
| `/playertimer startcountdown ` | Запустить цветной обратный отсчёт |
/playertimer pause | Поставить таймер на паузу |
/playertimer resume | Возобновить таймер с паузы |
/playertimer stop | Остановить таймер и сбросить его на 00:00 |
/playertimer reset | Сбросить таймер на 00:00 |
/playertimer hide | Скрыть отображение таймера |
/playertimer show | Показать отображение таймера |
| `/playertimer admin clear ` | Очистить таймер игрока `` (уровень оператора 2+) |
/playertimer admin clearall | Очистить таймеры всех игроков (уровень оператора 2+) |
Форматы длительности
Команда обратного отсчёта принимает несколько форматов ввода.
1. Секунды
/playertimer startcountdown 300Запускает обратный отсчёт на 300 секунд.
2. мм:сс
/playertimer startcountdown 05:30Запускает обратный отсчёт на 5 минут 30 секунд. Правила:
ммдолжно быть от0до59ссдолжно быть от0до59Примеры:
05:30 ✓ верно
59:59 ✓ верно
60:00 ✗ неверно
05:60 ✗ неверно
99:99 ✗ неверно3. чч:мм:сс
/playertimer startcountdown 01:40:05Запускает обратный отсчёт на 1 час 40 минут 5 секунд. Правила:
ммдолжно быть от0до59ссдолжно быть от0до59Примеры:
01:40:05 ✓ верно
10:59:59 ✓ верно
01:60:05 ✗ неверно
01:40:60 ✗ неверно4. Текстовый формат
/playertimer startcountdown 1h40m5s
/playertimer startcountdown 10m
/playertimer startcountdown 45s
/playertimer startcountdown 2h
/playertimer startcountdown 1h5sПоддерживает:
- часы (
h) - минуты (
m) - секунды (
s) Можно использовать любую комбинацию. Правила: mдолжно быть от0до59sдолжно быть от0до59Примеры:
1h40m5s ✓ верно
10m30s ✓ верно
59m59s ✓ верно
1h60m ✗ неверно
10m90s ✗ неверно
10s49m ✗ неверноМаксимальная длительность
Максимально допустимая длительность:
2147483647 секундчто примерно равно:
68 летЭто ограничение существует потому, что внутри таймер использует значения Java int.
Цвета таймера
Таймеры можно опционально запускать с аргументом цвета.
Поддерживаемые цвета
| Цвет |
|---|
| black |
| dark_blue |
| dark_green |
| dark_aqua |
| dark_red |
| dark_purple |
| gold |
| gray |
| dark_gray |
| blue |
| green |
| aqua |
| red |
| light_purple |
| yellow |
| white |
Примеры:
/playertimer startcountup red
/playertimer startcountdown 5m gold
/playertimer startcountdown 01:30 dark_blueСостояния таймера
Внутри мод отслеживает состояние таймера с помощью модели конечных состояний.
| Состояние | Значение |
|---|---|
READY | Таймер существует, но не запущен |
RUNNING | Таймер активно считает |
PAUSED | Таймер временно приостановлен |
STOPPED | Таймер был остановлен вручную |
FINISHED | Обратный отсчёт достиг нуля |
Это предотвращает недопустимые операции, такие как:
- возобновление завершённых таймеров
- запуск нескольких таймеров одновременно
- возобновление остановленных таймеров
Поведение видимости
Видимость таймера не зависит от его состояния.
| Действие | Результат |
|---|---|
| Запуск таймера | Таймер становится видимым |
| Пауза таймера | Таймер остаётся видимым |
| Возобновление таймера | Таймер становится видимым |
| Остановка таймера | Таймер остаётся без изменений |
| Сброс таймера | Таймер остаётся видимым |
| Команда hide | Таймер становится скрытым |
| Команда show | Таймер становится видимым |
Завершение обратного отсчёта
Когда обратный отсчёт достигает нуля:
- таймер останавливается автоматически
- таймер переходит в состояние
FINISHED - игрок получает уведомление
- проигрывается звук колокола
Поддержка командных блоков
Команды можно запускать через командные блоки с помощью команды Minecraft execute. Пример:
execute as @p run playertimer startcountdown 5mЭто позволяет использовать:
- кнопки
- нажимные плиты
- редстоун-системы
- триггеры по регионам
- интеграцию с приключенческими картами
Сохранение
Все таймеры сохраняются на диск и восстанавливаются при перезапуске сервера или после краша. Данные таймеров хранятся в:
config/playertimer/timers.jsonКонфигурация хранится в:
config/playertimer/config.tomlТекущая конфигурация поддерживает:
defaultColor = "WHITE"Сохранение происходит:
- при каждом изменении состояния таймера (запуск, пауза, возобновление, остановка, сброс, скрытие, показ, завершение)
- каждые 30 секунд автоматически
- при отключении игрока
- при остановке сервера
Когда таймер восстанавливается после перезапуска, его состояние устанавливается в PAUSED независимо от того, был ли он запущен до этого — сервер не тикал, поэтому таймер не отсчитывал время. Если таймер был запущен игроком напрямую, именно он отвечает за его возобновление. Если таймер был запущен мини-игрой или картой приключения, за его возобновление отвечает игра.
Поведение при сбое
При загрузке: если у записи таймера повреждён UUID, она пропускается и в лог записывается предупреждение. Если файл вообще не удаётся прочитать, выбрасывается RuntimeException, что не даёт моду инициализироваться. При сохранении: если файл не удаётся записать, в лог записывается ошибка и выбрасывается RuntimeException. Поскольку таймер считается критически важной инфраструктурой (например, для мини-игр), это приведёт к падению сервера, а не к продолжению работы с несохранённым состоянием.
Сборка
Требования
- Java 25
- Gradle
- Fabric Loader 0.19.3 или новее
- Fabric API 0.153.0+26.2
Сборка
./gradlew buildСкомпилированные jar-файлы появятся в:
build/libs/Версионирование
PlayerTimer использует следующую схему версионирования:
[mod-version]Пример:
1.4.0Совместимость с Minecraft отслеживается в fabric.mod.json, gradle.properties и записи changelog для каждого релиза.
Планируемые изменения
Опции конфигурации для:
- длительности обратного отсчёта по умолчанию
- включения/выключения звукового сигнала по завершении таймера обратного отсчёта
- включения/выключения предупреждающего сигнала раз в секунду перед завершением обратного отсчёта
- длительности предупреждающих сигналов перед завершением обратного отсчёта
- поведения при сбое сохранения (критический → падение сервера, некритический → запись в лог и продолжение работы)
- API — интерфейс, позволяющий разработчикам игр и карт приключений обращаться к функциям таймера напрямую из своего кода
Changelog
1.4.0 - Minecraft 26.2
- Целевая версия Fabric обновлена до Minecraft 26.2
- Требование к Fabric Loader обновлено до 0.19.3 или новее
- Зависимость Fabric API обновлена до 0.153.0+26.2
- Подтверждена сборка модуля Fabric с набором зависимостей Minecraft 26.2
26.1.x-1.2
- Таймеры теперь сохраняются между перезапусками и падениями сервера
- Добавлены админ-команды (clear, clearall), доступные с уровнем оператора 2
- Логика таймера перенесена в доменную модель
PlayerTimer - Анемичные сеттеры заменены доменными операциями (start, pause, resume, stop, reset)
- Введён enum
TimerOperationResult, заменяющий управление потоком через исключения - Класс
PlayerTimerCommandвыделен изPlayerTimerMod - Добавлен
TimerStoreдля JSON-персистентности через Gson - Добавлено периодическое автосохранение и сохранение при изменении состояния
- Единообразные сообщения источника команд через
TimerCommandContext - Отключение игрока теперь удаляет таймер из памяти и запускает сохранение
26.1.x-1.1
- Добавлена поддержка цветных таймеров
- Добавлены необязательные аргументы цвета для команд запуска таймера
26.1.x-1.0
- Первый релиз для Fabric
- PlayerTimer портирован с Paper на Fabric
- Добавлены таймеры для каждого игрока
- Добавлены режимы обратного и прямого отсчёта
- Добавлена система состояний таймера
- Добавлена система видимости
- Добавлена поддержка команд Brigadier
- Добавлена совместимость с командными блоками
- Добавлен парсинг длительности с несколькими форматами
- Добавлено отображение таймера в action bar
- Добавлены звуки завершения обратного отсчёта
- Добавлена поддержка Java 25
- Логика таймера отрефакторена в
PlayerTimerService
Лицензия
MIT License
Частые вопросы
Как установить PlayerTimer?
Установите Fabric под свою версию Minecraft, скачайте PlayerTimer под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть PlayerTimer?
У PlayerTimer есть сборки для Minecraft 26.1.2–26.2.
Нужен ли PlayerTimer на сервере?
Ставится только на сервер; игрокам ставить не нужно