btcsky_menu
BTC Sky Menu — action entry.
Entry Information
| Property | Value |
|---|---|
| Entry ID | btcsky_menu |
| Type | Action |
| Color | Orange |
| Icon | fa6-solid:table-list |
Description
Action entry that opens a configurable Island Control Panel. Three rendering modes: 1. FrameLayout (recommended): If the [layoutPool] contains a [FrameLayoutData] entry, the menu is rendered as a FrameLayout with dynamic content switching based on [tabId]. The content frame's layoutId is resolved as "${tabId}_content" from the pool. Sidebar tabs use "btcsky_tab:" prefix for active highlighting. Content buttons use "btcsky_button:" prefix for dynamic resolution. 2. Flat layout (fallback): If no FrameLayoutData is found, behaves like the original implementation — shows the layout matching [tabId] or [mainLayoutId] from the pool. Example FrameLayout pool configuration: json { "id": "control_panel", "type": "btcsky_menu", "tabId": "accueil", "layoutPool": [ // 1. FrameLayout defines the 3-column structure {"case":"frame","value":{ "id":"cp_main", "frames":[ {"id":"sidebar","x":0,"y":0,"width":4,"height":6,"layoutId":"sidebar_scroll"}, {"id":"nav", "x":4,"y":0,"width":1,"height":6,"layoutId":"nav_layout"}, {"id":"content","x":5,"y":0,"width":4,"height":6,"layoutId":"accueil_content"} ] }}, // 2. Sidebar (scrollable with 13 tab buttons) {"case":"scrollable","value":{"id":"sidebar_scroll","virtualWidth":4,"virtualHeight":6,"innerId":"sidebar_inner","buttons":[]}}, {"case":"simple","value":{"id":"sidebar_inner","virtualWidth":4,"virtualHeight":13,"items":[ {"x":0,"y":0,...,"buttonType":"accueil","buttonPrefix":"btcsky_tab:","interactionList":[{"type":"LEFT_CLICK","commands":["island cp accueil"]}]}, ... ]}}, // 3. Navigation (scroll up/down in nav column) {"case":"simple","value":{"id":"nav_layout","virtualWidth":1,"virtualHeight":6,"items":[ {"x":0,"y":0,...,"commands":["gui:scroll 0 -1 sidebar_scroll"]}, {"x":0,"y":5,...,"commands":["gui:scroll 0 1 sidebar_scroll"]} ]}}, // 4. Per-tab content layouts (name format: {tabId}_content) {"case":"simple","value":{"id":"accueil_content","virtualWidth":4,"virtualHeight":6,"items":[...]}}, {"case":"scrollable","value":{"id":"island_content",...}}, ... ] }
Fields
| Field | Type | Description |
|---|---|---|
inventoryTitle | Var<String> | Menu title (shown by default). Each tab can override via tabTitles. |
tabTitles | Map<String, String> | Per-tab title overrides. Key = tabId, value = MiniMessage title string. Falls back to inventoryTitle when absent or empty. |
inventoryRows | Int | Rows. |
guiType | GuiType | GUI type. |
tabId | String | Tab. |
layoutPool | List<LayoutData> | Layout pool. |
mainLayoutId | String? | Main layout. |
audio | GuiAudioData | Audio. |
Usage Example
- entry: btcsky_menu
name: "BTC Sky Menu"
inventoryTitle: ""
tabTitles: ""
inventoryRows: 0
guiType: ""
tabId: ""
layoutPool: []
mainLayoutId: ""
audio: ""