
TimeLib
Датапак для Minecraft TimeLib позволяет получать реальную дату и время внутри игры с точностью до тика.
TimeLib - это датапак для Minecraft Java Edition (версии 1.x), который решает давнюю проблему синхронизации внутриигрового времени с реальным миром.
Если вы когда‑нибудь хотели сделать автоматическую ферму по расписанию или устроить событие по часам - этот датапак вам пригодится.
Важно! На момент написания этого обзора автор обнаружил несколько серьёзных проблем с работой TimeLib из‑за ограничений самой игры Mojang.
Фундаментальные проблемы (пока неисправимые)
Из‑за этих проблем пользователю приходится каждый раз при перезагрузке мира вручную подтверждать или корректировать дату - что ломает саму идею автоматизации.
- Если профиль головы игрока (содержащий временную метку) старше 24 часов (из‑за кэширования), автоматически определить точную дату невозможно.
- Начиная с версии Minecraft 1.21 получить unix timestamp можно только от онлайн‑игроков - значит пока никого нет на сервере дата не обновляется.
- Счётчик PausedTicks работает только если хотя бы один игрок был онлайн всё время заморозки игры.
- Из‑за перехода на летнее время unix timestamp может откатиться на час назад - что ломает монотонность времени.
Другие известные исправимые баги
- При редких обстоятельствах дата может оказаться на один день вперёд.
- Дата не увеличивается после того как прошло более одного дня без перезагрузки сервера/клиента.
- Пока время ещё не синхронизировано после загрузки датапак не сообщает об этом - может привести к ошибкам.
TimeLib
Датапак предоставляет следующие возможности:
- Получение реальной даты и времени с точностью до тика:
- Год месяц день день недели час минута секунда unix timestamp.
- Текущий тикрейт игры.
- Определение паузы игры (
/tick freezeили одиночная игра) и её длительности. - Конвертация любого unix timestamp в дату/время.
- Поддержка разных часовых поясов и летнего времени.
- Высокая эффективность даже при лагах или изменении тикрейта.
Скачайте датапак TimeLib для Майнкрафт Java Edition чтобы получить реальное время прямо в игре.
Как использовать
После установки датапак автоматически отслеживает время для вас сначала нужно настроить параметры под себя через чат или команду /function timelib:util/settings.
Настройки
Command Block Offset- смещение между UTC временем вашей системы если отличается например UTC 7pm системные часы показывают 8pm ставьте +1h.Timezone Offset- смещение отображаемого времени например +1h покажет час позже.
Получение реального времени
Значения хранятся внутри игрока #TimeLib по отдельным скорам:
TimeLib Year Month Day WeekDay Hour Minute Second UnixTime
Также строковые версии даты хранятся в хранилищах timelib date и timelib daytime.
События
#timelib date_changed- выполняется при изменении даты.#timelib daytime_changed- выполняется при изменении времени суток.#timelib game_unpaused- выполняется при возобновлении игры после паузы содержит количество пропущенных тиков в скореPausedTicks.
Получение тикрейта
Обновляется раз в секунду читается из скора TimeLib Tickrate.
Конвертация unix timestamp
Установите входной скор Input UnixTime, выполните /function timelib util/unix_timestamp_to_date, результат появится в скорах вывода Output.
Как это работает
TimeLib комбинирует Base64‑закодированный unix timestamp из голов игроков с информацией о времени суток из вывода командных блоков чтобы вычислить текущую дату/время Тикрейт считается подсчётом тиков между изменениями времени суток Пауза определяется через скор minecraft custom total_world_time.
Важно знать
- Для работы требуется интернет‑соединение.
- Тикрейт определяется без использования трюков с границей мира.
- Если ваш датапак использует чанк с координатами
29999999 29999999возможен конфликт. - Начиная с версии 2 3 0 используется библиотека lantern load проверяющая зависимости через скоры
load status. - Обновление до новой версии просто замените старый датапак новым после версии 2 3 0 Для более старых версий сначала выполните
/function timelib uninstall.
Лицензия MIT
Вы можете свободно распространять изменять и использовать TimeLib при условии указания авторства оригинальной работы.
