Timeline

Date System

Timeline replaces the feeling of a raw day counter with a configurable calendar and a daily on-screen date toast.

TLDR
  • The toast appears when the client detects a new in-game day.
  • Calendar math is based on server settings (month names, abbreviations, year suffix, days per month).
  • Displayed years are 1-based in UI text (Year 1, Year 2, ...).
  • Settings sync from server to clients and can update during runtime.
Daily date toast in-game with ornaments visible.

How The Date Is Computed

Timeline converts world game time to a day index, then maps that to:

  • day of month
  • month index/name
  • display year

Core constants/inputs:

  • ticksPerDay: 24000
  • daysPerMonth: configurable (1..365)
  • monthNames: configurable list (>= 1 month)

The final user-facing format uses localization with this shape:

Day <n> of <Month>, <Year> <Suffix>

Calendar Configuration (Server)

Key server-side options under calendar:

  • monthNames
  • monthAbbreviations (MonthName=Abbrev lines)
  • yearSuffix
  • daysPerMonth
  • useCustomFont
  • useSereneSeasons
  • seasonMonths
DEEP DIVE: abbreviation fallback

If month abbreviations are missing or invalid, Timeline falls back to the first 3 letters of each month name.

Toast Font (Client)

Client config supports:

  • VANILLA
  • GOTHIC12
  • GOTHIC24

This only changes presentation, not the underlying date math.

Sync And Hot Reload Behavior

  • Server periodically hashes active calendar settings.
  • If the hash changes, it broadcasts updated settings to connected players.
  • Client caches are replaced with the new definition and used immediately for rendering.
Display-year nuance

Internal calendar math has 0-based roots in some classes, but UI/API date messages intentionally display years as 1-based (yearIndex + 1).

Support This Project

Like this wiki and these mods?

Every bit of support helps me keep building features, writing docs, and shipping updates.

Back to top