Options

Each event is one .yml file in plugins/MythicSeasons/events/. Events explains how events run.

  • Every .yml file in the folder is loaded, except events.yml and custom-events.yml. Subfolders and .yaml files are not read.
  • Unknown keys are ignored without a warning.
  • /ms reload loads the folder again.
  • The shipped files (christmas, newyear, halloween, easter, example) come back when deleted. To turn one off, set enabled: false.

Identity

Option Default What it does
id none Required. The event's name, turned into lower case, used by isEvent, /ms event and the signals startEvent_<id> and endEvent_<id>. Files without it are skipped with a warning.
enabled true false keeps the file as a draft: the event is not loaded.
display-name the id Shown in /ms getinfo and the event placeholders, MiniMessage tags included. Not translated.
display-event true false hides the event from /ms getinfo and the active and next event placeholders. isEvent, lines, Bukkit events and signals still work.
  • If mobs react to an event's signals, keep its id to letters, digits, _ and -.
  • Two files with the same id replace each other without a warning, and either may win.

Schedule

Option Default What it does
type dated dated, weekly or daily, in any letter case. Another value logs a warning and counts as dated.
schedule.start none First active day of a dated event, see Date forms.
schedule.stop none Last active day of a dated event, in the same form as schedule.start.
schedule.day none Weekday of a weekly event from week-days in calendar.yml, any letter case. Other names count as the first weekday, without a warning.

Keys of another type are ignored.

Date forms

Form Example Active
day/month 25/12 In every in-game year
day/month/year 25/12/3 Only in that in-game year
Plain day number 5 On those days of every month
  • With american-date-format: true in calendar.yml, the first two forms are written month/day and month/day/year.
  • The month is a number from 1 to the number of months in calendar.yml. A day past the end of its month counts as its last day.
  • A range may cross the end of the year.
  • In-game years start at 0 (the real year with sync-time-with-real-world).
  • Keep a range with years shorter than one year. The next-event placeholders ignore years, see Events.
  • With plain day numbers, start must not be above stop, and the event is never listed as the next event.

Worlds

Option Default What it does
disabled-worlds none Worlds where the event never starts, stops or counts as active. Names are case-sensitive. NONE, the shipped placeholder, matches no world.

Worlds in worlds-without-events in calendar.yml run no lines of any event, but events still count as active there. See Events.

Lines

Option Default What it does
commands.start none Lines that run when the event starts in a world, for a daily event at every day change.
commands.stop none Lines that run on the day change after the last active day (%day% is the first day without the event). A daily event runs them only on /ms event stop.
  • A line starting with / is a console command, NONE does nothing, and other lines are chat messages to that world, with MiniMessage tags. Lines can use %season%, %world%, %day%, %month%, %month_asname%, %year%, %weekday% and PlaceholderAPI placeholders (without a player), see Events.
  • Quote every line. A line that starts with % is not valid YAML unquoted.

Messages in the server log

Message Meaning
Loaded event: <id> The event was loaded.
Event file <file> has no 'id' field, skipping. The file has no id.
Invalid event type '<TYPE>' in <file>, defaulting to DATED. type is not dated, weekly or daily.
events/<file> is a dated event but has no schedule.start and schedule.stop, skipping it. A date is missing.
events/<file> is a weekly event but has no schedule.day, skipping it. schedule.day is missing.
events/<file> schedule.start '<a>' / schedule.stop '<b>': dates must be day/month, day/month/year or a plain day number. Skipping this event. A date is not made of numbers, has a month outside the calendar or misses a part.
Event <id> mixes a schedule date with a year and one without ('<a>' / '<b>'), ignoring the year. Only one of the two dates has a year, so both years are ignored.
Failed to load event file: <file> Another error while reading the file. A stack trace follows.

Examples

id: winter-holidays
type: dated
schedule:
  start: 20/12
  stop: 5/1
commands:
  start:
  - "<aqua>The winter holidays have begun in %world%."

Crosses the change of year. Stop lines would run on 6 January.

id: founders-week
type: dated
schedule:
  start: 20/12/3
  stop: 5/1/4

Runs once, from in-game year 3 into year 4.

id: first-week
display-name: "<yellow>First Week"
type: dated
schedule:
  start: 1
  stop: 7

Active on days 1 to 7 of every month.

Updated Nov 11, 2026