Menu Items
Each entry under items: in a menu YAML defines a MenuItem — a slot configuration that controls what appears where and what happens when a player interacts with it.
Field Reference
Field | Type | Required | Description |
|---|---|---|---|
| int | No* | Single fixed slot index (0-based). |
| List | No* | Multiple fixed slot indices or placeholder strings. |
| String | No* | A placeholder expression resolving to an integer slot at runtime. |
| int | No | Render priority when multiple items target the same slot. Higher wins. Default |
| ItemStackWrapper | No | Item appearance definition (see item-stack). |
|
| No | Tags used by layouts to filter which items they render. |
| boolean | No | Allow the player to move this item with their cursor. Default |
|
| No | All must pass for the item to be visible. |
|
| No | Requirements per click type before actions fire. |
|
| No | Actions to execute on click, keyed by click type. |
| object | No | Timer that re-renders this item's slot on an interval (see Auto-refresh). |
*At least one of slot, slots, or placeholder should be provided.
Slot Types
Single slot
Multiple fixed slots
Slots can also be quoted strings — useful when the value comes from a YAML anchor:
Placeholder slot
The placeholder is resolved at compute-time via PlaceholderAPI or internal processors and must evaluate to an integer:
item-stack
The item-stack block describes how the item looks. It is parsed into an ItemStackWrapper — a placeholder-aware template that is re-resolved every time the slot is rendered.
Top-level fields
Field | Type | Description |
|---|---|---|
| String / placeholder | Bukkit |
| Placeholder | A |
| String (MiniMessage) | Item display name. Supports all menu placeholders, |
|
| Lore lines (each is a MiniMessage component). |
| boolean | When |
| int / placeholder | Stack size. Accepts a literal integer or a |
|
| Enchantments to apply, keyed by lowercase Minecraft enchantment name. |
|
| List of |
Basic example
Custom item providers
When the material value contains a -, the substring before the first dash is treated as an ItemStackSupplier namespace and the rest as the provider-specific key.
Built-in namespaces:
Namespace | Provider | Always registered? | Example |
|---|---|---|---|
(none) | Vanilla Minecraft material | yes |
|
| Vanilla Minecraft material (explicit) | yes |
|
| HeadDatabase | when the HeadDatabase plugin is present |
|
| CraftEngine | when the CraftEngine plugin is present |
|
Additional namespaces can be registered by plugins — see Item Stack Suppliers.
copy-from
copy-from clones the resolved item from another ItemStack placeholder and uses it as the base. Useful for preview menus that display an item the player is interacting with:
Item Components
Beyond the top-level fields, the item-stack block accepts any number of component keys that mirror Minecraft 1.21+ data components. Each key is independent — set only the components you need.
Key | Type | Description |
|---|---|---|
object | Sets armor trim pattern + material. | |
map | Adds attribute modifiers (damage, speed, …). | |
int / placeholder | Overrides the item's max damage. | |
object | Configures the equippable component (slot, sound, model, …). | |
object | Configures nutrition / saturation / always-eat. | |
boolean / placeholder | Forces an enchantment glint without enchanting the item. | |
| Hides specific vanilla data components from the tooltip (keeps the rest). | |
boolean / placeholder | Hides the entire vanilla tooltip. | |
string / key | Sets a goat horn's instrument. | |
string | Sets the item model key ( | |
color | Sets the dye color on leather armor. | |
object | Sets the custom model data component (colors / flags / floats / strings). | |
object | Adds a custom potion effect to a | |
color | Sets the liquid color on a potion. | |
int / placeholder | Sets the anvil repair cost. | |
string / placeholder | Sets a player skull's owner name or base64 texture. | |
object | Configures the tool component (mining speed, rules, …). | |
string / placeholder | Sets the tooltip style ( | |
object | Configures a tropical fish bucket. |
armor-trim
Only takes effect on items whose meta is an ArmorMeta.
attributes
A map of Attribute → numeric value (or placeholder). Each entry becomes an AttributeModifier with the ADD_NUMBER operation, registered under the core:attributes namespaced key. Negative values are ignored.
durability
Sets the item's max damage via Damageable#setMaxDamage. Accepts an integer or a placeholder.
equippable
Configures the vanilla equippable component. All fields except slot are optional.
food
Values of 0 or below for nutrition/saturation are skipped (the vanilla defaults remain).
glow
Toggles the enchantmentGlintOverride flag.
A value of false clears any existing override. The value can be a %placeholder%.
hidden-components
Hides a specific subset of the item's data components from the tooltip via the vanilla minecraft:tooltip_display data component (Minecraft 1.21.5+). Unlike hide-tooltip, the tooltip is still shown — only the listed components are suppressed. Replaces any previously-set tooltip_display value.
Each entry is a DataComponentType resolved against Minecraft's component registry — supply the namespaced key form.
Use this to clean up tooltips on display items in menus — hide the attribute_modifiers line on weapon previews, hide enchantments on showcase pieces, etc. — without losing the rest of the tooltip the way hide-tooltip: true does.
hide-tooltip
Hides the entire vanilla tooltip when the player hovers the item.
instrument
Sets the instrument played by a goat horn. The value is a namespaced key from Minecraft's instrument registry. Only applied when the item's meta is a MusicInstrumentMeta (i.e. a GOAT_HORN) — ignored otherwise.
Valid vanilla values: minecraft:ponder_goat_horn, minecraft:sing_goat_horn, minecraft:seek_goat_horn, minecraft:feel_goat_horn, minecraft:admire_goat_horn, minecraft:call_goat_horn, minecraft:yearn_goat_horn, minecraft:dream_goat_horn.
item-model
Sets the item model component (Minecraft 1.21.4+). Accepts an Adventure key.
leather-armor-color
Sets the dye color on leather armor. Accepts any Color form recognised by Configurate (hex string, named color, or RGB map).
model-data
Sets the four lists of the CustomModelDataComponent. Any combination of the four lists is allowed.
Every list supports placeholder resolution as a whole.
potion-effect
Adds a custom PotionEffect to a PotionMeta. The serializer accepts any Configurate-recognised PotionEffect payload.
Applying this clears the base potion type so the custom effect is the only one shown.
potion-color
Sets the liquid color on a POTION/SPLASH_POTION/LINGERING_POTION.
repair-cost
Sets the anvil repair cost.
skull
Sets a SkullMeta's skin. The value can be either a player username, a %placeholder%, or a base64-encoded texture property string. A value that begins with ey and is longer than 20 characters is treated as a base64 texture; otherwise it is treated as a username.
tool
Configures the tool component: default mining speed, damage per block, and per-block / per-tag rules.
A rule must provide exactly one of blocks (list of materials), tag (a Bukkit tag — see the format below), or block (single material). correct-for-drops makes the tool count as the correct tool for the block.
tooltip
Sets the item's tooltip style key. The value must be in the form namespace:key.
tropical-fish-bucket
Only applied if all three fields are set.
Auto-refresh
An item can re-render its own slot on a repeating timer via a refresh: block — useful for live values (balances, cooldowns, online counts) that change without any click.
Field | Type | Description |
|---|---|---|
| double (seconds) | Interval between refreshes, in seconds ( |
|
| Optional. Evaluated every tick; if any fails, that tick is skipped (the timer keeps running). |
|
| Optional. Run every tick that requirements pass, immediately before the slot is re-rendered. |
Only the item's own slot is recomputed each tick — this is the timer-driven equivalent of a refresh-slot action. Layouts have an analogous block, see Layout auto-refresh.
Click Types
Standard Bukkit ClickType values used as keys in actions and clicks-requirements:
Key | Description |
|---|---|
| Left mouse button |
| Right mouse button |
| Shift + left click |
| Shift + right click |
| Middle mouse button |
| Drop key (Q) |
| Ctrl + drop |
| Double left click |
| Fallback — matches any click type not explicitly listed |
The UNKNOWN key acts as a wildcard fallback. If a player clicks with a type that has no dedicated entry, the UNKNOWN entry is used instead.
Priority
When two items target the same slot, the one with the higher priority value wins. View requirements are evaluated before priority comparison — an item that fails its view-requirements is treated as absent.
Taints
Taints are string tags that link items to layouts. A layout with taint: "shop-item" will only populate its slots with items that have "shop-item" in their taints list.