| *The following is a feature only available in Mythic Dungeons 1.3.0+!* |
Mythic Dungeons has an extensive API for creating your own functions, triggers, and conditions for use in dungeons. We call these "Dungeon Elements". Many of them share code, and require a little work to setup in order to support the in-game menus needed to access them. Here, we will explore concepts that apply to all elements.
## Important Annotations
### Saved Fields
Mythic Dungeons will automatically save and load values stored on a Dungeon Element when players configure them in-game, however you must specify what you want to save and load! This is indicated with the `@SavedField` annotation.
```java
@SavedFieldprivateStringmessage;// Mythic Dungeons will save and load this value.
privateintdelay;// Mythic Dungeons will NOT save and load this value.
```
Saved fields will also be displayed in the menus of meta elements, such as the multi-function.

### Hidden Fields
But what if you don't want your saved field to appear in the menus of meta elements? This is achieved with the `@Hidden` annotation.
```java
@SavedFieldprivateStringmessage;// Mythic Dungeons will display this in the meta element menu.
@Hidden@SavedFieldprivateintdelay;// Mythic Dungeons will NOT display this in the meta element menu.
```
## Required Constructors
Due to constraints with automatically saving and loading elements, **all dungeon elements must include two constructors.**
- A constructor with no parameters: `public FunctionMessage()`
- A constructor taking a <String,Object> map as a parameter: `public FunctionMessage(Map<String, Object> config)`
```java
publicFunctionMessage(){
super("Message");// Parameter for the element's unique name.
}
publicFunctionMessage(Map<String,Object>config){
super("Message",config);// Parameter for the element's unique name and the config map.
}
```
The first constructor is used to create a brand new instance of the element with default options.
The second constructor is used to load an existing element and all of its saved fields, which are stored in the map.
Within these constructors, you can configure certain details of your element, such as what category it belongs to, its colour when displayed, whether it requires a target, etc. What options are available for different kinds of elements will be explored in their tutorials.
_You shouldn't ever need to call these constructors yourself! They are only required for Mythic Dungeons' internal systems to be able to use your custom element!_