Where you’ll use this:
icon, selected_iconunlockedIcon, lockedIconWhat it does:
Defines the ItemStack’s material, name, lore, visual flags and custom model data
Names and lore support MiniMessage formatting and Placeholders
| Field | Type | Default | Notes |
|---|---|---|---|
material |
Material |
EGG |
Any valid Bukkit Material for your server version (e.g., BOOK, PAPER, COD) |
displayName |
String |
"" |
Supports MiniMessage (e.g., <gold>Notes) or legacy color codes (if enabled by your text pipeline) |
lore |
List<String> |
null |
Each list entry is one line. Supports MiniMessage/legacy like displayName |
loreMergeMode |
LoreMergeMode |
(plugin default, usually REPLACE) |
How lore merges with any existing lore. Typical values: REPLACE, APPEND, PREPEND |
glint |
boolean |
false |
Forces enchantment glint visual without needing an enchant |
customModelData (pre-1.20.5) |
Integer |
null |
For versions before 1.20.5 |
flags |
List<ItemFlag> |
null |
Standard Bukkit flags, e.g. HIDE_ATTRIBUTES, HIDE_ENCHANTS, HIDE_UNBREAKABLE |
skullTexture |
String |
null |
(Optional) Base64/player texture for skulls. (NOT FULLY SUPPORTED) |
itemComponents (1.20.5+) NOT FULLY IMPLEMENTED |
Map<String,Object> |
null |
New Item Component system keys/values for modern packs (e.g., custom model component) |
lineWrap |
LineWrapOptions |
null |
Optional wrapping rules for long names/lore (width/soft wrap) (NOT FULLY SUPPORTED) |
Placeholders: Names/lore (and any text fields your pipeline supports) are passed through the PlaceholderService, so tokens like {player} or custom placeholders can be resolved when a player context is available
Simple icon
material: BOOK
displayName: "<gold>Notes"
With lore and glint
material: PAPER
displayName: "<white>Torn Page"
lore:
- "<gray>An old, fragile piece of parchment."
glint: true