### Start Local Wiki Development Server with Gollum Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/git_access Starts the Gollum wiki development server. This command launches a local web server, typically on port 4567, allowing you to preview and edit wiki content locally before pushing changes. It utilizes Sinatra and Thin for web serving. ```bash gollum == Sinatra/1.3.5 has taken the stage on 4567 for development with backup from Thin >> Thin web server (v1.5.0 codename Knife) >> Maximum connections set to 1024 >> Listening on 0.0.0.0:4567, CTRL+C to stop ``` -------------------------------- ### Full Hotbar Menu Example - Java Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/GUI-Menus/diff_version_id=ef0b436ec07b85a0829347f03d6d7764259831b4&view=parallel&w=1 This comprehensive Java code provides a full example of building a hotbar menu in Mythic Dungeons. It includes adding a default menu item and demonstrates the structure for populating the menu with various options. ```java @Override public void buildHotbarMenu() { // First, we add our example menu item. menu.addMenuItem(new MenuItem() { @Override public void buildButton() { button = new MenuButton(Material.KNOWLEDGE_BOOK); button.setDisplayName("&d&lExample Option"); } @Override public void onSelect(PlayerEvent event) { Player player = event.getPlayer(); ``` -------------------------------- ### Full Hotbar Menu Example in Java Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/GUI-Menus/diff_version_id=ef0b436ec07b85a0829347f03d6d7764259831b4&view=parallel This comprehensive Java code example shows a complete implementation of a hotbar menu, including adding a `MenuItem`. It demonstrates the structure for building the menu and its items within the `buildHotbarMenu()` method. ```java @Override public void buildHotbarMenu() { // First, we add our example menu item. menu.addMenuItem(new MenuItem() { @Override public void buildButton() { button = new MenuButton(Material.KNOWLEDGE_BOOK); button.setDisplayName("&d&lExample Option"); } @Override public void onSelect(PlayerEvent event) { Player player = event.getPlayer(); ``` -------------------------------- ### Room Configuration Example (YAML) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Procedural-Dungeons/diff_version_id=e64c5026aac2cb5ff353ed64c966b9ab42e42412&view=inline&w=1 Example of a room configuration file within a procedural dungeon. It includes settings like weight, minimum/maximum generation count, and connector configurations. ```yaml Rooms: - Name: "ExampleRoom" Weight: 10 MinGenerates: 1 MaxGenerates: 5 Connectors: - Type: exit AllowedRooms: ["AnotherRoom"] Weight: 1.0 ``` -------------------------------- ### Full Example: Building Hotbar Menu in Java Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/GUI-Menus/diff_version_id=ef0b436ec07b85a0829347f03d6d7764259831b4&w=1 This comprehensive Java example demonstrates how to construct a complete hotbar menu in Mythic Dungeons. It includes adding both a standard MenuItem and a ChatMenuItem, showcasing the order of addition and the integration of different interactive elements within the menu system. ```java @Override public void buildHotbarMenu() { // First, we add our example menu item. menu.addMenuItem(new MenuItem() { @Override public void buildButton() { button = new MenuButton(Material.KNOWLEDGE_BOOK); button.setDisplayName("&d&lExample Option"); } @Override public void onSelect(PlayerEvent event) { Player player = event.getPlayer(); player.sendMessage("Player has selected this button!")); } }); // Then, we add our chat menu item. These will appear in the hotbar in the order we add them. menu.addMenuItem(new ChatMenuItem() { @Override public void buildButton() { button = new MenuButton(Material.MAP); ``` -------------------------------- ### Maven Repository Setup for MythicDungeons Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API Add this repository to your pom.xml to access MythicDungeons artifacts. Ensure it's placed within the appropriate section. ```xml aestrus-releases Aestrus's Repository https://maven.aestrus.io/releases ``` -------------------------------- ### Access MythicDungeons API Service (Java) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=0b30271d9efb9d896bd99760329ad096786ba5f6&view=inline&w=1 This Java code snippet shows how to obtain an instance of the MythicDungeonsService, which is the entry point for interacting with the MythicDungeons API. It is part of the core API setup. ```java public static MythicDungeonsService mythicDungeonsAPI() { return null; } ``` -------------------------------- ### Full Hotbar Menu Example in Java Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/GUI-Menus/diff_version_id=ef0b436ec07b85a0829347f03d6d7764259831b4 This comprehensive Java example illustrates how to populate a hotbar menu by adding multiple menu items, including a standard `MenuItem` and a `ChatMenuItem`. It demonstrates the order of addition and the structure for defining button behavior. ```java @Override public void buildHotbarMenu() { // First, we add our example menu item. menu.addMenuItem(new MenuItem() { @Override public void buildButton() { button = new MenuButton(Material.KNOWLEDGE_BOOK); button.setDisplayName("&d&lExample Option"); } @Override public void onSelect(PlayerEvent event) { Player player = event.getPlayer(); player.sendMessage("Player has selected this button!"); } }); // Then, we add our chat menu item. These will appear in the hotbar in the order we add them. menu.addMenuItem(new ChatMenuItem() { @Override public void buildButton() { button = new MenuButton(Material.MAP); ``` -------------------------------- ### Install Gollum Wiki Engine Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/git_access Installs the Gollum wiki engine using RubyGems. Gollum is a simple, Git-powered wiki system. ```ruby gem install gollum ``` -------------------------------- ### MythicDungeons API Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API This section details how to integrate the MythicDungeons plugin into your Spigot/Paper server projects. It covers dependency setup for Maven and provides code examples for accessing the API methods. ```APIDOC ## MythicDungeons API Documentation **DISCLAIMER**: The API is currently DOWN!! It will get fixed when a new Spigot version is released. ### Dependency Setup #### Maven Add the following to your `pom.xml` file. **Repository** ```xml aestrus-releases Aestrus's Repository https://maven.aestrus.io/releases ``` **Dependency** ```xml net.playavalon MythicDungeons 1.3.0-SNAPSHOT provided ``` *Note: The scope **must** be `provided`.* #### Gradle *Coming Soon* ### Accessing API Methods To utilize methods built into MythicDungeons, you can create a static method in your root plugin class and retrieve the `MythicDungeonsService`. **Java Example** ```java public static MythicDungeonsService mythicDungeonsAPI() { return Bukkit.getServer().getServicesManager().load(MythicDungeonsService.class); } ``` **Example Usage** ```java if (MyPlugin.mythicDungeonsAPI().isPlayerInDungeon(player)) { // Do something } ``` ### Javadocs For more detailed information about methods and events, refer to the Javadocs: [https://docs.mythicdungeons.aestrus.io](https://docs.mythicdungeons.aestrus.io) ``` -------------------------------- ### Example MythicDungeons API Usage (Java) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API An example of how to use the MythicDungeonsService to check if a player is currently in a dungeon. This requires the MythicDungeonsService to be loaded first. ```java if (MyPlugin.mythicDungeonsAPI().isPlayerInDungeon(player) { // Do something } ``` -------------------------------- ### Full Hotbar Menu Example in Java Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/GUI-Menus/diff_version_id=ef0b436ec07b85a0829347f03d6d7764259831b4&view=inline&w=1 This comprehensive Java example demonstrates building a hotbar menu in Mythic Dungeons by adding both a standard `MenuItem` and a `ChatMenuItem`. The code shows the order of addition for menu items and their respective configurations for button appearance and selection actions, including chat input handling. ```java @Override public void buildHotbarMenu() { // First, we add our example menu item. menu.addMenuItem(new MenuItem() { @Override public void buildButton() { button = new MenuButton(Material.KNOWLEDGE_BOOK); button.setDisplayName("&d&lExample Option"); } @Override public void onSelect(PlayerEvent event) { Player player = event.getPlayer(); player.sendMessage("Player has selected this button!"); } }); // Then, we add our chat menu item. These will appear in the hotbar in the order we add them. menu.addMenuItem(new ChatMenuItem() { @Override public void buildButton() { button = new MenuButton(Material.MAP); ``` -------------------------------- ### Maven Dependency Setup for MythicDungeons API Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=834ff9aebf71b51f44b2e926f1e96916675beeb8 Add the MythicDungeons API as a dependency to your Maven project. This requires configuring the Aestrus repository and specifying the MythicDungeons artifact. Ensure the scope is set to 'provided'. ```xml aestrus-releases Aestrus's Repository https://maven.aestrus.io/releases ``` ```xml net.playavalon MythicDungeons 1.3.0-SNAPSHOT provided ``` -------------------------------- ### Dungeon Configuration Example - YAML Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Dungeon-Config/diff_version_id=7875cf289ffa37ba71c0ba6e9cfa864fcc9f0cdd An example of a dungeon configuration file in YAML format. This snippet illustrates default settings for a 'CLASSIC' dungeon type, including chunk generation, display name, and player limits. It serves as a reference for creating and customizing dungeon configurations. ```yaml General: Version: 1 DungeonType: CLASSIC # The generator to use for chunks in this dungeon. These can also be provided by other plugins. # natural = Default superflat. # mythicdungeons:void = Classic void generator, provided by Mythic Dungeons. # mythicdungeons:block.[BLOCKTYPE] = Generates entire chunks of a specific block. (For example, mythicdungeons:block.STONE would generate chunks at full height of all stone.) ChunkGenerator: natural # The pretty name of this dungeon that'll appear when it's finished and started. DisplayName: "&bA Dungeon" # Whether to show the display name above in a title message to the players when the dungeon begins. ShowTitleOnStart: false TimeLimit: 0 # How long in ticks to wait before cleaning up a dungeon when all players have left it. 0 will clean up the dungeon instantly. CleanupDelay: 0 # The maximum number of players that can be in this dungeon. Used by the CONTINUOUS dungeon type. MaxPlayers: 0 # When set to 'true', when players take items from reward functions, they'll be put in a rewards list. # Upon finishing the dungeon, the players will be given the rewards. ``` -------------------------------- ### Clone MythicDungeons Wiki Repository Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/git_access Clones the MythicDungeons wiki repository from the provided Git URL and navigates into the cloned directory. This allows for local editing and development of the wiki content. ```bash git clone https://git.lumine.io/mythiccraft/MythicDungeons.wiki.git cd MythicDungeons.wiki ``` -------------------------------- ### Room Configuration - YAML Example Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Procedural-Dungeons/diff_version_id=e64c5026aac2cb5ff353ed64c966b9ab42e42412&w=1 Example of how a room is configured within a procedural dungeon. This YAML file, located in the dungeon's 'rooms' folder, defines properties like 'weight' (likelihood of use) and 'min/max' (generation count). It also includes settings for room depth and connector configurations. ```yaml Rooms: - Name: "example_room" Weight: 10 Min: 1 Max: 5 Connectors: - Name: "exit" AllowedRooms: ["another_room"] Weight: 5 ``` -------------------------------- ### Create Procedural Dungeon Command Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Procedural-Dungeons/diff_version_id=e64c5026aac2cb5ff353ed64c966b9ab42e42412&view=parallel&w=1 This command initiates the creation of a new procedural dungeon. It requires the dungeon name as a parameter. Ensure Mythic Dungeons 2.0.0+ is installed. ```command /md create procedural ``` -------------------------------- ### Default Dungeon Configuration Example (YAML) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Dungeon-Config/diff_version_id=c6992abd0405482f6f86058c5d9ddebce633d47b This snippet shows the default configuration structure for dungeons in MythicDungeons. It covers general settings, requirements for entering dungeons, and access key configurations. It is written in YAML format and can be directly used or modified. ```yaml General: # Do not change! Used to track the config version when major updates happen. ... Requirements: DungeonsComplete: [] # If a Vault-based economy is installed, it costs this much to play the dungeon. Cost: 0 # Set to "true" if you only want to consume the above cost from the party leader. LeaderOnlyCost: false AccessKeys: # Whether to consume keys when players enter the dungeon using the key. Consume: true # Set to "true" if you only want to consume the key from the party leader. LeaderOnly: false # A list of itemstacks that are valid key items. NOTE: It is not recommended adding keys from here. Use the `/md addkey ` command instead. # Mythic items are supported and will default to the latest version of the Mythic item (based on its namespace). KeyItems: [] ... ``` -------------------------------- ### YAML Dungeon Configuration Example Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Dungeon-Config/diff_version_id=f6a6ccd929e98290092bbd9a3119d4ce6f0f6a01&view=parallel An example YAML configuration file for customizing Mythicdungeons. This file allows for detailed settings related to dungeon behavior, player access, loot mechanics, and in-game rules. It includes options for versioning, display names, lobby settings, cooldowns for loot and access, entry requirements like permissions and party size, and various gameplay rules such as mob spawning, block interactions, and allowed commands. ```yaml General: # Do not change! Used to track the config version when major updates happen. Version: 1 DisplayName: "&bA Dungeon" Lobby: Enabled: true Gamemode: SURVIVAL PlayerLives: 0 KeepInventoryOnEnter: true KickOfflinePlayers: true KickOfflinePlayersDelay: 300 MaxBackups: 7 # Loot Cooldown makes it so that players can't loot chests they've already looted recently. # Reward functions can be configured individually, or use the default values provided in this section. LootCooldown: Enabled: false # Whether or not the cooldown is per-chest or dungeon-wide. !!NOT CURRENTLY WORKING!! PerReward: true # Setting this to TIMER will make it so the player can't get loot again until their cooldown is up. # Options like HOURLY, DAILY, WEEKLY, and MONTHLY will let you configure a set time for loot to be reset. CooldownType: DAILY # If type is set to TIMER, this is how many minutes until the player can acquire loot again. # Otherwise, this is the time of day when the reset occurs in hours. CooldownTime: 0 # If type is set to WEEKLY, ResetDay determines what numbered day of the week the reset occurs. # "Sunday" would be 1, "Monday" is 2, "Tuesday" is 3, etc. # If type is set to MONTHLY, ResetDay determines what day of the month the reset occurs. # Doesn't do anything if CooldownType is set to "TIMER" ResetDay: 1 # Access cooldown is used to limit how quickly a player can play this dungeon again after playing it. # NOTE: Be wary using this, as this can result in players being unable to play with each other if one of them has already run the dungeon recently! # The "LootCooldown" section should be used instead to avoid this. AccessCooldown: Enabled: false # Setting this to TIMER will make it so the player can't get run this dungeon again until their cooldown is up. # Options like HOURLY, DAILY, WEEKLY, and MONTHLY will let you configure a set time for access to be reset. CooldownType: DAILY # If type is set to TIMER, this is how many minutes until the player can player the dungeon again. # Otherwise, this is the time of day when the reset occurs in hours. CooldownTime: 0 # If type is set to WEEKLY, ResetDay determines what numbered day of the week the reset occurs. # "Sunday" would be 1, "Monday" is 2, "Tuesday" is 3, etc. # If type is set to MONTHLY, ResetDay determines what day of the month the reset occurs. ResetDay: 1 Requirements: # A list of permissions the player must have. Permissions: [] MinPartySize: 1 MaxPartySize: 4 # A list of dungeons the player must have completed. Note: "Finished" means the "Finish Dungeon" function was used in the required dungeon. DungeonsComplete: [] # ClassLevel: 1 Rules: SpawnMobs: false SpawnAnimals: false SpawnMonsters: false AllowBreakBlocks: false AllowPlaceBlocks: false AllowEnderpearl: false AllowChorusFruit: false AllowBucket: false PreventPlantGrowth: true AllowedCommands: - party - p - dungeon leave - leave BannedItems: [] CustomBannedItems: [] ``` -------------------------------- ### Dungeon Configuration Example (YAML) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Dungeon-Config/diff_version_id=5373955cb3dd77c5777985fdbacc64f2a4015e6e&view=inline This snippet shows a sample structure for a dungeon configuration file in YAML format. It includes general settings and comments indicating version tracking and future development plans. This file is used to customize various aspects of dungeon behavior. ```yaml General: # Do not change! Used to track the config version when major updates happen. ... ``` -------------------------------- ### YAML Dungeon Configuration Example Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Dungeon-Config/diff_version_id=f6a6ccd929e98290092bbd9a3119d4ce6f0f6a01&w=1 This YAML code block demonstrates a typical dungeon configuration file. It includes settings for general dungeon properties, lobby configurations, loot and access cooldowns, player entry requirements (permissions, party size, completed dungeons), and various gameplay rules such as mob spawning, block interactions, and allowed commands. ```yaml General: # Do not change! Used to track the config version when major updates happen. Version: 1 DisplayName: "&bA Dungeon" Lobby: Enabled: true Gamemode: SURVIVAL PlayerLives: 0 KeepInventoryOnEnter: true KickOfflinePlayers: true KickOfflinePlayersDelay: 300 MaxBackups: 7 # Loot Cooldown makes it so that players can't loot chests they've already looted recently. # Reward functions can be configured individually, or use the default values provided in this section. LootCooldown: Enabled: false # Whether or not the cooldown is per-chest or dungeon-wide. !!NOT CURRENTLY WORKING!! PerReward: true # Setting this to TIMER will make it so the player can't get loot again until their cooldown is up. # Options like HOURLY, DAILY, WEEKLY, and MONTHLY will let you configure a set time for loot to be reset. CooldownType: DAILY # If type is set to TIMER, this is how many minutes until the player can acquire loot again. # Otherwise, this is the time of day when the reset occurs in hours. CooldownTime: 0 # If type is set to WEEKLY, ResetDay determines what numbered day of the week the reset occurs. # "Sunday" would be 1, "Monday" is 2, "Tuesday" is 3, etc. # If type is set to MONTHLY, ResetDay determines what day of the month the reset occurs. # Doesn't do anything if CooldownType is set to "TIMER" ResetDay: 1 # Access cooldown is used to limit how quickly a player can play this dungeon again after playing it. # NOTE: Be wary using this, as this can result in players being unable to play with each other if one of them has already run the dungeon recently! # The "LootCooldown" section should be used instead to avoid this. AccessCooldown: Enabled: false # Setting this to TIMER will make it so the player can't get run this dungeon again until their cooldown is up. # Options like HOURLY, DAILY, WEEKLY, and MONTHLY will let you configure a set time for access to be reset. CooldownType: DAILY # If type is set to TIMER, this is how many minutes until the player can player the dungeon again. # Otherwise, this is the time of day when the reset occurs in hours. CooldownTime: 0 # If type is set to WEEKLY, ResetDay determines what numbered day of the week the reset occurs. # "Sunday" would be 1, "Monday" is 2, "Tuesday" is 3, etc. # If type is set to MONTHLY, ResetDay determines what day of the month the reset occurs. ResetDay: 1 Requirements: # A list of permissions the player must have. Permissions: [] MinPartySize: 1 MaxPartySize: 4 # A list of dungeons the player must have completed. Note: "Finished" means the "Finish Dungeon" function was used in the required dungeon. DungeonsComplete: [] # ClassLevel: 1 Rules: SpawnMobs: false SpawnAnimals: false SpawnMonsters: false AllowBreakBlocks: false AllowPlaceBlocks: false AllowEnderpearl: false AllowChorusFruit: false AllowBucket: false PreventPlantGrowth: true AllowedCommands: - party - p - dungeon leave - leave BannedItems: [] CustomBannedItems: [] ``` -------------------------------- ### Dungeon Configuration Example (YAML) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Dungeon-Config/diff_version_id=f6a6ccd929e98290092bbd9a3119d4ce6f0f6a01&view=inline This YAML snippet demonstrates the structure for configuring a Mythiccraft dungeon. It includes settings for display name, lobby parameters, loot and access cooldowns, player requirements, and various in-game rules like mob spawning and block interactions. This configuration allows for extensive customization of dungeon behavior. ```yaml General: # Do not change! Used to track the config version when major updates happen. Version: 1 DisplayName: "&bA Dungeon" Lobby: Enabled: true Gamemode: SURVIVAL PlayerLives: 0 KeepInventoryOnEnter: true KickOfflinePlayers: true KickOfflinePlayersDelay: 300 MaxBackups: 7 # Loot Cooldown makes it so that players can't loot chests they've already looted recently. # Reward functions can be configured individually, or use the default values provided in this section. LootCooldown: Enabled: false # Whether or not the cooldown is per-chest or dungeon-wide. !!NOT CURRENTLY WORKING!! PerReward: true # Setting this to TIMER will make it so the player can't get loot again until their cooldown is up. # Options like HOURLY, DAILY, WEEKLY, and MONTHLY will let you configure a set time for loot to be reset. CooldownType: DAILY # If type is set to TIMER, this is how many minutes until the player can acquire loot again. # Otherwise, this is the time of day when the reset occurs in hours. CooldownTime: 0 # If type is set to WEEKLY, ResetDay determines what numbered day of the week the reset occurs. # "Sunday" would be 1, "Monday" is 2, "Tuesday" is 3, etc. # If type is set to MONTHLY, ResetDay determines what day of the month the reset occurs. # Doesn't do anything if CooldownType is set to "TIMER" ResetDay: 1 # Access cooldown is used to limit how quickly a player can play this dungeon again after playing it. # NOTE: Be wary using this, as this can result in players being unable to play with each other if one of them has already run the dungeon recently! # The "LootCooldown" section should be used instead to avoid this. AccessCooldown: Enabled: false # Setting this to TIMER will make it so the player can't get run this dungeon again until their cooldown is up. # Options like HOURLY, DAILY, WEEKLY, and MONTHLY will let you configure a set time for access to be reset. CooldownType: DAILY # If type is set to TIMER, this is how many minutes until the player can player the dungeon again. # Otherwise, this is the time of day when the reset occurs in hours. CooldownTime: 0 # If type is set to WEEKLY, ResetDay determines what numbered day of the week the reset occurs. # "Sunday" would be 1, "Monday" is 2, "Tuesday" is 3, etc. # If type is set to MONTHLY, ResetDay determines what day of the month the reset occurs. ResetDay: 1 Requirements: # A list of permissions the player must have. Permissions: [] MinPartySize: 1 MaxPartySize: 4 # A list of dungeons the player must have completed. Note: "Finished" means the "Finish Dungeon" function was used in the required dungeon. DungeonsComplete: [] # ClassLevel: 1 Rules: SpawnMobs: false SpawnAnimals: false SpawnMonsters: false AllowBreakBlocks: false AllowPlaceBlocks: false AllowEnderpearl: false AllowChorusFruit: false AllowBucket: false PreventPlantGrowth: true AllowedCommands: - party - p - dungeon leave - leave BannedItems: [] CustomBannedItems: [] ``` -------------------------------- ### Required Constructors for Custom Elements in Java Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Custom-Elements/diff_version_id=fec8f4afd032ecfa5088ad0ef7c715f9eb1bc5fc&view=inline&w=1 Provides examples of the two mandatory constructors for custom dungeon elements in Mythic Dungeons: a no-argument constructor and a constructor accepting a Map for configuration loading. ```java import java.util.Map; public class FunctionMessage { // Constructor with no parameters public FunctionMessage() { super("Message"); // Parameter for the element's unique name. } // Constructor taking a map as a parameter public FunctionMessage(Map config) { super("Message", config); // Parameter for the element's unique name and the config map. } // Dummy superclass methods for compilation public FunctionMessage(String name) {} public FunctionMessage(String name, Map config) {} } ``` -------------------------------- ### Mythic Dungeons Configuration Options (YAML) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Config This YAML configuration file outlines various settings for the Mythic Dungeons plugin. It covers general plugin behavior, dungeon generation, experimental features, and spectator mode functionalities. Adjusting these options allows for fine-tuning the plugin's integration with your server and player experience. ```yaml General: # 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 Spectator: # Whether to use the legacy spectator system, modern one requires packetevents. UseLegacy: true Hotbar: Teleport: Material: COMPASS Slot: 0 Name: 'Teleport to Player' Lore: - 'Click to open the teleport gui.' Settings: Material: COMPARATOR Slot: 4 Name: 'Options' Lore: - 'Click to change some spectator options.' Leave: Material: RED_BED Slot: 8 Name: 'Leave Dungeon' Lore: - 'Click to leave the dungeon.' GUI: Teleport: Title: 'Teleport to Player' ItemName: 'Teleport to %player_name%' ItemLore: - 'Click to teleport to %player_name%.' Settings: Title: 'Options' NightVision: EnabledName: 'Night Vision' DisabledName: 'Night Vision' EnabledMaterial: GLOWSTONE DisabledMaterial: GUNPOWDER Slot: 13 Lore: - 'Click to toggle night vision.' Speed: Name: 'Speed: {speed}' Material: FEATHER Slot: 11 Lore: - 'Cycle fly speed, right click to increase, left click to reset' ``` -------------------------------- ### Generator Configuration - YAML Example Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Procedural-Dungeons/diff_version_id=e64c5026aac2cb5ff353ed64c966b9ab42e42412&w=1 Configuration file for procedural dungeon generation. The 'generator.yml' file controls layout modes (e.g., Minecrafty, Branching), room counts, and surrounding blocks. It allows customization of how the dungeon's structure is formed. ```yaml Generator: LayoutMode: Minecrafty MinRooms: 10 MaxRooms: 20 SurroundingBlock: "minecraft:stone" Connectors: Chance: 0.5 ``` -------------------------------- ### Dungeon Configuration Example (YAML) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Dungeon-Config/diff_version_id=f6a6ccd929e98290092bbd9a3119d4ce6f0f6a01&view=inline&w=1 This snippet demonstrates a typical dungeon configuration file in YAML format. It includes settings for display name, lobby parameters, loot and access cooldowns, player requirements, and various gameplay rules such as mob spawning and block interactions. This file is crucial for customizing individual dungeon behaviors. ```yaml General: # Do not change! Used to track the config version when major updates happen. Version: 1 DisplayName: "&bA Dungeon" Lobby: Enabled: true Gamemode: SURVIVAL PlayerLives: 0 KeepInventoryOnEnter: true KickOfflinePlayers: true KickOfflinePlayersDelay: 300 MaxBackups: 7 # Loot Cooldown makes it so that players can't loot chests they've already looted recently. # Reward functions can be configured individually, or use the default values provided in this section. LootCooldown: Enabled: false # Whether or not the cooldown is per-chest or dungeon-wide. !!NOT CURRENTLY WORKING!! PerReward: true # Setting this to TIMER will make it so the player can't get loot again until their cooldown is up. # Options like HOURLY, DAILY, WEEKLY, and MONTHLY will let you configure a set time for loot to be reset. CooldownType: DAILY # If type is set to TIMER, this is how many minutes until the player can acquire loot again. # Otherwise, this is the time of day when the reset occurs in hours. CooldownTime: 0 # If type is set to WEEKLY, ResetDay determines what numbered day of the week the reset occurs. # "Sunday" would be 1, "Monday" is 2, "Tuesday" is 3, etc. # If type is set to MONTHLY, ResetDay determines what day of the month the reset occurs. # Doesn't do anything if CooldownType is set to "TIMER" ResetDay: 1 # Access cooldown is used to limit how quickly a player can play this dungeon again after playing it. # NOTE: Be wary using this, as this can result in players being unable to play with each other if one of them has already run the dungeon recently! # The "LootCooldown" section should be used instead to avoid this. AccessCooldown: Enabled: false # Setting this to TIMER will make it so the player can't get run this dungeon again until their cooldown is up. # Options like HOURLY, DAILY, WEEKLY, and MONTHLY will let you configure a set time for access to be reset. CooldownType: DAILY # If type is set to TIMER, this is how many minutes until the player can player the dungeon again. # Otherwise, this is the time of day when the reset occurs in hours. CooldownTime: 0 # If type is set to WEEKLY, ResetDay determines what numbered day of the week the reset occurs. # "Sunday" would be 1, "Monday" is 2, "Tuesday" is 3, etc. # If type is set to MONTHLY, ResetDay determines what day of the month the reset occurs. ResetDay: 1 Requirements: # A list of permissions the player must have. Permissions: [] MinPartySize: 1 MaxPartySize: 4 # A list of dungeons the player must have completed. Note: "Finished" means the "Finish Dungeon" function was used in the required dungeon. DungeonsComplete: [] # ClassLevel: 1 Rules: SpawnMobs: false SpawnAnimals: false SpawnMonsters: false AllowBreakBlocks: false AllowPlaceBlocks: false AllowEnderpearl: false AllowChorusFruit: false AllowBucket: false PreventPlantGrowth: true AllowedCommands: - party - p - dungeon leave - leave BannedItems: [] CustomBannedItems: [] ``` -------------------------------- ### Implement IDungeonParty Interface and initDungeonParty Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/API-Parties/diff_version_id=e149924889b7e32300b1294448fb142d26285bc5&view=parallel&w=1 This Java code demonstrates how to implement the IDungeonParty interface for Mythic Dungeons compatibility. It includes the required methods for adding/removing players, retrieving player lists, and getting the party leader. The initDungeonParty method is called to register the party with Mythic Dungeons. ```java class ExampleParty implements IDungeonParty { private UUID leader; private List playerUUIDs = new ArrayList<>(); public ExampleParty(Player leader) { this.leader = leader.getUniqueId(); // REQUIRED!! Init the party with your plugin instance here, or enter a list of names for the party system. // It's recommended to do this after you've finished everything else in your constructor. initDungeonParty(plugin); } // Allows Mythic Dungeons to easily add players to your party object. @Override public void addPlayer(Player player) { playerUUIDs.add(player.getUniqueId()); } // Allows Mythic Dungeons to easily remove players from your party object. @Override public void removePlayer(Player player) { playerUUIDs.remove(player.getUniqueId()); } // Allows Mythic Dungeons to easily retrieve a list of players in the party. // NOTE: It's advised to store players using UUIDs and then convert them to Players in the getPlayers method. @Override public List getPlayers() { List players = new ArrayList<>(); for (UUID uuid : playerUUIDs) { Player player = Bukkit.getPlayer(uuid); if (player == null) continue; players.add(player); } return players; } // Allows Mythic Dungeons to easily retrieve the leader or owner of the party object. @Override public Player getLeader() { return Bukkit.getPlayer(leader); } } ``` -------------------------------- ### Specify Dungeon Regions in Dungeon Config Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/One-World-Dungeons/diff_version_id=28c5d7d5cfae8ab67cc0031fe10a4810881e76ab&view=inline This example demonstrates how to configure specific region files for a dungeon within its own `config.yml`. By listing the regions, Mythic Dungeons will only copy the necessary region files, drastically speeding up dungeon loading times when using the One World Dungeons system. This is a manual configuration step that improves performance. ```yaml regions: - "-2,-1" - "-2,0" - "-1,-1" - "-1,0" ``` -------------------------------- ### Setting Dungeon Variables in Mythic Configs Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/September-8th%2C-2025-Changes-%28Courtesy-of-Fate-Sealed%29/diff_version_id=be66b8845e87bf916fafbf1837ee393f17f435eb&view=inline This code demonstrates how to set a dungeon variable directly from Mythic Configs using the `- setdungeonvariable` mechanic. This allows for dynamic variable management within your dungeon setups. It requires Mythic Dungeons to be installed and interacts with Mythic's Variable Registry. ```yaml - setdungeonvariable{key=yourKey;val=yourValue;type=string} ``` -------------------------------- ### MythicDungeons Party and Queue Configuration (YAML) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Config/diff_version_id=853096d4623faca1d88479f8de7258b6b36f1bc0&view=inline This snippet covers configuration related to party management and the dungeon queue system. It includes settings for ready checks and broadcast periods for party recruitment. Proper configuration here ensures a smooth entry process for players. ```yaml 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 the ready check (from when a dungeon becomes available) will wait for all players to be ready. # How long in seconds the ready check (from when a dungeon becomes available) will wait for all players to be ready. ReadyCheckTime: 45 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 ``` -------------------------------- ### MythicDungeons API JavaDocs Link (Web) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=d493453b68b733c6ad874c984aca5ab71d07339a&view=inline&w=1 Provides a direct link to the JavaDocs for the MythicDungeons API, offering detailed information about methods and events. This is a crucial resource for developers integrating with the API. ```Markdown The following link will take you to our Javadocs where you will get more information about our methods and events: https://docs.mythicdungeons.aestrus.io ``` -------------------------------- ### Mythiccraft API Javadocs - Link Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=d493453b68b733c6ad874c984aca5ab71d07339a Provides a link to the official Javadocs for the Mythiccraft API. This resource offers comprehensive details on methods and events available within the API. ```Markdown The following link will take you to our Javadocs where you will get more information about our methods and events: https://docs.mythicdungeons.aestrus.io ``` -------------------------------- ### Create Procedural Dungeon Command Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Procedural-Dungeons/diff_version_id=e64c5026aac2cb5ff353ed64c966b9ab42e42412&view=parallel This command initializes a new procedural dungeon. It requires the dungeon name and the 'procedural' type to be specified. This is the first step in setting up a procedurally generated dungeon. ```yaml DungeonType: procedural ``` -------------------------------- ### Access MythicDungeons API Javadocs (Java) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=0b30271d9efb9d896bd99760329ad096786ba5f6&view=inline This Java snippet shows how to obtain an instance of the MythicDungeonsService to interact with the API. It is intended for developers using the MythicDungeons API in their Java projects. No specific dependencies are mentioned beyond the MythicDungeons library itself. ```java public static MythicDungeonsService mythicDungeonsAPI() { return MythicDungeons.api(); } ``` -------------------------------- ### Access MythicDungeons API (Java) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=0b30271d9efb9d896bd99760329ad096786ba5f6 This Java code snippet demonstrates how to access the MythicDungeonsService, which is the main entry point for interacting with the MythicDungeons API. It's a static method intended for general use within the MythicCraft project. ```java public static MythicDungeonsService mythicDungeonsAPI() { ``` -------------------------------- ### Configure Generator Settings (YAML) Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Procedural-Dungeons/diff_version_id=e64c5026aac2cb5ff353ed64c966b9ab42e42412&view=inline Example of a generator.yml file, which controls various aspects of procedural dungeon generation, including layout modes and options. This snippet shows the structure for Minecrafty layout. ```yaml ```yaml # Example generator.yml configuration Layout: Minecrafty Options: Connectors: Chance: 50 # Default is 50% SurroundingBlock: "minecraft:stone" # Example surrounding block ``` ``` -------------------------------- ### Configure Procedural Dungeon Type Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Procedural-Dungeons/diff_version_id=d4ccbff354e2f5e59318c4e6a8124c5951a5e824&view=inline&w=1 Sets the dungeon type to 'procedural' within the dungeon's configuration file. This enables the procedural generation system. Ensure Mythic Dungeons 2.0.0+ and FastAsyncWorldEdit are installed. ```yaml General: DungeonType: procedural ``` -------------------------------- ### Handle Player Selection in Java Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/GUI-Menus/diff_version_id=ef0b436ec07b85a0829347f03d6d7764259831b4&view=inline Handles player interaction when a button or menu item is selected. It sends messages to the player to prompt for input or display current information. This is commonly used in menu systems to guide user actions. ```java @Override public void onSelect(Player player) { player.sendMessage(Util.colorize(debugPrefix + "&eWhat should the message say?")); player.sendMessage(Util.colorize(debugPrefix + "&eCurrent message: &6" + message)); } ``` -------------------------------- ### Add Maven Repository for MythicDungeons API Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=834ff9aebf71b51f44b2e926f1e96916675beeb8&view=parallel&w=1 This snippet shows how to add the Aestrus releases repository to your pom.xml file. This repository hosts the MythicDungeons API artifact, which is necessary for your project to locate and download the dependency. ```xml aestrus-releases Aestrus's Repository https://maven.aestrus.io/releases ``` -------------------------------- ### Implement IDungeonParty Interface for Mythic Dungeons Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/API-Parties_version_id=e149924889b7e32300b1294448fb142d26285bc5 This code snippet demonstrates how to implement the IDungeonParty interface provided by Mythic Dungeons. It includes methods for adding/removing players, retrieving player lists, and getting the party leader. Players are stored as UUIDs for efficient retrieval. ```java class ExampleParty implements IDungeonParty { private UUID leader; private List playerUUIDs = new ArrayList<>(); public ExampleParty(Player leader) { this.leader = leader.getUniqueId(); // REQUIRED!! Init the party with your plugin instance here, or enter a list of names for the party system. // It's recommended to do this after you've finished everything else in your constructor. initDungeonParty(plugin); } // Allows Mythic Dungeons to easily add players to your party object. @Override public void addPlayer(Player player) { playerUUIDs.add(player.getUniqueId()); } // Allows Mythic Dungeons to easily remove players from your party object. @Override public void removePlayer(Player player) { playerUUIDs.remove(player.getUniqueId()); } // Allows Mythic Dungeons to easily retrieve a list of players in the party. // NOTE: It's advised to store players using UUIDs and then convert them to Players in the getPlayers method. @Override public List getPlayers() { List players = new ArrayList<>(); for (UUID uuid : playerUUIDs) { Player player = Bukkit.getPlayer(uuid); if (player == null) continue; players.add(player); } return players; } // Allows Mythic Dungeons to easily retrieve the leader or owner of the party object. @Override public Player getLeader() { return Bukkit.getPlayer(leader); } } ``` -------------------------------- ### Add MythicDungeons Maven Dependency Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=4d44c526a5fbec71c21f7a6112c8ebc55105e96d&view=inline&w=1 This snippet shows how to add the MythicDungeons API as a dependency in your Maven project's pom.xml file. Ensure you include this within the correct sections of your pom.xml. The scope is set to 'provided', indicating that the dependency will be supplied by the environment. ```xml net.playavalon MythicDungeons 1.3.0 provided ``` -------------------------------- ### Access MythicDungeons API Service in Java Source: https://git.mythiccraft.io/mythiccraft/MythicDungeons/-/wikis/Introduction-to-API/diff_version_id=17161375d60b5921facb6436939b9d094da0fde0&view=parallel&w=1 Demonstrates how to obtain the MythicDungeonsService by creating a static method within your root class. This service allows access to various methods and events provided by the MythicDungeons plugin. Ensure MythicDungeons is enabled and registered as a service. ```java public static MythicDungeonsService mythicDungeonsAPI() { return Bukkit.getServer().getServicesManager().load(MythicDungeonsService.class); } ```