Skip to content

JMH Icon Data

Quick Start: Pick your goal.

Every icon field in JManhunt accepts JMH Icon Data: a material name with optional bracket attributes that paint the menu item. It works the same in cosmetic meta.icon values, modifier and preset visibility.icon values, setting-definition icons, and lobby toolbar items.

icon: POTION[color, ff0000]
icon: WHITE_BANNER[[BLACK, BRICKS], [LIME, CREEPER]]
icon: PLAYER_HEAD[head, eyJ0ZXh0dXJlcyI6...]
icon: NETHERITE_CHESTPLATE[GOLD, VEX]

Attribute names and values match case-insensitively, so color and COLOR both parse; the recommended style stays UPPERCASE for readability.

Attributes

color

POTION[color, ffffff] paints potion, splash potion, lingering potion, and leather armor icons. The value is a six-digit hex color without the #.

  • WHITE_BANNER[BLACK, BRICKS] stacks one banner pattern layer. Nest layers for more: WHITE_BANNER[[BLACK, BRICKS], [LIME, CREEPER]].
  • Colors are the vanilla banner dyes (BLACK, RED, LIME, and so on); patterns are the vanilla pattern ids (BASE, BORDER, BRICKS, CIRCLE, CREEPER, FLOWER, and so on).
  • Java Edition supports up to 16 layers: extras log a console error and only the first 16 render.
  • PLAYER_HEAD[head, red] paints a solid-color head from the internal palette, matched case-insensitively: WHITE, LIGHT_GRAY, GRAY, BLACK, BROWN, RED, ORANGE, YELLOW, LIME, GREEN, CYAN, LIGHT_BLUE, BLUE, PURPLE, MAGENTA, PINK (write LIGHT_BLUE or light blue, both hit).
  • A base64 value overrides the head skin with that texture instead. Find texture values at minecraft-heads.com.
  • A value of 16 chars or fewer that reads as a player name renders that player's head (PLAYER_HEAD[head, Stevee]); anything longer reads as a player UUID, dashed or trimmed (PLAYER_HEAD[head, 5663d1ab-276f-4b49-ab18-b2e6d8baa919]).
  • Without this attribute, PLAYER_HEAD always renders the viewing player's own head. A value that is none of palette name, player name, UUID, or valid texture warns and falls back to the viewer's head.

trim

NETHERITE_CHESTPLATE[GOLD, VEX] applies an armor trim, as MATERIAL[trim-material, trim-pattern]. Both entries use the vanilla trim ids (GOLD, VEX, SENTRY, and so on).

Fallbacks

Icon Data only paints what the item can show. An attribute the material does not support logs a console warning and the naked material renders instead; a malformed value warns once and likewise renders plain. Names, lore, and glow stay owned by their own fields and the menu itself, never by Icon Data.

When editing an icon in the modifier or preset GUIs, the icon dialog lists these attributes with examples, so authors never have to leave the game.

Settings validation

Icon entries in the settings GUI (the Material type rows, such as the spectator and lounge toolbar items) validate before they save, in the GUI and in /mh config alike:

  • A value must name a real item material; when it carries brackets, the brackets must open and close, hold a key plus a value, name a known attribute, fit the material (a potion cannot take banner layers), and hold a valid value for the attribute (a real dye, pattern, trim, hex color, or head texture).
  • Rejected values explain the first problem found, and nothing saves until the value passes.
  • Comma-separated toolbar item lists (like the after-match toolbar) stay free text and keep the warn-and-skip fallbacks above.