Shared MxF menu behavior is configured in `plugins/Factions/menus/shared.yml`. Feature layouts are configured in `plugins/Factions/menus/<feature>.yml`. A legacy root `menus.yml` may remain as a copy-only migration sourc
Docs version
v1.0.0
Product version
1.0.0-dev
Last updated
Jul 21, 2026
# GUI Configuration
Shared MxF menu behavior is configured in plugins/Factions/menus/shared.yml. Feature layouts are configured in plugins/Factions/menus/<feature>.yml. A legacy root menus.yml may remain as a copy-only migration source.
Every generated feature menu uses the same shared presentation vocabulary. Some split files hold one menu at the root; grouped files such as faction.yml, members.yml, season.yml, raid.yml, and vaults.yml contain named subsections.
slot: fixed inventory slot. Negative slots count backward from the end of the menu.
slots: optional list used by future repeated item groups.
material: preferred material name.
legacy-material: legacy fallback material for old versions.
legacy-data: 1.8 data value, or -1 for none.
amount: item stack count, clamped from 1 to 64.
name: display name.
lore: display lore.
glow: adds a hidden enchant glow.
hide-flags: hides enchant/attribute flags where supported.
custom-model-data: modern custom model data, ignored safely on 1.8.8.
head-owner: skull owner for head items.
Actions
Generic action names:
NONE
CLOSE
BACK
NEXT_PAGE
PREVIOUS_PAGE
REFRESH
RUN_COMMAND
OPEN_MENU
OPEN_SUBMENU
SHOW_MESSAGE
CONFIRM_ACTION
Subsystem action names are reserved for Java-backed handlers:
BUY_UPGRADE
SET_SHIELD
FILL_TNT
DEPOSIT_TNT
WITHDRAW_TNT
TELEPORT_WARP
START_KOTH
STOP_KOTH
CLAIM_OUTPOST
If an action is unknown or not implemented generically, the menu falls back to its Java click handler.
Visibility Conditions
Supported conditions:
HAS_FACTION
NO_FACTION
IS_STAFF
IS_DEBUG
IS_LEADER
IS_OFFICER
HAS_PERMISSION:<node>
FEATURE_ENABLED:<feature>
FEATURE_DISABLED:<feature>
Validation
Startup and /f reload warn about invalid materials, sounds, actions, slots, item amounts, update modes, animation types, visibility conditions, placeholders, menu sizes, page sizes, and duplicate slots. Validation warnings do not crash the plugin.
Purpose-Built Layouts
Mission and TNT interfaces have purpose-built YAML fields because a generic entry cannot express their interaction safely.
menus.missions.category-order, category-slots, category-materials, and category-names control mission navigation.
menus.missions.mission-slots, item-title, item-lore, and progress-bar fields control mission cards.
menus.tnt.*-slot and option-slot lists control the TNT grid.
menus.tnt.lore contains separate player-facing templates for every bank action and selector.
Mission expanded-list placeholders are {description}, {objectives}, and {rewards}. TNT selection placeholders include {selected_radius}, {selected_amount}, {option}, and {selected_status}.