Date System
Временная шкала заменяет ощущение простого счетчика дней на настраиваемый календарь и ежедневный тост о дате на экране.
TLDR
- Тост появляется, когда клиент обнаруживает новый игровой день.
- Математика календаря основана на настройках сервера (названия месяцев, сокращения, суффикс года, дни в месяце).
- Отображаемые годы в тексте пользовательского интерфейса отсчитываются от 1 (
Year 1,Year 2, ...). - Настройки синхронизируются с сервера на клиенты и могут обновляться во время выполнения.

Как вычисляется дата
Временная шкала преобразует мировое игровое время в индекс дня, а затем отображает его следующим образом:
- день месяца
- индекс/название месяца
- год отображения
Основные константы/входные данные:
ticksPerDay: 24000daysPerMonth: настраивается (1..365)monthNames: настраиваемый список (>= 1месяц)
В окончательном формате, ориентированном на пользователя, используется локализация следующей формы:
Day <n> of <Month>, <Year> <Suffix>
Конфигурация календаря (сервер)
Ключевые параметры на стороне сервера в разделе calendar:
monthNamesmonthAbbreviations(MonthName=Abbrevстрок)yearSuffixdaysPerMonthuseCustomFontuseSereneSeasonsseasonMonths
ГЛУБОКОЕ ПОГРУЖЕНИЕ: запасной вариант сокращения
Если сокращения месяцев отсутствуют или недействительны, временная шкала возвращается к первым трем буквам названия каждого месяца.
Шрифт Toast (клиент)
Конфигурация клиента поддерживает:
VANILLAGOTHIC12GOTHIC24
Это меняет только представление, а не базовую математику даты.
Синхронизация и горячая перезагрузка
- Сервер периодически хэширует настройки активного календаря.
- Если хеш изменится, обновленные настройки будут переданы подключенным игрокам.
- Клиентские кеши заменяются новым определением и немедленно используются для рендеринга.
Нюанс отображения года
В некоторых классах математические вычисления внутреннего календаря имеют корни, отсчитываемые от 0, но сообщения о дате UI/API намеренно отображают годы как отсчет от 1 (yearIndex + 1).
Поддержать проект
Нравится эта вики и эти моды?
Любая поддержка помогает мне развивать функции, писать документацию и выпускать обновления.