Config

Mythic Dungeons comes with a default config that includes lots of comments to explain all the different config options. But just in case you need to reference the original config, or if there's been updates with new config options, you can always retrieve the config from here!

Mythic Dungeons config.yml

General:
  # The language file to load from the lang/ folder (without the .yml extension).
  # 'en' uses lang/en.yml. To add another language, copy lang/en.yml to lang/<code>.yml
  # (for example lang/tr.yml), translate the values, then set this to that code.
  # Any keys you don't translate fall back to English automatically.
  Language: en
  # What plugin to use for the party system. Defaults to DungeonParties, which is provided by Mythic Dungeons.
  PartyPlugin: Default
  # Enable or disable the built-in party-chat system
  PartyChat: false
  # The max number of instances that can be run on this server.
  MaxInstances: 10
  # The interval between autosaves of the dungeon while in edit mode in seconds. 0 disables autosave. (NOT RECOMMENDED)
  AutoSaveInterval: 300
  # What the function builder item's material is. Must be a valid Spigot material.
  # Useful if you have another plugin that also uses FEATHER for a tool, like goPaint
  FunctionBuilderItem: FEATHER
  # Whether the `/md stuck` command kills the player.
  StuckKillsPlayer: false
  # Whether only the party leader is allowed to start a dungeon for the party.
  LeaderOnlyQueue: true
  # Whether to require all party members confirm they're ready before entering a dungeon after the play command is run.
  # Note: This check is used if there is no queue to get into the dungeon.
  ReadyCheckOnCommand: true
  # Whether to require all party members confirm they're ready before entering a dungeon after waiting in the queue.
  ReadyCheckInQueue: true
  # How long in seconds the ready check (from when a dungeon becomes available) will wait for all players to be ready.
  ReadyCheckTime: 45
  # Whether to send all ready players into the dungeon when the above timer expires.
  StartWithoutUnreadyPlayers: false
  # Whether to require the party leader to be ready when starting without all players.
  ReadyCheckRequireLeader: true
  PartyFinder:
    # Whether to automatically broadcast party recruitments regularly.
    AutoBroadcast: true
    # How many minutes there should be between each broadcast of a recruitment listing.
    ListingBroadcastPeriod: 5
  # What Multiverse-Inventories group to use for all dungeons.
  MultiverseGroup: default
# Settings related to procedural (room-based) dungeon generation.
Generator:
  # How long the generator will spend trying to create a valid dungeon layout in seconds. If you have particularly complex dungeons, consider increasing this.
  # NOTE: This is handled async and will NOT lock up your server! Yay! This is useful if you have very large dungeons or rooms with lots of restrictive rules.
  Timeout: 5
# These config options have potential to cause unforeseen issues and strangeness.
Experimental:
  # Whether entities standing on moving blocks will move with the block.
  # WARNING :: Upwards movement will not work unless `allow-flight` in server.properties is set to TRUE! Use at your own risk!
  # WARNING 2 :: Jumping from a moving block DOES NOT WORK due to ping latency! We are investigating if this can be fixed but it seems unlikely due to vanilla limitations.
  MovingBlocksMoveEntities: false
  # Whether to keep all dungeons in a master world to avoid constantly loading and unloading worlds. SIGNIFICANTLY reduces risks of memory leaks.
  # WARNING :: This does NOT load all dungeons into your existing survival worlds!! It creates a SEPARATE world that will host all the dungeons!
  OneWorldDungeons: false
  # Baseline world options for the shared OneWorldDungeons world. These apply to all dungeons.
  # Dungeons can still override time and weather per-player when they differ from these values.
  # Only the gamerules you list are changed; anything omitted keeps its vanilla default.
  OneWorldDungeonsWorld:
    # PEACEFUL, EASY, NORMAL, or HARD.
    Difficulty: NORMAL
    # Ticks. Only fixed when doDaylightCycle is false.
    WorldTime: 6000
    # CLEAR or DOWNFALL. Only fixed when doWeatherCycle is false.
    WorldWeather: CLEAR
    Gamerule:
      keepInventory: false
      doDaylightCycle: true
      doWeatherCycle: true
      mobGriefing: true
      randomTickSpeed: 0
Spectator:
  # Whether to use the legacy spectator system, modern one requires packetevents.
  UseLegacy: true
  Hotbar:
    Teleport:
      Material: COMPASS
      Slot: 0
      Name: '<green>Teleport to Player</green>'
      Lore:
        - '<gray>Click to open the teleport gui.</gray>'
    Settings:
      Material: COMPARATOR
      Slot: 4
      Name: '<aqua>Options</aqua>'
      Lore:
        - '<gray>Click to change some spectator options.</gray>'
    Leave:
      Material: RED_BED
      Slot: 8
      Name: '<red>Leave Dungeon</red>'
      Lore:
        - '<gray>Click to leave the dungeon.</gray>'
  GUI:
    Teleport:
      Title: '<gray>Teleport to Player</gray>'
      ItemName: '<green>Teleport to %player_name%</green>'
      ItemLore:
        - '<gray>Click to teleport to %player_name%.</gray>'
    Settings:
        Title: '<gray>Options</gray>'
        NightVision:
          EnabledName: '<gold>Night Vision</gold>'
          DisabledName: '<red>Night Vision</red>'
          EnabledMaterial: GLOWSTONE
          DisabledMaterial: GUNPOWDER
          Slot: 13
          Lore:
            - '<gray>Click to toggle night vision.</gray>'
        Speed:
            Name: '<white>Speed: {speed}</white>'
            Material: FEATHER
            Slot: 11
            Lore:
                - '<gray>Cycle fly speed, right click to increase, left click to reset</gray>'

General options

Option Type Default What it does
Language text en Which file in the lang/ folder is loaded, without the .yml. en loads lang/en.yml.
PartyPlugin text Default Which plugin provides the party system.
PartyChat true/false false Enables the built-in party chat. While it is on, a player who has party chat toggled on has their chat sent to their party instead of public chat.
MaxInstances number 10 Server-wide cap on how many dungeon instances can be running at once. It only stops a new instance from being created.
AutoSaveInterval number (seconds) 300 How often a dungeon in edit mode autosaves. 0 (or less) turns autosave off.
FunctionBuilderItem material name FEATHER The material of the function builder tool.
StuckKillsPlayer true/false false When true, /md stuck kills the player so they respawn. When false, it teleports them to their last checkpoint. The /md stuck help line is always shown, only its wording changes.
LeaderOnlyQueue true/false true Whether only the party leader may start a dungeon for the party.
ReadyCheckOnCommand true/false true Whether a ready check runs after the play command when there is no queue to wait in.
ReadyCheckInQueue true/false true Whether a ready check runs when the dungeon becomes available after queueing.
ReadyCheckTime number (seconds) 45 How long a ready check waits for everyone to confirm.
StartWithoutUnreadyPlayers true/false false Whether the players who did confirm are sent in when the ready-check timer expires.
ReadyCheckRequireLeader true/false true Whether the party leader must be ready for a start without all players.
PartyFinder.AutoBroadcast true/false true Nothing. The plugin never reads this option, see "Options that are not currently applied" below.
PartyFinder.ListingBroadcastPeriod number (minutes) 5 How long between broadcasts of a party recruitment listing.
MultiverseGroup text default The Multiverse-Inventories world group a dungeon world joins when it loads and leaves when it is disposed.

Generator options

Option Type Default What it does
Generator.Timeout number (seconds) 5 How long the plugin will spend trying to build a valid procedural layout before giving up. The same value also limits the safe spawn location search. Read fresh every time it is used.

Experimental options

Option Type Default What it does
MovingBlocksMoveEntities true/false false Whether entities standing on a moving block move with it.
OneWorldDungeons true/false false Whether every dungeon instance runs inside one shared world instead of a world of its own. See One World Dungeons.
OneWorldDungeonsWorld.Difficulty text NORMAL Difficulty of the shared world: PEACEFUL, EASY, NORMAL or HARD. An unrecognised value is logged and the difficulty is left alone.
OneWorldDungeonsWorld.WorldTime number (ticks) 6000 The fixed time of day for the shared world, applied only while doDaylightCycle is false. It is also the baseline that per-player time overrides are compared against.
OneWorldDungeonsWorld.WorldWeather text CLEAR CLEAR or DOWNFALL, applied only while doWeatherCycle is false. Anything that is not DOWNFALL clears both rain and thunder. Also the baseline for per-player weather overrides.
OneWorldDungeonsWorld.Gamerule.keepInventory true/false false Applied as a real gamerule on the shared world.
OneWorldDungeonsWorld.Gamerule.doDaylightCycle true/false true Applied as a gamerule, and gates whether WorldTime is held fixed.
OneWorldDungeonsWorld.Gamerule.doWeatherCycle true/false true Applied as a gamerule, and gates whether WorldWeather is held fixed.
OneWorldDungeonsWorld.Gamerule.mobGriefing true/false true Applied as a real gamerule on the shared world.
OneWorldDungeonsWorld.Gamerule.randomTickSpeed number 0 Applied as a real gamerule on the shared world.
OneWorldDungeonsWorld.Gamerule.(any other rule) true/false or number not shipped The Gamerule section is not a fixed list. Add any valid gamerule name and it is applied. An unknown name or a value of the wrong type is skipped with a console warning.

Spectator options

UseLegacy and the whole Hotbar block are read once when the plugin starts. The GUI block is only read when the modern spectator system is active, so with legacy spectating those options are never loaded at all.

Option Type Default What it does
UseLegacy true/false true true puts spectators in plain spectator mode. false uses the reworked system with the custom hotbar and menus below.
Hotbar.Teleport.Material material name COMPASS Material of the teleport item.
Hotbar.Teleport.Slot number 0 Hotbar slot the teleport item is placed in.
Hotbar.Teleport.Name text '<green>Teleport to Player</green>' Display name of the teleport item.
Hotbar.Teleport.Lore list of text one line Lore of the teleport item.
Hotbar.Settings.Material material name COMPARATOR Material of the options item.
Hotbar.Settings.Slot number 4 Hotbar slot the options item is placed in.
Hotbar.Settings.Name text '<aqua>Options</aqua>' Display name of the options item.
Hotbar.Settings.Lore list of text one line Lore of the options item.
Hotbar.Leave.Material material name RED_BED Material of the leave item.
Hotbar.Leave.Slot number 8 Hotbar slot the leave item is placed in.
Hotbar.Leave.Name text '<red>Leave Dungeon</red>' Display name of the leave item.
Hotbar.Leave.Lore list of text one line Lore of the leave item.
GUI.Teleport.Title text '<gray>Teleport to Player</gray>' Nothing. The code reads Spectator.GUI.Teleport.GuiTitle instead, which is not shipped. See "Options that are not currently applied" below.
GUI.Teleport.ItemName text '<green>Teleport to %player_name%</green>' Name of each player head in the teleport menu. %player_name% is replaced, and PlaceholderAPI placeholders work when that plugin is installed.
GUI.Teleport.ItemLore list of text one line Lore of each player head. %player_name% is not replaced here, so the shipped line shows the placeholder as written.
GUI.Settings.Title text '<gray>Options</gray>' Nothing. The code reads Spectator.GUI.Settings.GuiTitle instead, which is not shipped.
GUI.Settings.NightVision.EnabledName text '<gold>Night Vision</gold>' Name of the night vision button while night vision is on.
GUI.Settings.NightVision.DisabledName text '<red>Night Vision</red>' Name of the night vision button while night vision is off.
GUI.Settings.NightVision.EnabledMaterial material name GLOWSTONE Material of the night vision button while it is on.
GUI.Settings.NightVision.DisabledMaterial material name GUNPOWDER Material of the night vision button while it is off.
GUI.Settings.NightVision.Slot number 13 Nothing. The code reads NightVision.ItemSlot instead, which is not shipped, so the button stays on slot 13.
GUI.Settings.NightVision.Lore list of text one line Nothing. The code reads NightVision.ItemLore instead, which is not shipped, so the button has no lore.
GUI.Settings.Speed.Name text '<white>Speed: {speed}</white>' Nothing. The code reads Settings.FlySpeed.ItemName instead, which is not shipped, so the button is always named "Fly Speed".
GUI.Settings.Speed.Material material name FEATHER Nothing. The code reads Settings.FlySpeed.ItemMaterial instead, which is not shipped, so the button is always a feather.
GUI.Settings.Speed.Slot number 11 Nothing. The code reads Settings.FlySpeed.ItemSlot instead, which is not shipped, so the button stays on slot 11.
GUI.Settings.Speed.Lore list of text one line Nothing. The code reads Settings.FlySpeed.ItemLore instead, which is not shipped, so the button has no lore.

Notes on individual options

  • Language is a file name in the lang/ folder without the .yml. If the file does not exist, the plugin logs a notice and uses English. Keys you leave untranslated fall back to English one key at a time, so a partial translation is fine.
  • PartyPlugin recognises Default, DungeonParties, Heroes, Parties, MythicRPG and PAF (which also matches a plugin named PartyAndFriendsGUI), matched without regard to case. Only Default and DungeonParties register the /p and /party commands. Any other value must match an installed plugin's name, otherwise the console logs Party plugin is set to '<name>', but no such plugin was found! and party support stays off.
  • MaxInstances only stops a new instance from being created. A player can still join a running instance that has room. Each dungeon can also set its own General.MaxInstances, where 0 means unlimited. See Dungeon Config.
  • FunctionBuilderItem is case-sensitive and must be the exact uppercase Spigot material name, for example FEATHER, not feather. A name that does not match exactly is not replaced by the default, and handing out the function builder tool then fails.
  • AutoSaveInterval is read when an edit session starts, so a change only affects edit sessions opened after it.
  • MultiverseGroup only does anything when Multiverse-Inventories is installed. A group name that does not exist is ignored silently.
  • Queue and ready-check options (LeaderOnlyQueue, ReadyCheckOnCommand, ReadyCheckInQueue, ReadyCheckTime, StartWithoutUnreadyPlayers, ReadyCheckRequireLeader) can each be overridden per dungeon (2.0.1+) by adding the same key to that dungeon's own config.yml. Put it at the top level of that file, not inside its General: section, or nothing will read it. Omit a key to inherit the global value. Per dungeon, ReadyCheckTime also accepts a placeholder or a math expression instead of a plain number; placeholders need MythicMobs installed and math needs MythicMobs Premium, and without them the value falls back to the global setting.
  • OneWorldDungeonsWorld is only used when OneWorldDungeons is true, and it is only applied when the shared dungeon world is created, so changes need a restart. Because every dungeon shares that one world, these are the settings for all of them. Gamerule is an open list: add any valid gamerule name and it is applied, while unknown names and wrong value types are skipped with a console warning. WorldTime is only held fixed while doDaylightCycle is false, and WorldWeather only while doWeatherCycle is false. A dungeon whose own time or weather differs from these values gets a per-player override instead. When a dungeon has gamerules that a shared world cannot honour, the console lists them and points you at this section. See One World Dungeons.
  • Spectator.UseLegacy needs both PacketEvents and MythicMobs for the modern system. If either plugin is missing, the legacy system is used no matter what this is set to. (The comment in the shipped file mentions only PacketEvents.)
  • Spectator text in Name, Lore, ItemName and ItemLore accepts MiniMessage tags (as shipped) and legacy & colour codes.
  • Spectator materials must be valid material names. An invalid one is not replaced by a default, it throws an error during startup and the plugin ends up disabled. The Hotbar materials are also case-sensitive, so use RED_BED, not red_bed.

Options that are not currently applied

These options ship in config.yml but no code reads them. Changing them has no effect:

  • General.PartyFinder.AutoBroadcast. Recruitment listings always broadcast. Use ListingBroadcastPeriod to change how often, and note that the first broadcast fires as soon as the listing is posted.
  • Spectator.GUI.Teleport.Title and Spectator.GUI.Settings.Title. The code reads GuiTitle under each of those sections, not Title.
  • Spectator.GUI.Settings.NightVision.Slot and .Lore. The code reads ItemSlot and ItemLore, not Slot and Lore.
  • Spectator.GUI.Settings.Speed.Name, .Material, .Slot and .Lore. The code reads them under Settings.FlySpeed, not Settings.Speed, and as ItemName / ItemMaterial / ItemSlot / ItemLore. The button ends up a feather in slot 11 named "Fly Speed", with no lore and no live speed number.

The names the code reads instead are all in the next section, and none of them can be added by hand.

Options the plugin reads but does not ship

Eleven option names exist in the code but are not in the bundled config.yml. Because the config sync below deletes any key that is not in the bundle, and it does so before the plugin reads the file, adding them by hand does not work. They are listed here only so you know what their fixed behaviour is:

  • General.RoomEditorItem. The room editor tool is always a GOLDEN_AXE.
  • General.CommandFunctionAsOp. Always off, so a Command function's sender only cycles between CONSOLE and PLAYER. The third option, PLAYER_FORCED, which temporarily ops the player so the command runs without their permission, cannot be selected.
  • Experimental.OneWorldDungeonsKeepInv. Superseded by Experimental.OneWorldDungeonsWorld.Gamerule.keepInventory, which is what you should set.
  • Spectator.GUI.Teleport.GuiTitle. Title of the teleport menu. Always &8Teleport to Player.
  • Spectator.GUI.Settings.GuiTitle. Title of the spectator settings menu. Always &8Spectator Settings.
  • Spectator.GUI.Settings.NightVision.ItemSlot. Always 13.
  • Spectator.GUI.Settings.NightVision.ItemLore. Always empty.
  • Spectator.GUI.Settings.FlySpeed.ItemName. Always &8Fly Speed. This is the only name a {speed} token would be substituted into (with the fly speed times ten), and the fixed default does not contain one, which is why the button never shows a number.
  • Spectator.GUI.Settings.FlySpeed.ItemLore. Always empty.
  • Spectator.GUI.Settings.FlySpeed.ItemMaterial. Always FEATHER.
  • Spectator.GUI.Settings.FlySpeed.ItemSlot. Always 11.

How config.yml is kept up to date

config.yml repairs itself every time the server starts and every time you run /md reload:

  • Any option that exists in the new version but is missing from your file is added with its default value.
  • Any option that is not in the plugin's bundled config is deleted from your file. Keys you add by hand do not survive, and they are removed before the plugin reads the file, so they never take effect at all.
  • The # help text above each option is refreshed from the bundle whenever anything was added or removed, so your own comments on those options are replaced.
  • Every change is logged, one line per key: [config.yml] Added missing key <key> and [config.yml] Removed obsolete key <key>.

This applies to config.yml only:

  • lang/en.yml gets new keys added but nothing is removed, and other lang/<code>.yml files are left completely alone.
  • maps/default-config.yml and maps/default-generator.yml are copied out once when they are missing and never updated again.
  • Every dungeon's own config.yml is a one-time copy of maps/default-config.yml made when the dungeon is created, and is never synced afterwards. New per-dungeon options use their built-in defaults until you add them by hand. See Dungeon Config.

What /md reload picks up

/md reload (see Commands and Permissions) re-reads Language, FunctionBuilderItem and StuckKillsPlayer, and reloads the language files and loot tables.

These take effect on their next use without any reload, because they are read fresh each time: MaxInstances, AutoSaveInterval (next edit session), MultiverseGroup, all six queue and ready-check options, PartyChat, PartyFinder.ListingBroadcastPeriod (next listing) and Generator.Timeout.

These need a full server restart: PartyPlugin, MovingBlocksMoveEntities, OneWorldDungeons, everything under OneWorldDungeonsWorld and everything under Spectator.

Updated Aug 19, 2026