# Enable gui-customization.enabled in config.yml, then use /mba reload. # Appearance only: inventory layouts, actions, permissions and real contents never change. # Inbox session and claim protection remain mandatory; this file cannot disable them. # Names, lore and titles are configured in language/messages_*.yml. # material: valid non-air item Material; null preserves the original Minecraft icon. # custom-model-data: integer resource-pack metadata; null preserves original metadata. # item-model and tooltip-style: namespaced resource-pack keys, applied on supported APIs. # itemsadder-item: optional ItemsAdder namespace:id appearance, e.g. "mail_theme:back"; null uses ordinary fields/inheritance. # Supported on every appearance role/variant below, including personal/public floating notifications. # Example global navigation path: icons.controls.back.itemsadder-item (not menu/slot mappings). # ItemsAdder must be installed, compatible, and finished loading the configured item registry. # Non-null itemsadder-item takes precedence over same-layer material/custom-model-data/item-model fields. # Missing/unready/incompatible ItemsAdder or invalid/unknown IDs retain the preceding inherited/built-in appearance. # Same-layer sibling fields are not fallback fields; configure an earlier layer or set itemsadder-item to null. # ItemsAdder owns pack building, merging, hosting and deployment; MailboxGUI never sends a second pack. # Include all referenced assets in that deployed pack; ItemsAdder presence alone does not prove the player loaded it. # Both gui-customization.enabled and existing On/Off/Auto/forced-auto policy still apply. # After ItemsAdder content edits use /iareload (and rebuild/deploy its pack when needed), then /mba reload. # The plugin validates key syntax/API availability, not the contents of a player's pack. # Automatic mode shows overrides only after a server-supplied resource pack is confirmed loaded. # For client-installed packs, players use /mb settings resourcepack on; off forces built-in icons; auto restores detection. # config.yml gui-customization.require-automatic-detection: true locks auto and hides/disables that player setting. # This policy requires a SERVER-SENT pack; manually installed client packs cannot be detected. # MailboxGUI never sends or requires a pack. Other player settings remain available. # Include ALL configured models in your server pack; any loaded server pack can trigger these overrides. # Match pack assets/format to the client and these material/model fields to the backend API. # An accepted incompatible pack or missing assets can display incorrectly; automatic detection cannot validate them. # Unknown/pending/declined/failed status in automatic mode uses the untouched built-in icon, including its material. # Client-local packs and individual missing assets cannot be detected; unrelated loaded packs are not validated. # Status changes apply on the next normal GUI render/open. Real package items remain untouched. # Example item-model: "mailboxgui:paper_letter"; that exact key must exist in the pack. # Older APIs need custom-model-data fallback for item-model assignments, otherwise the built-in icon is used. # Controls merge original appearance -> defaults.control -> controls.. # The same purpose uses ONE setting everywhere, regardless of menu, slot or state. # Null fields retain original materials and state-dependent appearances; they never reset metadata. # Decorative fillers use ONLY defaults.filler, outside all control/recipient layers. # Recipient entries use defaults.control -> defaults.recipient -> online/offline state. # Mail message/expiration variants are independent of controls; see their sections below. # Real package items are never appearance-customized. Synthetic XP uses controls.experience. # Physical notifications have their own enable gates and do not inherit GUI defaults. # No menu, slot, compose-specific or material-state appearance mappings are supported. # gui-config-version is the schema marker; leave it unchanged. gui-config-version: 1 # Global semantic appearances; never inventory layout or permission settings. icons: # PHYSICAL FLOATING NEW-MAIL ITEMS: independent from GUI control defaults. # Apply only when gui-customization.enabled AND the personal/public block.enabled are true. # config.yml notification enable toggles remain authoritative; never bypassed here. # Base material: mailbox.new-mail-notification.item (personal), # public-mailbox.mailboxes.new-mail-notification.item (public); null retains earlier values. # ItemStack metadata selects models that must exist in the player's resource pack. # item-model requires newer supported APIs; the pack needs a correct ground display model/transform. # itemsadder-item may select an ItemsAdder appearance; no arbitrary NBT edits or new mail templates are needed. # Physical floating item appearance, not an inventory icon or a notification feature toggle. # Privacy, pickup/despawn protection, unread/expiry handling and read lifecycle remain unchanged. # Position and refresh are internal plugin behavior, not options in gui.yml or configurable config.yml settings. # Resource-pack ground transforms may change visual size, but do not change the plugin spawn anchor. # Use the personal/public role below; GUI defaults, fillers, recipients and shared control roles do not apply here. new-mail-notification: # Personal physical mailbox floating item. # Personal/private mailbox role: replaces only the floating personal new-mail ItemStack appearance. # Requires config.yml gui-customization.enabled AND this personal.enabled to be true. # config.yml mailbox.new-mail-notification.enabled remains authoritative; this cannot enable notifications. # A valid non-null material replaces only mailbox.new-mail-notification.item; null keeps that config.yml base. # custom-model-data and item-model add ItemStack metadata, not global config keys; the pack must supply the model and ground appearance. # No tooltip-style is used for this world item; placement, refresh and notification lifecycle stay internal and unchanged. personal: # Opt in to personal appearance only when config.yml gui-customization.enabled is also true. # False retains the config.yml mailbox.new-mail-notification.item base; never overrides notification enable gates. enabled: false # Valid non-air ITEM Material replaces only config.yml mailbox.new-mail-notification.item when both appearance gates pass. # Null or an invalid material retains the config.yml base (plugin fallback if that base is invalid). material: null # Optional integer ItemStack model metadata for the personal floating item; not a new global config.yml key. # Null leaves base metadata unchanged; the player's pack must define a model with suitable ground appearance. custom-model-data: null # Optional namespaced ItemStack model metadata for the personal floating item; ignored on unsupported server APIs. # Null leaves base metadata unchanged; requires the matching resource-pack model and correct ground transforms, not tooltip-style. item-model: null itemsadder-item: null # Public Access Mailbox floating item. # Public Access Mailbox role: replaces only the floating public new-mail ItemStack appearance. # Requires config.yml gui-customization.enabled AND this public.enabled to be true. # config.yml public-mailbox.mailboxes.new-mail-notification.enabled remains authoritative; never overridden here. # Parent config.yml public-mailbox.enabled AND public-mailbox.mailboxes.enabled must also remain true. # A valid non-null material replaces only public-mailbox.mailboxes.new-mail-notification.item; null keeps that config.yml base. # custom-model-data and item-model add ItemStack metadata, not global config keys; the pack must supply the model and ground appearance. # No tooltip-style is used for this world item; placement, refresh and notification lifecycle stay internal and unchanged. public: # Opt in to public appearance only when config.yml gui-customization.enabled is also true. # False retains the config.yml public-mailbox.mailboxes.new-mail-notification.item base; never overrides notification enable gates. enabled: false # Valid non-air ITEM Material replaces only config.yml public-mailbox.mailboxes.new-mail-notification.item when both appearance gates pass. # Null or an invalid material retains the config.yml base (plugin fallback if that base is invalid). material: null # Optional integer ItemStack model metadata for the public floating item; not a new global config.yml key. # Null leaves base metadata unchanged; the player's pack must define a model with suitable ground appearance. custom-model-data: null # Optional namespaced ItemStack model metadata for the public floating item; ignored on unsupported server APIs. # Null leaves base metadata unchanged; requires the matching resource-pack model and correct ground transforms, not tooltip-style. item-model: null itemsadder-item: null # Global control base. Only non-null properties override the existing role icon. # Shared appearance layers for eligible GUI controls; purpose-specific controls refine each non-null property. defaults: # Global base for eligible GUI controls, including synthetic displays; null retains the original role appearance. control: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Sole decorative filler appearance for all menus; no menu/slot/state inheritance and never fills empty slots. filler: {material: GRAY_STAINED_GLASS_PANE, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Semantic player-recipient role, not filler/navigation; null retains the actual built-in entry. # Shared by ALL player/admin letter/package/money/check-inbox and registered-mailbox recipient lists. # Exception to global info: Mailbox Details player information also uses this role and its online/offline state. recipient: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Online/offline selected from real player status in every recipient list and Mailbox Details, never from an overridden material. states: # Online recipient appearance; null inherits the recipient base and does not change status or eligibility. online: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Offline recipient appearance; null inherits the recipient base and does not change status or eligibility. offline: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # INBOX MAIL DISPLAY COPIES: player, read-only check, inspected player, shared admin. # No stored mail, handed-out mail, book pages, money amount, or package contents change. # Letters inherently contain messages: only base + category expiration variants apply; body/pages remain unchanged. # Package/money priority: category base -> message variant -> category expiration # -> combined message.expiration variant. Null fields preserve earlier appearance. # Expiration is selected from original mail metadata, never lore, config, or the clock. # Overdue mail remains with-expiration until cleanup; letters have no separate message variants. # Inbox display-copy appearances by mail category; refine message/expiration variants below without changing stored or claimed mail. mail: # Built-in PAPER: paper letter body in lore. Null material retains it. # Base inbox display for paper letter; null preserves its built-in material and mail data, with variants layered below. paper-letter: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox paper letter: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox paper letter: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Built-in WRITTEN_BOOK: book letter with its original pages. Null material retains it. # Base inbox display for book letter; null preserves its built-in material and mail data, with variants layered below. book-letter: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox book letter: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox book letter: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Built-in SHULKER_BOX: ordinary package, no COD payment required. Null material retains it. # Base inbox display for ordinary non-COD package; null preserves its built-in material and mail data, with variants layered below. standard-package: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox ordinary non-COD package: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox ordinary non-COD package: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Ordinary non-COD package with a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. with-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox ordinary non-COD package with a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox ordinary non-COD package with a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Ordinary non-COD package without a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. without-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox ordinary non-COD package without a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox ordinary non-COD package without a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Built-in RED_SHULKER_BOX: COD package awaiting payment. Null material retains it. # Base inbox display for COD package awaiting payment; null preserves its built-in material and mail data, with variants layered below. pending-cod-package: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD package awaiting payment: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD package awaiting payment: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # COD package awaiting payment with a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. with-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD package awaiting payment with a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD package awaiting payment with a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # COD package awaiting payment without a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. without-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD package awaiting payment without a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD package awaiting payment without a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Built-in BLUE_SHULKER_BOX: COD package whose payment was already accepted. Null material retains it. # Base inbox display for COD package with accepted payment; null preserves its built-in material and mail data, with variants layered below. accepted-cod-package: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD package with accepted payment: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD package with accepted payment: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # COD package with accepted payment with a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. with-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD package with accepted payment with a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD package with accepted payment with a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # COD package with accepted payment without a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. without-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD package with accepted payment without a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD package with accepted payment without a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Built-in YELLOW_SHULKER_BOX: declined or expired COD package returned to sender. Null material retains it. # Base inbox display for declined/expired COD package returned to sender; null preserves its built-in material and mail data, with variants layered below. returned-cod-package: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox declined/expired COD package returned to sender: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox declined/expired COD package returned to sender: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Declined/expired COD package returned to sender with a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. with-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox declined/expired COD package returned to sender with a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox declined/expired COD package returned to sender with a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Declined/expired COD package returned to sender without a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. without-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox declined/expired COD package returned to sender without a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox declined/expired COD package returned to sender without a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Built-in PURPLE_SHULKER_BOX: item-currency COD payout, not the original package. Null material retains it. # Base inbox display for COD item-currency payout; null preserves its built-in material and mail data, with variants layered below. cod-item-currency-payment: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD item-currency payout: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD item-currency payout: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # COD item-currency payout with a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. with-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD item-currency payout with a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD item-currency payout with a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # COD item-currency payout without a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. without-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD item-currency payout without a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD item-currency payout without a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Built-in GOLD_NUGGET: ordinary money mail. Null material retains it. # Base inbox display for ordinary money mail; null preserves its built-in material and mail data, with variants layered below. money-mail: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox ordinary money mail: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox ordinary money mail: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Ordinary money mail with a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. with-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox ordinary money mail with a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox ordinary money mail with a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Ordinary money mail without a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. without-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox ordinary money mail without a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox ordinary money mail without a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Built-in GOLD_NUGGET: money-currency COD payout, not ordinary money mail. Null material retains it. # Base inbox display for COD money-currency payout; null preserves its built-in material and mail data, with variants layered below. cod-money-payment: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD money-currency payout: expiration metadata present (overdue still matches until cleanup). # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD money-currency payout: no expiration metadata. # Category expiration layer; non-null fields refine earlier appearance without setting or removing a deadline. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # COD money-currency payout with a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. with-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD money-currency payout with a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD money-currency payout with a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # COD money-currency payout without a nonblank attached message in inbox views; refines the category base, not its text. # Category expiration appearance applies next; the combined message/expiration variant below is applied last. without-message: material: null custom-model-data: null item-model: null itemsadder-item: null tooltip-style: null # Inbox COD money-currency payout without a nonblank attached message: expiration metadata present (overdue still matches until cleanup). # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. with-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Inbox COD money-currency payout without a nonblank attached message: no expiration metadata. # Final combined appearance layer; non-null fields win without changing messages, deadlines or cleanup. without-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # One setting per control purpose, shared by every player/admin screen using it. # All fields are neutral: null retains each built-in Minecraft icon and its state. # These settings do not enable features, change actions or change menu positions. controls: # 1. SHARED NAVIGATION # Return to the parent menu, including recipient Back and package Close/Cancel. Separate from Exit and compose cancellation; default BARRIER. # Location: AdminExpirationModeGUI, AdminInboxPackageActionGUI, AdminInboxTargetGUI, AdminInboxViewGUI, AdminLetterTypeSelectionGUI, AdminMailAudienceGUI, AdminNpcToolsGUI, AdminPostOfficeGUI, AdminPostOfficeMailboxGUI, AdminPostOfficeMailboxListGUI, AdminRegisteredMailboxDetailGUI, AdminRegisteredMailboxTargetGUI, AdminSendMailGUI, InboxFilterGUI, LetterTargetGUI, LetterTypeSelectionGUI, MoneyMessageModeGUI, MoneyTargetGUI, PackagePreviewGUI, PackageReceiveGUI, PackageTargetGUI, PlayerMailboxManageGUI, SendMailMenuGUI, SharedAdminInboxFilterGUI, SharedAdminInboxGUI. Names/lore remain in language files. back: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Cancel an unfinished compose/confirmation operation. Does not customize Back or Exit. # Location: AdminInboxClearConfirmGUI, AdminPackageComposeGUI, AdminRegisteredMailboxRemoveConfirmGUI, PackageComposeGUI, ReturnedCodCleanupConfirmGUI, SharedAdminInboxClearConfirmGUI. Names/lore remain in language files. cancel: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Leave the player inbox/check or unregister menu. Shared exit appearance, never inherited from Back. # Location: AdminToolsGUI, InboxGUI, PlayerUnregisterMenuGUI. Names/lore remain in language files. exit: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Navigate to an available next page in every player/admin/network list. Delivery Search results use this; individual details are not paginated. # Location: AdminInboxTargetGUI, AdminInboxViewGUI, AdminPostOfficeMailboxListGUI, AdminRegisteredMailboxDetailGUI, AdminRegisteredMailboxTargetGUI, InboxGUI, LetterTargetGUI, MoneyTargetGUI, PackageTargetGUI, PlayerMailboxManageGUI, SharedAdminInboxGUI. Names/lore remain in language files. next-page: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Disabled next-page indicator in base menus. Network lists omit the indicator instead of showing a disabled arrow. # Location: AdminInboxTargetGUI, AdminInboxViewGUI, AdminPostOfficeMailboxListGUI, AdminRegisteredMailboxDetailGUI, AdminRegisteredMailboxTargetGUI, InboxGUI, LetterTargetGUI, MoneyTargetGUI, PackageTargetGUI, PlayerMailboxManageGUI, SharedAdminInboxGUI. Names/lore remain in language files. no-next-page: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Disabled previous-page indicator in base menus. Network lists omit the indicator instead of showing a disabled arrow. # Location: AdminInboxTargetGUI, AdminInboxViewGUI, AdminPostOfficeMailboxListGUI, AdminRegisteredMailboxDetailGUI, AdminRegisteredMailboxTargetGUI, InboxGUI, LetterTargetGUI, MoneyTargetGUI, PackageTargetGUI, PlayerMailboxManageGUI, SharedAdminInboxGUI. Names/lore remain in language files. no-previous-page: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Navigate to an available previous page in every player/admin/network list. Does not customize a disabled page indicator. # Location: AdminInboxTargetGUI, AdminInboxViewGUI, AdminPostOfficeMailboxListGUI, AdminRegisteredMailboxDetailGUI, AdminRegisteredMailboxTargetGUI, InboxGUI, LetterTargetGUI, MoneyTargetGUI, PackageTargetGUI, PlayerMailboxManageGUI, SharedAdminInboxGUI. Names/lore remain in language files. previous-page: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # 2. SHARED INFORMATION AND CONFIRMATION # confirm appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminInboxClearConfirmGUI, AdminRegisteredMailboxRemoveConfirmGUI, ReturnedCodCleanupConfirmGUI, SharedAdminInboxClearConfirmGUI. Names/lore remain in language files. confirm: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Loading/empty/result-limit/general status information; default PAPER where used by Network Tools. # Location: AdminInboxTargetGUI, AdminRegisteredMailboxTargetGUI. Names/lore remain in language files. empty: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # ALL information/header/package-information controls share this appearance. Mailbox Details player information is the recipient exception. # Location: AdminInboxPackageActionGUI, AdminInboxTargetGUI, AdminInboxViewGUI, AdminLetterTypeSelectionGUI, AdminPostOfficeMailboxListGUI, AdminRegisteredMailboxTargetGUI, InboxGUI, LetterTargetGUI, LetterTypeSelectionGUI, MainMailboxGUI, MoneyTargetGUI, PackageReceiveGUI, PackageTargetGUI, PlayerMailboxManageGUI, SendMailMenuGUI, SharedAdminInboxGUI. Names/lore remain in language files. info: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # 3. RECIPIENT LIST CONTROLS # All Players recipient-list filter shared across all letter/package/money/admin recipient selection menus. # Location: AdminInboxTargetGUI, LetterTargetGUI, MoneyTargetGUI, PackageTargetGUI. Names/lore remain in language files. recipient-filter-all: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Offline Players recipient-list filter shared across all recipient selection menus. # Location: AdminInboxTargetGUI, LetterTargetGUI, MoneyTargetGUI, PackageTargetGUI. Names/lore remain in language files. recipient-filter-offline: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Online Players recipient-list filter shared across all recipient selection menus. # Location: AdminInboxTargetGUI, LetterTargetGUI, MoneyTargetGUI, PackageTargetGUI. Names/lore remain in language files. recipient-filter-online: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Registered Mailboxes audience filter in admin registration management. # Location: AdminRegisteredMailboxTargetGUI. Names/lore remain in language files. register-filter-registered: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Stored Players audience filter in admin registration management. # Location: AdminRegisteredMailboxTargetGUI. Names/lore remain in language files. register-filter-stored: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # type recipient name appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminInboxTargetGUI, LetterTargetGUI, MoneyTargetGUI, PackageTargetGUI. Names/lore remain in language files. type-recipient-name: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # 4. INBOX CONTROLS # clear cod returns appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: SharedAdminInboxGUI. Names/lore remain in language files. clear-cod-returns: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # clear inbox appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminInboxViewGUI, SharedAdminInboxGUI. Names/lore remain in language files. clear-inbox: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # collect money appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: SharedAdminInboxGUI. Names/lore remain in language files. collect-money: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Open inbox filtering; the current filter name stays localized in lore. Filter choices have separate purposes below. # Location: InboxGUI, SharedAdminInboxGUI. Names/lore remain in language files. filter: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Admin Mail choice in the player inbox filter menu. # Location: InboxFilterGUI. Names/lore remain in language files. filter-admin-mail: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # By Date choice, shared by player and Shared Admin Inbox filter menus. # Location: InboxFilterGUI, SharedAdminInboxFilterGUI. Names/lore remain in language files. filter-by-date: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # By Expiration choice in the player inbox filter menu. # Location: InboxFilterGUI. Names/lore remain in language files. filter-by-expiration: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # By Type choice, shared by player and Shared Admin Inbox filter menus. # Location: InboxFilterGUI, SharedAdminInboxFilterGUI. Names/lore remain in language files. filter-by-type: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # inbox appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminToolsGUI, MainMailboxGUI. Names/lore remain in language files. inbox: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # send mail appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminToolsGUI, InboxGUI, MainMailboxGUI. Names/lore remain in language files. send-mail: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # 5. MAIL COMPOSITION AND PACKAGE CONTROLS # Accept a received COD/returned package in preview. Appearance never bypasses price, capacity or compatibility validation. # Location: PackagePreviewGUI. Names/lore remain in language files. accept-package: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # All Players audience shared across server paper/book/package/money sending menus. # Location: AdminMailAudienceGUI. Names/lore remain in language files. audience-all: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Offline Players audience shared across server paper/book/package/money sending menus. # Location: AdminMailAudienceGUI. Names/lore remain in language files. audience-offline: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Online Players audience shared across server paper/book/package/money sending menus. # Location: AdminMailAudienceGUI. Names/lore remain in language files. audience-online: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Select Recipient(s) audience shared across server paper/book/package/money sending menus. # Location: AdminMailAudienceGUI. Names/lore remain in language files. audience-select: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # book letter appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminLetterTypeSelectionGUI, LetterTypeSelectionGUI. Names/lore remain in language files. book-letter: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Package-compose Cash-On-Demand setting. The preview price has its own cod-price appearance. # Location: AdminPackageComposeGUI, PackageComposeGUI. Names/lore remain in language files. cod: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Read-only price display in COD Package Preview; does not change Vault/item-currency amounts. # Location: PackagePreviewGUI. Names/lore remain in language files. cod-price: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Confirm the player/admin composed package; distinct from accepting a received COD package. # Location: AdminPackageComposeGUI, PackageComposeGUI. Names/lore remain in language files. confirm-package: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # decline appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: PackagePreviewGUI. Names/lore remain in language files. decline: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Shared Add Experience control and synthetic claimable XP item in ALL player/admin package compose, preview and contents views. Never changes awarded XP. # Location: AdminInboxPackageActionGUI, AdminPackageComposeGUI, PackageComposeGUI, PackagePreviewGUI, PackageReceiveGUI. Names/lore remain in language files. experience: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # With Expiration selection in the admin sending flow; not an inbox mail expiration variant. # Location: AdminExpirationModeGUI. Names/lore remain in language files. expiration-with: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Without Expiration selection in the admin sending flow; not an inbox mail expiration variant. # Location: AdminExpirationModeGUI. Names/lore remain in language files. expiration-without: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # letter appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: SendMailMenuGUI. Names/lore remain in language files. letter: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # money appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: SendMailMenuGUI. Names/lore remain in language files. money: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Add Message choice shared by player/admin Money Mail Message menus. # Location: MoneyMessageModeGUI. Names/lore remain in language files. money-message-with: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Without Message choice shared by player/admin Money Mail Message menus. # Location: MoneyMessageModeGUI. Names/lore remain in language files. money-message-without: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # package appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: SendMailMenuGUI. Names/lore remain in language files. package: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Add/edit attached package message in player and admin compose. This does not style money message choices or sender-written text. # Location: AdminPackageComposeGUI, PackageComposeGUI. Names/lore remain in language files. package-message: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # paper letter appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminLetterTypeSelectionGUI, LetterTypeSelectionGUI. Names/lore remain in language files. paper-letter: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # return to admin appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminPackageComposeGUI. Names/lore remain in language files. return-to-admin: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Admin View Package Take Contents control; default CHEST. Partial claims and backend safety are unchanged. # Location: AdminInboxPackageActionGUI. Names/lore remain in language files. take-contents: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # 6. MAILBOX REGISTRATION AND ADMIN TOOLS # check inbox appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminToolsGUI. Names/lore remain in language files. check-inbox: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Open My Mailboxes from the player unregister selection menu. # Location: PlayerUnregisterMenuGUI. Names/lore remain in language files. manage-personal-mailboxes: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Open Manage Registered Mailboxes from Admin Tools. # Location: AdminToolsGUI. Names/lore remain in language files. manage-registered-mailboxes: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Registered personal mailbox entries shared by My Mailboxes and admin Mailbox Details, irrespective of body style. # Location: AdminRegisteredMailboxDetailGUI, PlayerMailboxManageGUI. Names/lore remain in language files. personal-mailbox: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # public access appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: AdminToolsGUI. Names/lore remain in language files. public-access: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Named Public Access Mailbox list entry; same appearance for every public registration. # Location: AdminPostOfficeMailboxListGUI. Names/lore remain in language files. public-mailbox: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Open the registered Public Access Mailboxes list. # Location: AdminPostOfficeMailboxGUI. Names/lore remain in language files. public-mailbox-list: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Set Public Access Mailbox action; independent from setting an NPC or a personal mailbox. # Location: AdminPostOfficeMailboxGUI. Names/lore remain in language files. public-mailbox-register: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Remove Public Access Mailbox action; list entries still require their documented Shift-Right-Click. # Location: AdminPostOfficeMailboxGUI. Names/lore remain in language files. public-mailbox-remove: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Public Access Mailbox Set/Remove branch in Public Mail Access Registration. # Location: AdminPostOfficeGUI. Names/lore remain in language files. public-mailbox-tools: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Set Public Access NPC action in the NPC registration menu. # Location: AdminNpcToolsGUI. Names/lore remain in language files. public-npc-register: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Remove Public Access NPC action in the NPC registration menu. # Location: AdminNpcToolsGUI. Names/lore remain in language files. public-npc-remove: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Public Access NPC Set/Remove branch in Public Mail Access Registration. # Location: AdminPostOfficeGUI. Names/lore remain in language files. public-npc-tools: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # Register a personal mailbox for the selected player from Mailbox Details. # Location: AdminRegisteredMailboxDetailGUI. Names/lore remain in language files. register-mailbox: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null} # selection mode appearance. This semantic purpose is shared only by the listed controls, not every item with the same Minecraft material. # Location: PlayerUnregisterMenuGUI. Names/lore remain in language files. selection-mode: {material: null, custom-model-data: null, item-model: null, itemsadder-item: null, tooltip-style: null}