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,MythicRPGandPAF(which also matches a plugin namedPartyAndFriendsGUI), matched without regard to case. OnlyDefaultandDungeonPartiesregister the/pand/partycommands. Any other value must match an installed plugin's name, otherwise the console logsParty 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, where0means unlimited. See Dungeon Config. - FunctionBuilderItem is case-sensitive and must be the exact uppercase Spigot material name, for example
FEATHER, notfeather. 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 ownconfig.yml. Put it at the top level of that file, not inside itsGeneral:section, or nothing will read it. Omit a key to inherit the global value. Per dungeon,ReadyCheckTimealso 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
OneWorldDungeonsistrue, 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.Gameruleis 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.WorldTimeis only held fixed whiledoDaylightCycleisfalse, andWorldWeatheronly whiledoWeatherCycleisfalse. 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,ItemNameandItemLoreaccepts 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
Hotbarmaterials are also case-sensitive, so useRED_BED, notred_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. UseListingBroadcastPeriodto change how often, and note that the first broadcast fires as soon as the listing is posted.Spectator.GUI.Teleport.TitleandSpectator.GUI.Settings.Title. The code readsGuiTitleunder each of those sections, notTitle.Spectator.GUI.Settings.NightVision.Slotand.Lore. The code readsItemSlotandItemLore, notSlotandLore.Spectator.GUI.Settings.Speed.Name,.Material,.Slotand.Lore. The code reads them underSettings.FlySpeed, notSettings.Speed, and asItemName/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 aGOLDEN_AXE.General.CommandFunctionAsOp. Always off, so a Command function's sender only cycles betweenCONSOLEandPLAYER. The third option,PLAYER_FORCED, which temporarily ops the player so the command runs without their permission, cannot be selected.Experimental.OneWorldDungeonsKeepInv. Superseded byExperimental.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. Always13.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. AlwaysFEATHER.Spectator.GUI.Settings.FlySpeed.ItemSlot. Always11.
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.ymlgets new keys added but nothing is removed, and otherlang/<code>.ymlfiles are left completely alone.maps/default-config.ymlandmaps/default-generator.ymlare copied out once when they are missing and never updated again.- Every dungeon's own
config.ymlis a one-time copy ofmaps/default-config.ymlmade 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.