Servers
Players without the mod, settings, commands, permissions and where progress is saved.
Daily Calendar goes on the server. It does everything that matters there: it decides the date, checks every door against the rules before giving anything, gives the rewards and saves progress. Players’ games only draw the calendar.
Players without the mod
They can join and claim too:
| Player’s game | What they get |
|---|---|
| With Daily Calendar | The calendar screen, the reminder toast, the key and the inventory button |
| Without it | /calendar opens a chest menu of doors (click today’s glowing one; each door’s number is its stack count). A chat reminder with [Open] and [Claim] links, and /calendar claim opens today’s doors from chat. |
The chest menu can be switched off (chestMenuForVanillaPlayers); then /calendar lists the calendars in chat with claim links.
Settings
config/dailycalendar/server.toml, read again by /calendar admin reload:
| Setting | Default | What it does |
|---|---|---|
enabled |
true | Let players open doors. |
timeZone |
server |
The time zone days follow: server (the machine’s), UTC, or a zone like Europe/London. |
rolloverHour |
0 | The hour a new day’s door opens. |
loginReminder |
TOAST |
OFF, CHAT, or TOAST (a pop-up for players with the mod, chat for the rest). |
reminderDelaySeconds |
5 | How long after joining. |
remindAtRollover |
true | Remind players who are online when a new day starts. |
openOnLogin |
false | Open the calendar by itself when a player joins with a door waiting. |
chestMenuForVanillaPlayers |
true | The chest menu for players without the mod. |
announceMilestones |
true | Tell the whole server about milestone doors and streak bonuses. |
milestoneFireworks |
true | A firework for milestones and streak bonuses. |
disabledCalendars |
[] |
Calendar ids to switch off, e.g. ["dailycalendar:advent"]. |
adminPermissionLevel |
2 | Who can use /calendar admin. |
Commands
Everyone: /calendar (also /dailycalendar), /calendar open <calendar>, /calendar claim [calendar], /calendar status.
Admins:
| Command | What it does |
|---|---|
/calendar admin reload |
Reads the settings and calendars again, and lists any mistakes in your files. |
/calendar admin preview <calendar> [date] |
Shows a calendar as a new player would see it (on a date like 2026-12-05), every reward showing. A seasonal one that isn’t on shows its next run. |
/calendar admin test <calendar> <door> |
Gives you a door’s rewards. Nothing is saved. |
/calendar admin give <players> <calendar> <door> |
Gives a door’s rewards and marks it open. |
/calendar admin unclaim <players> <calendar> <door> |
Shuts a door again (today’s can then be opened again today). |
/calendar admin setday <players> <calendar> <door> |
Streak calendars: puts players on that door, openable today. |
/calendar admin reset <players> [calendar] |
Wipes their progress. |
/calendar admin info <player> |
Their progress on every calendar. |
/calendar admin time |
The calendar date, time zone and time to the next day. time shift <days> moves the date for trying things out (until a restart or shift 0). |
Who can use a calendar
A calendar can ask for an op level, scoreboard tags or teams (see Rewards and themes). Every calendar also has a permission node, dailycalendar.calendar.<namespace>.<name> (so dailycalendar.calendar.dailycalendar.daily), for LuckPerms and other permission mods; its default is the calendar’s own rule. Players who can’t use a calendar don’t see it.
No cheating
Only the server’s clock counts, so players changing their computer’s clock gets them nothing. The screen only asks: the server checks a door is really today’s (or within its grace days) before giving anything, and a door can’t be opened twice.
Saving
Each player’s progress is one small file, <world>/dailycalendar/players/<uuid>.json (readable, with their name in it), written straight away whenever a door opens, with a .bak copy beside it. A file that can’t be read is set aside and the copy used.