Btcsky Menu
BTC Sky Menu
Entrée d'action qui ouvre le panneau de contrôle de l'île. Le menu est piloté par le système de vues génériques de GUIExtension ([MenuViewSupport]) : une seule entrée déclare tous ses écrans dans [views], et le socle résout, pour la vue active, le layout de chaque frame dont le layoutId vaut @view. ### Contrat côté page - Le layoutPool contient un frame (celui désigné par [mainLayoutId], ou à défaut le premier frame du pool) dont les frames à contenu variable portent layoutId = "@view". - Chaque vue déclare son layout via frames["<frameId>"], ou par la convention "<viewId>_<frameId>" (donc island_content pour la frame content de la vue island). - Les slots d'onglet portent le tag view:<viewId> (buttonPrefix = "view:") : le socle y branche gui:view <viewId> et applique [ViewActiveStyle] quand la vue — ou l'une de ses descendantes — est active. Aucun surlignage n'est codé en dur ici. - Les boutons de contenu gardent le préfixe btcsky_button: résolu par [BtcSkyButtonResolverLayout], branché via le paramètre decorate de la résolution. ### Sous-vue avec argument Une cible d'ouverture s'écrit "<viewId>" ou "<viewId>:<argument>" (par exemple "collection_detail:mining"). L'argument n'est pas un identifiant de vue : il est transmis tel quel au résolveur de contenu, et la vue collection_detail déclare simplement parentId = "collection" pour hériter du bandeau d'onglets et garder l'onglet parent allumé. Avec [views] vide, aucune résolution de vue n'a lieu : le pool est parsé à plat depuis [mainLayoutId], exactement comme un menu sans onglets.
Champs
| Champ | Type | Par défaut | Description |
|---|---|---|---|
inventoryTitle | Var<String> | <dark_gray>✦ Menu de l'Île | Titre du menu. Chaque vue peut le remplacer par son propre titre.PlaceholdersCouleurs |
inventoryRows | Int | 6 | Nombre de lignes (1-6). |
guiType | GuiType | CUSTOM | Type de GUI. |
layoutPool | List<LayoutData> | empty | Pool de layouts. |
mainLayoutId | String? | — | Layout racine. Vide = le premier layout 'frame' du pool. |
audio | GuiAudioData | — | Audio. |
views | List<MenuViewData> | empty | Écrans adressables de ce menu. Les frames en '@view' et les slots taggés 'view:<id>' se résolvent contre la vue active. |
defaultViewId | String? | — | Vue ouverte en premier. Vide = la première vue déclarée. |
breadcrumbSeparator | String | DEFAULT_BREADCRUMB_SEPARATOR | Séparateur MiniMessage inséré entre les segments du fil d'Ariane par le token {breadcrumb}.Couleurs |
baseMenuId | String | — | Entree open_gui servant de chassis partage : son layoutPool et ses vues fusionnent sous les notres (meme id = la notre gagne). |
pushHistoryOnViewSwitch | Boolean | false | Empiler la vue précédente dans l'historique lors d'un changement d'onglet. Désactivé par défaut : changer d'onglet est une navigation latérale. |
Champs TypeWriter communs (criteria, modifiers, triggers)
| Champ | Type | Par défaut | Description |
|---|---|---|---|
criteria | List<Criteria> | empty | — |
modifiers | List<Modifier> | empty | — |
triggers | List<Ref<TriggerableEntry>> | empty | — |
How to use it
See the Menus section of the extension page. The menu entry opened by the Contracts Table must have the id control_panel. Declare each screen in views, tag tab slots view:<viewId>, and give content items a buttonType such as btcsky_button:ISLAND_INFO. Available types include ISLAND_INFO, DIMENSION, UPGRADE_ENTRY, WARP_ENTRY, MEMBER_ENTRY, CONTRACT_ENTRY, RESEARCH_BRANCH_ENTRY, RESEARCH_NODE_ENTRY, EXPANSION_CHUNK, COLLECTION_CATEGORY_ENTRY, RANKING_ENTRY, COMBAT_STATS and BORDER_INFO.