Filter loader...
Filter versions...

Highlights ✨

  • Config-driven command aliases/lmb now syncs its aliases from settings.command-aliases.lmb, falling back to legacy configs and updating live on /lmbreload so clickable prompts always point at the primary alias.

Configuration & UX 🛠️

  • Default config.yml bumped to version 1.7 with expanded comments, optional custom-model-data hooks, and unified placeholder handling across messages and GUI elements.

Dependency Notes 📦

  • Requires YskLib 1.6.7+ for the updated MessageManager and command alias utilities.

This is a light maintenance release that swaps LamMailBox onto the shared YskLib messaging helper and tidies a few internal workflows. Gameplay, commands, and configs behave exactly as before.

Updates ✨

  • MessageManager integration (internal) – messages are now cached at startup via YskLib, trimming a little overhead when the plugin sends frequent notifications.
  • Dual placeholder support everywhere – both {placeholder} and legacy %placeholder% formats are accepted across commands, GUIs, and config entries.
  • Small responsiveness improvements from polishing GUI click handling and item rendering paths.

Fixes 🛠️

  • Strengthened error handling in GUI click events to prevent potential edge-case issues
  • Improved code maintainability to enable faster bug fixes in future releases

Changes 🔄

  • Config version incremented to 1.7 to reflect the placeholder helper swap (existing %placeholder% lines remain valid—no edits required).
  • YskLib dependency bumped to 1.6.4+ so the shared MessageManager feature is available.
  • Internal GUI helpers were grouped into focused classes for navigation, pagination, styling, and command item composition to keep future maintenance simple.

Updates ✨

  • Added pagination to mailbox and sent mail GUIs, keeping each viewer's page state and exposing configurable previous/next buttons plus a page indicator.
  • Introduced custom model data support across GUI decorations, command items, and mailings so resource-pack overrides display consistently in previews and persisted mail.
  • Expanded composer and review screens with back buttons and editor shortcuts, making it easier to jump between the mailbox, sent list, and item editors while drafting mail.

Fixes 🛠️

  • Apply configuration-driven item meta without overwriting existing lore or custom model data, preserving detailed previews for stored mail, decorations, and command bundles.
  • Restored legacy command items by falling back to the generic action key when specialized metadata is missing, keeping older configurations clickable.

Changes 🔄

  • Raised the default configuration schema to 1.6 and added pagination/back-button/custom-model entries throughout config.yml, alongside matching guidance in mailings.yml.
  • SQLite storage now migrates mail_command_items to add a custom_model_data column and persists the optional value parallel to YAML command item definitions.

Notes 📌

  • Use the command item editor's new custom model button to set a numeric model id or type CLEAR to reset, and update page button slots/materials to fit your layout before deployment.
  • %current% and %total% placeholders populate the pagination indicator text; translate the new config messages/titles if you localize player-facing strings.
  • If you upgraded from v1.5 or earlier, edit gui.main.items.mail-display.slots to free the bottom row (slots 37–44) so the next-page button has room; otherwise pagination controls stay hidden.
  • Back up your data before upgrading so the automatic column migration and config updater can run safely, then /lmbreload to refresh GUI layouts after adjusting defaults.

Updates ✨

  • Introduced automated mailings defined in mailings.yml, supporting cron-based schedules, first-join delays, permission gates, and Folia-safe delivery with automatic player notifications.
  • Added the /lmb mailings admin command with live status reporting (last/next run previews, run counters) backed by YAML and SQLite repositories.
  • Expanded the mail composer: schedule or expire deliveries via the GUI clock, build reusable console command bundles with the new command-item editor, and preview current receivers/messages directly in the interface.
  • Upgraded /lmb send to accept inline sections (| [commands] | schedule:YYYY:MM:DD:HH:mm | expire:YYYY:MM:DD:HH:mm) so console and admins can queue timed or command-driven mail in one call.

Fixes 🛠️

  • Blocked players from mailing themselves and added capacity checks before accepting new receivers to prevent overfilled mailboxes.
  • Restricted bulk recipient and command attachment actions to admins, ensuring permission checks mirror the GUI workflow.
  • Added sent-mail deletion confirmation and safeguarded composer/item GUI closures so items return to players instead of being lost.
  • Normalized allonline targets to snapshot current online players before storage, ensuring scheduled deliveries reach the correct recipients.

Changes 🔄

  • Bumped configuration schema to 1.4 with expanded messages, titles, and GUI metadata plus the new mailings.auto-cleanup toggle for status pruning.
  • Mail records now capture optional schedule and expiry timestamps, defaulting expiration from settings.default-expire-days when unspecified.
  • Command attachments persist as structured "command items" (YAML command-items section or SQLite mail_command_items table) while retaining legacy command lists for backward compatibility.

Notes 📌

  • Cron expressions follow the UNIX format (m h dom mon dow); disable any definition by setting enabled: false.
  • mailings.yml is generated on first run—review default examples before enabling automation in production.
  • Back up your YAML/SQLite data before upgrading; the plugin will auto-create the new mail_command_items/mailing_status tables and mailing-status.yml file on startup.
  • Reloading via /lmbreload refreshes mailing definitions, runs auto-cleanup, and reports active IDs for quick verification.

Updates ✨

  • Added SQLite storage backend as an alternative to YAML for better performance on large servers.
  • Introduced /lmbmigrate command to safely move mail data between YAML and SQLite storage backends.
  • Added new storage.yml configuration file for backend selection.

Fixes 🛠️

  • Improved mail querying performance and scalability for servers with large mail volumes.
  • Enhanced error handling and validation throughout the storage system.

Changes 🔄

  • Redesigned storage layer with repository pattern for cleaner code architecture and future expandability.
  • Enhanced command alias system with support for multiple aliases from configuration.
  • Centralized mail logic to reduce code duplication and improve maintainability.

Notes 📌

  • Existing YAML installations continue working unchanged—SQLite is opt-in via the new storage.yml file.
  • SQLite is recommended for servers with high mail volumes (1000+ mails) due to better query performance and scalability.
  • Migration between backends requires empty target storage to prevent data loss—always backup before switching.
  • All existing GUI configurations and features work identically with both storage backends.
  • Use the /lmbmigrate command to transfer data between storage types—automatic import has been removed for safety.

Storage Configuration Example

# storage.yml - New configuration file
storage:
  type: sqlite  # or yaml

Migration Command Usage

/lmbmigrate yaml sqlite    # Move from YAML to SQLite
/lmbmigrate sqlite yaml    # Move from SQLite to YAML

Updates ✨

  • Added per-slot enabled toggles across the mailbox, sent-mail, mail-view, and composer GUIs so you can hide any built-in control without custom code.
  • Decorations now accept lore for hover text and a commands list that executes console actions with %player% / %uuid% placeholders.
  • Inline comments and README guidance explain how to wire the new toggles and command hooks directly from config.yml.

Notes 📌

  • Existing installs keep their behaviour—new flags default to the previous values until you opt in.
  • Place any console actions under the relevant decoration block in config.yml and use %player% / %uuid% where necessary.

Config Example

gui:
  main:
    decoration:
      trigger-button: # Example of a decoration that runs commands (can add as many as you like)
        enabled: true # Set to false to hide this button
        material: LIGHT_WEIGHTED_PRESSURE_PLATE
        name: '&bTrigger Reward'
        lore:
          - '&7Runs a console command on click.'
        slots: [22]
        commands: # Commands to run when clicked (as console)
          - 'lp user %player% parent add reward'
          - 'say %player% (%uuid%) just triggered the reward button!'

Updates ✨

  • Added a dismiss button for text-only mails so players can clear their inbox without collecting rewards.
  • Compose GUI now hides item, command, and schedule controls for players lacking the required permissions, keeping the experience tidy for regular users.

Fixes 🛠️

  • Resolved a crash that occurred when opening the Sent Mail view with an empty mailbox and no configured placeholder item.
  • Improved inbox behaviour so marking a mail as read shows the correct chat feedback even when no items or commands are attached.

Changes 🔄

  • Disabled slots in the compose screen now reuse the existing glass filler, giving a consistent look while indicating unavailable actions.

Initial Version


Project members

YusakiDev

Member

Details

Licensed GPL-3.0-only
Published a month ago
Updated 13 days ago