Menus
Guide to configuring and customizing GUI menus
Menus in Aurelium Skills are inventory GUIs that display information about skills to players in-game. This includes personal skill and stat menus, skill progression, ability descriptions, Some menus are accessible by commands, such as /skills and /stats, while others are accesible by clicking buttons in other menus.
Since the Menu Update significantly changed configuration format and added new features, this guide is applicable to Aurelium Skills version Beta 1.3.0 and newer. If you are upgrading from an earlier version and are already familiar with the old format, see the changes from the legacy format first.
File structure
The files for configuring menus are located in the AureliumSkills/menus
folder. Each menu has its own corresponding file used to configure that menu.
Placeholders
Much of the menus file uses placeholders, which is text surrounded by {
and }
. When the menu is actually opened, the placeholder will be replaced by the corresponding message in the messages file. The path of the placeholder message is found under either the menus.common
or menus.[menu_name]
section with either the same or similar key as the placeholder.
However, some placeholders are more generic ones that are not found in the menus section of the messages file. For example, the {skill}
placeholder is replaced with the name of a skill.
It is recommended to make any changes to the actual text context of menus in the corresponding message in the messages file in order to preserve multi-language support. Any change to the text in a placeholder will make it no longer work.
Menu keys
The following is a list of keys and sections that are at the left-most indentation of the file (referred to here as the menu section).
title
- The text that will show up at the top of the menu when it is openedsize
- The number of rows the menu has, from 1-6 (each row has 9 slots)fill
- A section used to define the menu background item to fill empty slots, see .items
- The main items section used for singular itemstemplates
- The section used to define items with custom contexts and multiple instancesoptions
- A section found in some menu files that contains custom options and settings
Fill item
The fill
section defines a background item to fill empty slots not used by other items. There are two required keys in the fill
section:
enabled
- A true/false value of whether the fill item should be usedmaterial
- The material of the fill item
The display name of a fill item is automatically turned into a space, so the name of the item is invisible. Additional keys can be added to customize item meta using the same format as other items (see ).
Items section
The items
section is used to define singular items in the menu. Each subsection is the unique name of the item, which is used as a unique key. The item names that exist in the default menus are reserved words, meaning that items with those names have functionality or placeholders used by the plugin. Custom items can be added using any non-reserved name in the items
section using the same format as other items. See adding custom items for additional information.
Templates section
The templates section is used for items with multiple instances or contexts, such as each skill item in the skills menu. Template items usually have the same lore and display name for all contexts, with differences applied internally through placeholders. Each context in a template, which is a specific type such as each skill, has its own subsection within the template to define any differences for that context only. The following example shows the basic structure of a template:
Since templates are only used for items already defined by default, custom templates cannot be created.
Items
Items refers to sections in both the items
and templates
sections, as most keys apply to both. There are two required keys for all items and most templates:
material
- The material of the item, such asdirt
ordiamond
. See below for details.pos
- The position/slot of the item on the menu, either in the comma separatedrow,column
format or as a single slot number from 1-53. See below for details.
Material
The material field is required on all items and most templates and defines the type of the item. In Minecraft 1.13+, the proper name of a material can be found in game by hovering over an item in the inventory with advanced tooltips enabled (F3 + H). The dark gray text on the bottom after minecraft:
is the name of the material used in menu configuration. Lowercase is recommended but capitals are also allowed.
In Minecraft 1.12, some items have an additional data value (a number) that must be used to define some items such as different colors of stained glass or wool and different types of logs. This data value is added to the material name in the material:data
format. For example, log:2
defines a birch log. Data values can be seen in game with advanced tooltips as the number after a # in the item display name. The data value of 0 does not have to be defined.
In templates, the material is either defined in a context subsection or the main item section. Materials defined in a context will only apply to that specific context, while a material defined in the main section will be the default material if no context-specific material is defined.
Pos
The pos
key on items is the position or slot on the menu the item is located. There are two acceptable formats for pos
:
Row,column format
This format is defined as row,column
, such as 2,3
for the second row and the third column. The first row and column starts at 0. Row can be from 0-5 and column can be from 0-8. Row 0 is the top-most row and column 0 is the left-most column.
Slot format
This format is a single number from 0-53 indicating the slot number of the item. 0 is the top-left slot and the number increases left to right, then top to bottom.
Display Name and Lore
The display_name
key contains the text used for the item display name. Color codes and placeholders are supported.
The lore
key is a list of strings containing the lore displayed on the item. Color codes and placeholders are also supported.
The display name and lore keys also contain built-in placeholders in a {placeholder}
format. These are replaced internally to display functional parts of the menu. The messages usually correspond to a message with a similar key in the menus
section of the messages file.
Hex Colors
Hex colors are supported in display names and lore using the �
format or using the MiniMessage format.
Item meta
There are many keys available to define different types of optional item meta. These keys are added in the section of the the item, not in the material
field but on the same indent level.
Enchantments
The enchantments
key is a list of strings with each entry in the format name level
, such as:
The name of the enchantment is the name used by the vanilla game.
Potion data
The potion_data
section contains subkeys for defining data on a potion. There are three keys in the potion_data
section:
type
- The name of the potion type, such asspeed
ornight_vision
. The type must be a valid Bukkit PotionType (listed here).extended
- An optional true/false value of whether the potion should have an extended duration (defaults to false).upgraded
- An optional true/false value of whether the potion should have an upgraded level (defaults to false).
An example of a potion_data section with all three keys:
Custom effects
The custom_effects
section is a map list defining custom potion effects on a potion (this is different from potion data). Each object in the map list must have three keys:
type
- The type of potion effect to use, must be a valid Bukkit PotionEffectType (listed here).duration
- The duration of the potion effect, in ticks (20 ticks = 1 second).amplifier
- The level of the potion effect, with an amplifier of 0 being level 1.
Below is an example of a custom_effects
section with multiple custom effects (Fire Resistance I for 10 seconds and Haste II for 30 seconds):
Item flags
The flags
key is a list of item flags to add to the item. Item flags are a type of meta used to hide other meta on the item from being shown to the player. Below is a list of valid flags and the format used in item configuration:
Glow
The glow
key is a true/false value that adds the glowing enchantment effect to the item without showing the enchantment name if set to true. It is equivalent to adding an enchantment and a hide_enchants item flag.
Skull meta
The skull_meta
section can be used to add a custom skin texture to a player head item. The section must have one of three possible sub-keys, uuid
, base64
, or url
.
The uuid
key is the UUID of the player's skin texture to use. The base64
key is a base64 string of the texture. The url
is the minecraft.net URL containing the texture.
Below is an example of using skull meta. You only need ONE of the three options.
Durability
The durability
key sets the durability of the item from 0 to the max durability of the item (a value of 0 means the item is almost broken).
NBT
NBT data can be added to an item using the nbt
section. This section supports nested NBT structures and will automatically detect the type of data inputted.
Item registry keys
The key
key can be used in an item section to use an item in the item registry. Any item can be registered in game using /skills item register
. This is used instead of defining material
and other meta. This can be convenient when an item has already been created in game or is too complex.
Custom Model Data
Custom model data can be added to items within the nbt section like as follows:
This follows the exact format Minecraft uses to store custom model data on items.
Click Actions
Click actions are used to define custom functionality when a player clicks an item in the menu. This includes executing a command, closing the menu, opening another menu, and more.
Triggers
There are multiple ways click actions can be triggered (key in parenthesis):
Any click (
on_click
)Left click (
on_left_click
)Right click (
on_right_click
)Middle click (
on_middle_click
)Drop key (
on_drop
)
The trigger key is used to name the section that contains the click actions for that particular trigger. For example, all the actions under an on_click
section will be activated when the player clicks that item with any mouse button.
Types
Once you have created a section under the item with a trigger name, click actions are defined underneath using map list syntax.
Each action must have a type
defined, either command
(executing a command) or menu
(menu navigation).
Command
For command actions, an executor
(either console
or player
) and the command
itself must be defined. Commands with a console
executor will be run through console, while a player
executor will be run as if the player had typed it (accounts for player permissions too).
The command
text should not include the beginning slash. It supports PlaceholderAPI placeholders and a built in placeholder of {player}
(player username).
Menu
Menu actions are for anything related to menu navigation. You must define the specific action type using the action
value, which can be as follows:
open
- Opens another menu (must be within the Aurelium Skills plugin)close
- Closes the current menunext_page
- Moves to the next page of the menu, if applicableprevious_page
- Returns to the previous page of the menu, if applicable
The open
action type also requires a menu
value, which is the internal name of the menu to open (this is usually the lowercase name with spaces replaced with underscores).
The open
, next_page
, and previous_page
action types also take an optional properties
section that is used to define menu behavior, though this option is hard to use unless you dig through the source code.
Examples
Command action activated on any click that executes a command through console:
Menu action activated on right click only that closes the menu:
Multiple click actions under the same trigger (will activate together):
Custom Menu Items
Completely new items can be added to menus by simply defining a new section in the items
section with the name of your new item. The custom item name cannot be the name of an existing built-in item.
The format of the custom item is the same as any other item (material, pos, display_name, lore, etc). Click actions and PlaceholderAPI placeholders are also supported.
Last updated