Smart Menus | #1 Advanced Custom GUI Menus, Conditions & Dyn
3.6Powered By the famous and well known SmartInvs API By Minskube
3.6latestSmartMenus 3.6 — Animated Menus & Ender Chest Viewingyesterday · Added configurable menu animations with looping, reverse, and ping-pong playback. · Added /animatedborder with moving colored trails and a working Close button. · Added /enderchestview <player> and /ecview <player> to inspect another online player's ender chest. · Other-player inventory viewing is read-only. Your own inventory keeps its configured interactions. · Added viewer/target placeholders and API support. Permissions: Viewing another player's ender chest requires smartmenus.command.enderchest_viewer.others or smartmenus.command.others, alongside the normal menu permission. Note: The target player must be online.3.5OreoEssentials Integration FixAug 23, 2026 · Fixed SmartMenus throwing NoClassDefFoundError when OreoEssentials was installed without Vault. · OreoEssentials Currency and Warp hooks now load correctly even if Vault is not present. · Vault economy integration is now treated as optional and only enabled when Vault is actually installed. · Removed repeated startup stack traces caused by missing Vault classes.3.4Fixed issue with FoliaAug 23, 2026 Fixed error not supproted with folia3.3Multi-storage cooldown systemAug 19, 2026 Cooldowns can now be stored in three backends, configurable in config.yml: · YAML (default) — local cooldowns.yml file, single-server · REDIS — Redis database, works across multiple servers · PDC — PersistentDataContainer, single-server, player must be online3.2Persist cooldowns across server restartsAug 19, 2026 - CooldownManager now saves active cooldowns to plugins/SmartMenus/cooldowns.yml on plugin disable (server stop/restart) and reloads them on startup. - Expired cooldowns are dropped on both save and load, so time that passed while the server was off still counts down — a player 20 min into a 30 min cooldown comes back with ~10 min left, not a fresh 30. - If there are no active cooldowns, the file is cleaned up rather than left empty.3.1Add configurable cooldowns for GUIs and actionsAug 19, 2026 - Per-GUI open cooldown (command, OPEN_GUI action, NPC) - Per-input-slot action cooldown (e.g. sacrifice) - Configurable title, message, sound and bypass permission - Duration in seconds/minutes/hours or duration string3.0Upate 3.0 : COMPLETE RECODE V2Aug 13, 2026 Complete recode of SmartMenus Fixes and improvements2.8SmartMenus 2.8 — CHANCE_REWARD, /sm, Bug FixesJul 28, 2026 New Feature — CHANCE_REWARD Action A new action type that rolls a weighted random reward every time a player clicks. Define as many tiers as you want — each with its own probability and commands/messages. Anything left over from 100% is an automatic miss. Code (Text): actions: - type: CHANCE_REWARD rewards: - chance: 5 # 5% — Legendary commands: - "give {player} netherite_ingot 1" - "broadcast &6{player} found a LEGENDARY reward!" messages: - "<gradient:#FFD700:#FF8C00><bold>✦ LEGENDARY!</bold></gradient> <white>Netherite Ingot!" - chance: 25 # 25% — Rare commands: - "give {player} diamond 3" messages: - "<aqua><bold>✦ RARE!</bold></aqua> <gray>You found 3 Diamonds!" - chance: 70 # 70% — Common commands: - "give {player} iron_ingot 8" messages: - "<white>✦ Common. <gray>You found 8 Iron Ingots." # remaining 0% — full miss, no entry needed How the roll works: Tiers are checked top-to-bottom. A random number from 0 to 100 is rolled. The first tier whose cumulative chance exceeds the roll is awarded. Chances don't need to sum to 100 — the leftover is simply a miss with no reward. messages: key — Full color support Messages defined under messages: support all color formats: · & codes — Code (Text): &a&lGreen Bold · Hex colors — Code (Text): &#FF5500Orange · MiniMessage — Code (Text): <red>text</red> , Code (Text): <bold> , Code (Text): <italic> · MiniMessage gradients — Code (Text): <gradient:#FF0000:#0000FF>text</gradient> · MiniMessage rainbow — Code (Text): <rainbow>text</rainbow> A ready-to-use example config ( chance_crate.yml) is included and auto-extracted on startup. Open it with /chancecrate or /lootcrate. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Bug Fix — NoClassDefFoundError on startup without OreoEssentials Problem: If OreoEssentials was not installed on the server, SmartMenus crashed during onEnable with Code (Text): NoClassDefFoundError: fr/elias/oreoEssentials/modules/currency/CurrencyService . The null check for the plugin was in place, but casts to OreoEssentials types outside try-catch blocks still forced the JVM to resolve the class at runtime. Fix: All OreoEssentials type references in DefaultItemProvider replaced with Code (Text): Object fields and Code (Text): Class.forName() reflection inside Code (Text): try-catch(Throwable) blocks. OreoEssentials integration continues to work exactly as before when the plugin is present. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
New Command Alias — /sm Code (Text): /sm is now a valid alias alongside the existing Code (Text): /smenu , Code (Text): /smenus , Code (Text): /smartmenu , Code (Text): /ogui , Code (Text): /gui , Code (Text): /omenu . ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Upgrading from 2.7 Drop the new jar in, restart or /sm reload. No config changes required. The chance_crate.yml and reward_menu.yml examples are extracted automatically on first start (or when regenerate-default-guis: true in config.yml). ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Created by Oreo Studios · SmartMenus 2.8
2.7FixJul 11, 2026 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━SmartMenus 2.7 — INPUT Slots Now Actually Work ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ SmartMenus 2.7 fixes a long-standing bug where INPUT slot drag-and-drop did nothing at all, and delivers the full runtime implementation of the on-place command system. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Bug Fix — INPUT Slot Drag & Drop Affected: Any GUI using type: INPUT items. Problem: The on-place: and remove-on-place: keys were documented in the wiki and supported by the in-game editor — but were never actually parsed from YAML at load time and had no runtime handler. Placing items into INPUT slots did nothing: the item stayed in the player's cursor, no commands fired, and no feedback was given. Fix: Full runtime implementation added. Clicking, right-clicking, and dragging items into INPUT slots now all work correctly. The plugin reads on-place: commands and remove-on-place: from your config and handles them at EventPriority.HIGH — after SmartInventory's own cancel — so placements are intercepted cleanly without conflicting with other slot logic. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ INPUT Slots — Full Config Reference Code (Text): sacrifice-slot: type: INPUT slot: 13 material: RED_CONCRETE name: "&c&l[ Place Item Here ]" lore: - "&7Drop any item to sacrifice it." on-place: - "broadcast &6{player} &7sacrificed &e%input_item_name% &7x%input_item_amount%!" - "give {player} diamond 1" remove-on-place: true on-place: — Commands to run when an item is placed A list of console commands that fire the moment a player places an item into the slot. The following placeholders are available in every command: Placeholder Value Code (Text): {player} The player's username Code (Text): %input_item_material% Material name (e.g. Code (Text): DIAMOND_SWORD ) Code (Text): %input_item_name% Display name, or material name if the item has none Code (Text): %input_item_amount% Stack size of the placed item remove-on-place: — What happens to the item after commands fire Value Behaviour Code (Text): true (default) Item is consumed — cursor is cleared, commands fire, slot shows placeholder again Code (Text): false Item stays in the slot — commands fire, player can retrieve the item later ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Examples .SpoilerTarget">Spoiler: Sacrifice Altar — item consumed on place Code (Text): sacrifice_altar: title: "&4&l Sacrifice Altar" rows: 3 commands: [ "altar", "sacrifice" ] items: border: slots: [ 0-8, 18-26 ] material: RED_STAINED_GLASS_PANE name: "&8" info: slot: 4 material: KNOWLEDGE_BOOK name: "&c&l
Sacrifice an Item" lore: - "&7Place any item in the &cred slot&7 below." sacrifice-slot: type: INPUT slot: 13 material: RED_CONCRETE name: "&c&l[ Place Item Here ]" lore: - "&7Drop an item here to sacrifice it." on-place: - "broadcast &6{player} &7sacrificed &e%input_item_name% &7x&e%input_item_amount%!" - "give {player} diamond 1" remove-on-place: true .SpoilerTarget">Spoiler: Inspect Slot — item stays, player takes it back Code (Text): inspect_gui: title: "&b&l Item Inspector" rows: 3 commands: [ "inspect" ] items: inspect-slot: type: INPUT slot: 13 material: CYAN_CONCRETE name: "&b&l[ Inspect Slot ]" lore: - "&7Drop an item here to inspect it." - "&aYou can take it back." on-place: - "broadcast &b{player} &7is inspecting &e%input_item_name%&7!" remove-on-place: false ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Upgrading from 2.6 Drop the new jar in, restart or /smartmenus reload. No config changes required. If you already have INPUT slots configured, they will now work correctly without changing anything. The on-place: and remove-on-place: keys you may have written previously are now fully respected. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Created by Oreo Studios · SmartMenus 2.7
2.6SmartMenus 2.6 — Patch NotesJun 16, 2026 Bug Fixes Fixed GUI Items Appearing in Player Inventories & Graves After Death Affected: Servers using use_bottom_inventory: true with grave plugins such as AxGraves. A regression introduced in v2.5 could cause GUI filler items to appear in player inventories after closing a GUI or dying. In some cases, grave plugins would also save GUI items instead of the player's real items. Fixed Snapshot Corruption · Removed the syncSnapshot() system entirely. · Snapshots are now captured only once when the GUI opens. · Added targeted slot updates through updateSnapshotSlot() to keep snapshots accurate without overwriting them with GUI items. · Prevents GUI filler items from being saved into inventory snapshots. Fixed Missing Items in Graves · SmartMenus now patches the death drop list before grave plugins process it. · GUI-marked items are automatically removed from event.getDrops(). · Real items stored in the snapshot are re-inserted into the drop list. · Ensures grave plugins receive the player's actual inventory contents. Improved Inventory Restoration Safety · Added PDC validation during inventory restoration. · Any GUI-marked item accidentally present in a snapshot will be ignored and restored as empty. · Prevents future edge cases from reintroducing GUI items into player inventories. Improved Death Handling · All physical slots used by bottom_items are now cleared before inventory restoration occurs. · Guarantees GUI items are fully removed before real items are restored. · Improves compatibility with AxGraves and similar inventory management plugins.Internal Improvements · Replaced full inventory snapshot re-syncing with efficient per-slot updates. · Reduced unnecessary inventory cloning operations. · Improved reliability of Bottom Inventory GUIs during inventory modifications and player death events. Build Changes · Version bumped from 2.5-SNAPSHOT → 2.6-SNAPSHOT
2.5Inventory & Stability UpdateJun 15, 2026 SmartMenus 2.5 — Inventory & Stability Update ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Fixed: take: true Items Reappearing Items consumed by conditions inside bottom-inventory GUIs could sometimes reappear after being removed. What's fixed: · Inventory snapshots now automatically synchronize after successful item consumption. · Reworked item removal logic for improved reliability. · Fixed edge cases where inventory restores could undo consumed items. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Fixed: GUI Items Appearing Inside Graves Players who died while a bottom-inventory GUI was open could have GUI filler items saved into AxGraves and similar grave plugins. What's fixed: · Real player inventory is now restored before grave plugins process drops. · Prevents GUI filler items from being stored in graves. · Eliminates related duplication issues. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Fixed: Inventory Corruption During GUI Navigation Navigating between multiple bottom-inventory GUIs could overwrite the original inventory snapshot. What's fixed: · Snapshots are no longer replaced while another bottom GUI is active. · Improved GUI transition handling. · Original inventory is now preserved correctly across menu navigation. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ New: open_sound Support You can now play sounds when a GUI opens without using commands. Code (YAML): open_sound : BLOCK_CHEST_OPEN Or with advanced settings: Code (YAML): open_sound: sound : BLOCK_CHEST_OPEN volume : 1.0 pitch : 1.2 Features: · Supports both open_sound and open-sound · Works alongside existing open_commands and open-actions · Supports any Bukkit Sound enum ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Build & Dependency Changes · Updated version to 2.5-SNAPSHOT · Added dependency exclusions for Nexo · Added dependency exclusions for ModeledNPCS-API · Improved classpath compatibility with Triumph GUI · Disabled JitPack SNAPSHOT resolution for greater dependency stability ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Thank you for supporting SmartMenus!
2.4SmartMenus 2.4 — Patch NotesJun 14, 2026 Bug Fixes - Fixed: [openguimenu] actions not working after DM conversion GUI navigation buttons converted from DeluxeMenus now correctly open their target menus. The OPEN_GUI action type was previously silently dropped, causing clicks to do nothing. - Fixed: Converted GUI IDs with hyphens not resolving Menus converted from filenames like jobs-farmer.yml are registered with underscores (jobs_farmer), but DM configs reference them with hyphens. SmartMenus now normalizes the ID on lookup so both formats resolve correctly. - Fixed: SmartMenus overriding other plugins' commands When a converted GUI registered a command alias already owned by another plugin (e.g. /jobs from JobsReborn), SmartMenus would forcibly steal it — breaking the original plugin's command entirely. SmartMenus now skips any alias that conflicts with an existing plugin and logs a warning instead of overriding. - Fixed: Script conditions always failing on Java 17+ servers Nashorn (the built-in JS engine) was removed in Java 15. Script conditions like %placeholder% == value would always return false on modern servers. SmartMenus now includes a built-in fallback expression evaluator supporting ==, !=, >=, <=, >, < for both numeric and string comparisons — no GraalVM required. - Fixed: GUI not updating visually after a click action fires a command When a button fired a player command (e.g. /jobs join miner), the GUI would re-render immediately before the command had time to take effect, so PlaceholderAPI values hadn't changed yet and the button appeared to do nothing. The GUI now waits 5 ticks after a click before refreshing, giving the server time to process the command first.2.3⚡ SmartMenus 2.3 — GUI Lifecycle Events & Full DM ConverterJun 13, 2026 SmartMenus 2.3 adds three new engine-level features — open requirements, open actions, and close actions — and delivers a complete rewrite of the DeluxeMenus converter, fixing every known conversion gap and bug. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ open-requirements — Gate Any GUI You can now block players from opening a GUI entirely using the same condition system used for item visibility. Code (Text): my_gui: title: "&cVIP Zone" rows: 3 open-requirements: - type: PERMISSION permission: group.vip items: ... If any condition in open-requirements fails, the GUI will not open and the player receives the condition's error message. Works on both direct commands and OPEN_GUI actions triggered from other GUIs. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━open-actions & close-actions — GUI Lifecycle Run actions automatically when a player opens or closes a GUI. Code (Text): my_gui: title: "&aWelcome" rows: 3 open-actions: - type: SOUND sound: BLOCK_NOTE_BLOCK_PLING close-actions: - type: PLAYER_MESSAGE message: "&7Menu closed." items: ... · open-actions — fired the moment the inventory is displayed · close-actions — fired when the player closes the inventory (any method) · Supports all SmartMenus action types: PLAYER_COMMAND, CONSOLE_COMMAND, SOUND, ACTION_BAR, TITLE, BROADCAST, OPEN_GUI, etc. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ amount — Item Stack Size Items now support an amount: field to control the displayed stack size. Code (Text): items: 5: material: DIAMOND name: "&bx64 Bundle" amount: 64 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ DeluxeMenus Converter — Full Rewrite The converter has been completely rewritten. Every known conversion gap and bug from previous versions is now fixed. Bug fixes Bug Fix Code (Text): [openguimenu] prefix was silently dropped Now correctly converts to OPEN_GUI Code (Text): [sound] NAME 0.8 1.4 — volume & pitch ignored Parsed and written as Code (Text): volume: 0.8, pitch: 1.4 Code (Text): model_data: field ignored Converted to Code (Text): custom_model_data: Out-of-range slots written to output Filtered — slots beyond the row count are skipped Code (Text): size: 53 giving wrong row count (5 instead of 6) Now uses ceiling division to match DM behaviour Fill item not detected when name had color prefix Color codes stripped before checking if name is blank Duplicate open commands kept Deduplicated while preserving order New action prefixes DeluxeMenus SmartMenus Code (Text): [openguimenu] id OPEN_GUI Code (Text): [actionbar] text ACTION_BAR Code (Text): [minimessage] text PLAYER_MESSAGE Code (Text): [minibroadcast] text BROADCAST Code (Text): [givemoney] X CONSOLE_COMMAND Code (Text): eco give {player} X Code (Text): [takemoney] X CONSOLE_COMMAND Code (Text): eco take {player} X Code (Text): [giveexp] X CONSOLE_COMMAND Code (Text): xp add {player} X Code (Text): [takeexp] X CONSOLE_COMMAND Code (Text): xp add {player} -X Code (Text): [chat] , Code (Text): [delay] , Code (Text): [placeholder_delay] Skipped cleanly (no equivalent) New item fields DeluxeMenus field SmartMenus output Code (Text): left_click_commands Code (Text): click_actions.LEFT Code (Text): right_click_commands Code (Text): click_actions.RIGHT Code (Text): shift_left_click_commands Code (Text): click_actions.SHIFT_LEFT Code (Text): shift_right_click_commands Code (Text): click_actions.SHIFT_RIGHT Code (Text): click_commands Code (Text): actions: (any click) Code (Text): amount: Code (Text): amount: Code (Text): model_data: Code (Text): custom_model_data: Code (Text): glint: true Code (Text): glow: true Code (Text): permission: node Code (Text): view-requirements PERMISSION Code (Text): enchantments: [SHARP:2] Code (Text): enchantments: {sharpness: 2} New GUI-level fields DeluxeMenus field SmartMenus output Code (Text): open_commands: Code (Text): open-actions: Code (Text): close_commands: Code (Text): close-actions: Code (Text): open_requirement: Code (Text): open-requirements: New view_requirement types DeluxeMenus type SmartMenus type has group LUCKPERMS_GROUP javascript SCRIPT Smart optimisation When Code (Text): left_click_commands and Code (Text): right_click_commands contain identical actions, the converter automatically collapses them into a single Code (Text): actions: block instead of duplicating entries under Code (Text):
2.2SmartMenus 2.2 — DeluxeMenus Migration & Slot PriorityJun 13, 2026 SmartMenus 2.2 focuses on making migration from DeluxeMenus seamless. The converter now handles slot priority and view requirements automatically, and the engine natively supports unlimited priority levels on any slot. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Slot Priority — N Levels Supported SmartMenus now supports conditional item display with unlimited priority levels on a single slot. Instead of a numbered priority system, SmartMenus uses a clean chain of view-requirements + else-item. Each else-item can have its own view-requirements and its own else-item, creating a full priority chain: Code (Text): items: my_item: slot: 13 material: NETHER_STAR name: "&4Admin Item" view-requirements: - type: PERMISSION permission: group.admin else-item: material: DIAMOND name: "&bVIP Item" view-requirements: - type: PERMISSION permission: group.vip else-item: material: STONE name: "&7Default Item" How it works: · SmartMenus checks the top item's view-requirements · If they pass → that item is displayed · If they fail → it moves to the else-item and checks its view-requirements · This repeats down the chain until an item matches or the chain is exhausted Previously, else-item was a static fallback with no conditions. It now supports the full feature set: view-requirements, nested else-item, actions, close, glow, item_flags, and custom model data. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ DeluxeMenus Converter — Priority & view_requirement The /smartmenus convert deluxemenus command now fully handles two previously unsupported DM features: Priority When multiple items share the same slot with different priority values in DeluxeMenus, the converter automatically chains them into the SmartMenus priority system: Code (Text): # DeluxeMenus (before) items: 'vip_item': material: DIAMOND slot: 13 priority: 1 view_requirement: requirements: perm: type: has permission permission: group.vip 'default_item': material: STONE slot: 13 priority: 2 Code (Text): # SmartMenus (after conversion) items: 13: material: DIAMOND view-requirements: - type: PERMISSION permission: group.vip else-item: material: STONE Items are sorted by priority number (lowest first = highest priority) and chained automatically. view_requirement The view_requirement block on any item is now converted to SmartMenus view-requirements. Supported DM requirement types: DeluxeMenus type SmartMenus type has permission PERMISSION has money VAULT_MONEY has exp lvl / has exp level XP_LEVEL has item ITEM >= / <= / == / > / < / != PLACEHOLDER string equals PLACEHOLDER_EQUALS string contains PLACEHOLDER_CONTAINS javascript / regex matches skipped (not supported) deny_commands from view_requirement are intentionally skipped — SmartMenus handles access silently by simply not rendering the item. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Other Changes else-item is now fully featured — Previously, else-item only supported material, name, lore, and actions. It now also supports close, glow, item_flags, item_type, item_id, and custom_model_data, matching the full item spec. Bottom inventory respects priority chains — Items in use_bottom_inventory GUIs now also walk the full view-requirements + else-item chain, consistent with regular GUI slots. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Upgrading from 2.1 Drop the new jar in, restart. No config changes required. Existing GUIs using else-item continue to work identically — the new chain logic only activates when else-item itself contains a view-requirements block. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Created by Oreo Studios · SmartMenus 2.22.1FULL Bedrock supportJun 11, 2026 - Auto-convert feature with a minimal YAML example showing auto-convert: true - 4 bedrock form types in spoiler blocks (SIMPLE_FORM, MODAL_FORM, CUSTOM_FORM, DIALOGUE) with full YAML examples - 2 new action types (OPEN_BEDROCK_FORM, OPEN_BEDROCK_DIALOGUE) - All 34 default GUIs updated with auto-convert - Default config now always refreshes on restart, with a note for users who customised defaults - Floodgate detection and fallback behavior - New permissions (smartmenus.convert, smartmenus.editor) - Dependency notes — Paper 1.21.5+, Geyser required; Floodgate optional - Upgrade guide — drop jar, restart, done2.0Fixed Special letters supportJun 8, 2026 - You'd add special characters like ç to commands: in your YAML - normalizeCommands would call toLowerCase → ç, then strip ç - Bukkit registered /raas, not /raças so the command never matched After this fix: /raças, /raça, /origens and any other accented command will register and work correctly.1.0.5Add FeatureJun 6, 2026 Changelog v1.0.5 — June 2026 New · In-game item capture — /smartmenus captureitem <gui> <slot> [key] Hold any item in your main hand, run the command, and SmartMenus reads it directly from your inventory and writes it into the GUI's YAML file — no manual YAML editing needed. Custom enchant books, items with existing lore, custom model data, everything is captured exactly as-is. What gets captured: · name: the display name (§ color codes converted to & for readability) · lore: every lore line, preserved exactly · material: item type · enchantments: regular enchants and stored enchants (enchanted books) · custom_model_data: captured automatically if present · item_flags: HIDE_ENCHANTS, HIDE_ATTRIBUTES, etc. The file is saved and GUIs reload instantly — no restart, no /smartmenus reload needed. Permission: smartmenus.captureitem (op by default) Example: Code (Text): /smartmenus captureitem my_shop 13 /smartmenus captureitem my_shop 13 sharpness_book1.0.4Ogui -> SmartMenusJun 5, 2026 FULL PLUGIN REWRITE AND RENAME Check docs for more info - Folia support via per-entity scheduler (FoliaSchedulerManager) - Full SmartMenusAPI developer API — open GUIs, register custom action/condition types, eval scripts, reload, etc.1.0.3FixesFeb 12, 2026 Fixed an issue with permissions1.0.2Fixes in colorUtilsFeb 6, 2026 fixed issues in color utils1.0.1fixed an issue with economy loadingFeb 6, 2026 Fixed an issue where plugin loaded before OeEconomy1.0small fix with reload commandFeb 6, 2026 fixed a small issue reloading guis
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta