Tags
Creators
Details
v2.1
Compatibility
Required content
Changes
Changelog
v2.1
🎯 Major Features
🎨 MiniMessage & Hex Color Support (Editor + In-Game)
All color formats now work everywhere - web editor preview AND in-game rendering (L menu, GUIs, broadcasts, commands).
In-game rendering supports:
- Legacy
&codes -&0-&f,&l/&o/&n/&m/&k/&r(unchanged, always worked) - Hex
&#RRGGBB- Per-character hex colors rendered with proper§x§R§R§G§G§B§BBukkit format - MiniMessage named colors -
<red>,<blue>,<light_purple>,<gold>, etc. → § codes - MiniMessage formatting -
<bold>→ §l,<italic>→ §o,<underlined>→ §n,<strikethrough>→ §m,<obfuscated>→ §k,<reset>→ §r - Gradients -
<gradient:gold:yellow>text</gradient>- true per-character color interpolation (visible in L menu). Works with or without closing tag - Rainbow -
<rainbow>text</rainbow>- per-character HSL hue cycling. Works with or without closing tag <color:#RRGGBB>and<color:name>- Full support for both hex and named MiniMessage color tags
Web editor preview:
- Color/Format Picker - 🖌️ button next to Title and Description fields with 16 color swatches + 6 format buttons (
B/I/U/S/O/R), inserts
&codes at cursor position - Live preview -
mcPreview()renders all formats (MiniMessage, hex, gradients, rainbows,&codes) in editor tabs, sidebar, tree view, tooltips - Version-gated - Picker/preview only shown on v2.1+; older versions show plain text
expandHex()- Short hex#rgbauto-expands to#rrggbbfor correct gradient interpolation- Discord-safe - Webhook embeds strip ALL color codes before sending to prevent raw markup in Discord
📑 Tab Order (In-Game GUI Sorting)
Tabs in the advancement GUI (L key) are now sorted by configurable tabOrder:
- Each tab has a numeric order value (default 999)
- Vanilla tabs sorted via
config.yml→vanilla-tab-ordersection (story: 1, nether: 2, end: 3, adventure: 4, husbandry: 5) - Changes survive plugin reload; persists from editor save to config
🖼️ Tab Root Icon Custom Model Data
Tab settings now support rootIconCustomModelData for resource pack item variants on the tab root icon.
✨ Changes
- Inline command editing - Click a reward command in the editor to edit it directly, instead of deleting and re-adding
- Icon browser - Browse and select icons for tab root icon directly from the editor Tab Settings modal
- Color hints - Title and description fields now show available color format hints
- Color picker popover - Closes on outside click, follows Minecraft button styling
- Broadcast color preview - Broadcast message field now has live
mcPreview()rendering and a 🖌️ color picker with full swatches + format buttons - Version detection - Editor correctly gates color picker and v2.1 fields via
isV21Pluscheck oneditorVersion
🐛 Fixes
- CRITICAL: Duplicating an advancement corrupted
tab.advancementIds- fixed_syncIds()dedup and removeddeep: truefrom tabs watcher - CRITICAL: Action bar / Toast / Announce toggles not persisting after reload - fixed
parseSingleAdvEntryfallback chain - CRITICAL: Empty editor after ID change - removed stale
map[oldId].id === oldIdguard - CRITICAL:
mcPreview()gradient rendering broken -lerpColor()now correctly expands 3-digit hex (#rgb→#rrggbb) viaexpandHex(), applied inparseColor()and all hex paths - CRITICAL:
mcPreview()count stack corruption - close handler now only pops gradient/rainbow when the closing tag name matches - Discord webhook - Title and description now stripped of all color codes (
&,&#RRGGBB, MiniMessage tags,§) before sending, preventing raw markup in Discord embed - Firefox modal bottom overflow -
max-heightnow usesmin(85vh, 100dvh - 40px)for dynamic viewport - Various z-index and modal layout fixes
💥 Breaking Changes
- None - fully backward compatible with v2.0 data
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:CyWijK8l:Dj3V4QAE"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:CyWijK8l:Dj3V4QAE"
}

