Sueta

zMenu

1.1.2.0

The best inventory plugin! Online editor available!

·Plugin
  1. 1.1.2.0latestzMenu 1.1.2.0last week

    New Features

    * Added DeluxeMenus conversion support with /zm convert deluxemenus [menu] (also available as dm), allowing DeluxeMenus configurations to be converted into zMenu inventories and reporting unsupported or partially converted features. * Added ItemStack-to-zMenu conversion support, including conversion of supported Minecraft item components. * Added serialization support for inventories, menu items, buttons, actions, requirements, item components, commands and related API objects, allowing these objects to be written back in the format understood by zMenu. * Added parent/child placeholder scopes and placeholder modifiers, while improving placeholder processing performance. * Added inventory replacement modes with support for CUMULUS and CHEST (bedrock player). * Added support for using Bukkit dye color names when parsing colors, including minecraft:<color> names. * Added the dialog_list dialog type, the last vanilla dialog type zMenu did not support. It shows one button per dialog listed under dialogs:, labelled with that dialog's external-title. Entries are zMenu dialog names (name or plugin:name) or vanilla/datapack dialogs (registry-key: minecraft:server_links). Options: number-of-columns, button-width, an optional exit-button, and a back-button that is added to listed dialogs without an exit button so players can return to the list. Listed dialogs whose open-requirement the player does not meet are hidden. How many lists can be nested inside each other is set by dialog-list-max-depth in config.yml (default 4). See dialogs/dialog_list-dialog.yml.

    Improvements

    * Dialogs now read external_title as well as external-title. The shipped example dialogs used external_title, which was ignored. An empty external title is no longer sent, so the client falls back to the dialog name. * server_links dialogs without a server-links button no longer show a blank exit button. * Improved hook loading so failures caused by third-party plugins, missing classes, invalid versions or broken APIs no longer abort the entire hook registration process. * Improved PacketEvents integration with API availability and readiness checks. Packet-based features are now safely disabled when PacketEvents is unavailable instead of causing zMenu to fail. * Improved plugin shutdown handling so partially initialized managers are still safely disabled and cleaned up after an initialization failure. * Added serialization coverage tests for registered actions, requirements and item components to ensure they can be serialized and loaded without losing their configuration. * Updated the minimum supported (documentation) Minecraft version to 1.20.6.

    Improvements

    - Inventory hot reload: new hot-reload section in config.yml, disabled by default. When enabled, zMenu watches the inventories/ folder and its subfolders and applies changes without any command: a modified file reloads its inventory, a new file loads it and a deleted file (or folder) unloads it. - Changes are debounced with hot-reload.delay-milliseconds (500 by default), so an editor saving a file in several steps only triggers one reload. - A file that cannot be loaded (YAML syntax error, unknown button type, invalid size...) is not applied: the previous version stays loaded and the error is logged until the file is fixed. - Players viewing a reloaded inventory see the new version open over it, on the same page and with the same previous inventories (a back button opens the new version too). An unloaded inventory is closed. - Toggling the option takes effect on /zm reload or /zm reload config, or within two seconds when changed from the in-game configuration dialog. Files listed in specify-path-menus are not watched. - If the inventories/ folder is deleted and recreated (backup restore, git checkout...), it is watched again automatically. On Windows the whole tree is watched with a single handle, so subfolders can still be renamed or deleted while the server runs. - The folder is also scanned every two seconds, so changes are detected even where the file system sends no event (Docker or WSL mounts, network shares, files uploaded over SFTP). - A file is reloaded when its content or modification date changes; saving it again without any change still reloads it, but the same version is never reloaded twice. - Every detection, reload, unload and error is logged in the console with a [HotReload] prefix (folder events and skipped files are also logged when enable-debug is on). - Fixed: unloading an inventory no longer removes its name from /zm open and /zm reload inventory tab completion when another inventory with the same file name is still loaded from another folder. - Fixed: an inventory waiting for a load requirement no longer queues a second load each time it is loaded again. - zMenu now loads on Spigot, and explains why it cannot run there: zMenu is a Paper plugin and only declared itself through paper-plugin.yml, a file Spigot does not read. Spigot therefore refused the jar outright with "does not contain plugin.yml", which reads like a corrupted download rather than a platform requirement. The jar now also ships a plugin.yml, so Spigot loads the plugin, enables it, and prints a warning in the console explaining that Paper - or a fork such as Purpur or Folia - is required, with the download link. The same warning is sent on join to players holding the new zmenu.paper.warning permission, which defaults to operators. - Nothing changes on Paper. When a jar contains both descriptors Paper reads paper-plugin.yml and never looks at plugin.yml, so the real plugin keeps loading exactly as before, bootstrapper and plugin loader included. - No zMenu feature works in this mode: no menu, no command, no API. It exists so the reason is visible instead of the plugin appearing broken.

    Fixes

    - Menus closed by cancelled hits: since the ghost GUI protection (ZM-01), a menu was closed whenever its viewer was hit or hit someone, even when the hit was cancelled by another plugin. In a WorldGuard region with PvP disabled, any player could close another player's menu just by punching them. The damage, move and teleport handlers now run at MONITOR priority and ignore cancelled events: only a hit that actually happens closes the menu, and a teleport or move cancelled by another plugin no longer does either.
    579 downloads
  2. 1.1.1.9zMenu 1.1.1.9Sep 14, 2026

    New Features

    - New `broadcast_title` action: sends a title and a subtitle to every online player at once. Until now only the per-player title action existed. The type is written broadcast_title or broadcast title, matching the naming of the existing broadcast_sound, and it accepts the same five keys as title: title, subtitle, start (fade in), duration (time on screen) and end (fade out). They are passed unchanged to the same MessageSender.sendTitle the title action uses, so timings that already work for title on your server work here too. Inventory placeholders and PlaceholderAPI are resolved once, for the player who clicked, so %player_name% refers to the clicker and not to each recipient, which is what an announcement wants. - The three timing keys default to 0 when omitted. title and subtitle have no default: leaving one out sends the literal text null, exactly like the existing title action, so always write both. - New `broadcast_message` action: sends a list of chat lines to every online player. The type is written broadcast_message or broadcast message. Keys: messages (the lines to send) and minimessage / mini-message (default true; set it to false to send each line as it is, through Bukkit's plain Player#sendMessage, instead of parsing it as MiniMessage). In every line %sender% is replaced by the name of the player who clicked and %receiver% by the name of each player receiving it. - It is not interchangeable with the existing broadcast action: broadcast resolves placeholders again for each recipient and supports a requirements list to filter who receives the message, while broadcast_message resolves them once for the clicking player and sends that same result to everyone, with only %receiver% varying. Use broadcast when the text must differ per recipient or be filtered, broadcast_message for a plain announcement about the player who clicked. - messages must be written as a YAML list. Unlike the message action, the singular message key and a single inline string are not accepted, and %player% substitution and \n line splitting are not applied. The existing broadcast action behaves the same way on all three points.

    Improvements

    - Updated [CurrenciesAPI](https://github.com/GroupeZ-dev/CurrenciesAPI) to version 1.0.15 (required by the currency withdrawal fix documented under Security). The library is shaded and relocated into fr.maxlego08.menu.hooks.currencies, so there is nothing to install or update on the server. - Menu name completion now suggests the short name: /zmenu open, /zmenu giveopenitem, /zmenu reload inventory, /zmenu dialog open and /zmenu bedrock open only ever completed the fully qualified plugin:name form, making you type more than necessary for a name only one plugin provides. A new shared NameSuggestions helper now suggests the bare file name when a single plugin provides it, and keeps the qualified form for a name several plugins provide, or as soon as the typed text contains a :. The five commands share one implementation instead of five slightly different copies of the same filter. - Clear errors for invalid item option values: an unrecognised amount-type or lore-type used to be swallowed with no message at all, so the item silently kept its default (SET and REPLACE) with nothing in the console to explain why. zMenu now logs an error naming the bad value, the exact key, the file it came from and the list of accepted values, and does the same for an unknown item-rarity. An unparsable color is reported the same way, and a LEATHER_ material with no matching armour type now logs a warning saying its color is ignored instead of being skipped silently. - A Discord action without a usable webhook now says where it is: a discord or discord_component action whose webhook is present but empty is skipped with an error naming both the configuration path and the full path of the file it was declared in, instead of the previous Impossible to load discord action, webhook does not exists: null line, which said nothing about where the faulty action was. An action with no webhook key at all is no longer dropped at load time - TypedMapAccessor.getString hands the loader the literal string null, which gets past that emptiness check - so it is the background check that now reports it, as a warning naming the file. The discord action also stops printing the stack trace of the malformed URL alongside that message. - `/zmenu dumplog` now replies from a server thread: the upload of logs/latest.log to mclo.gs still runs asynchronously, but the DUMPLOG_SUCCESS and DUMPLOG_ERROR replies are now dispatched through runNextTick instead of being sent from the upload thread (safer on Folia). The command is otherwise unchanged: it still returns immediately and the log is still uploaded off the main thread.

    Security

    - Ghost GUI / session desynchronization (ZM-01): a modified client could hide the inventory screen locally without sending a close packet, leaving the container valid on the server, and then keep clicking it from anywhere on the map, in combat or across dimensions. zMenu now invalidates such sessions: - VInventory stores the location of the player when the session is opened (captured on InventoryOpenEvent, so every open path is covered). Because an inventory is cloned per opening, the location lives and dies with the session, no external tracking is needed. - New PlayerMoveEvent and PlayerTeleportEvent handlers close the menu when the player gets further than max-move-distance from that location, or changes world. - New EntityDamageEvent handler closes the menu when the player takes or deals damage. - VInventoryManager.handleClick re-checks the distance before dispatching a click, and cancels the event if it fails, so a click that arrives between two move events is still rejected. - New configuration options: close-on-move (default true), max-move-distance (default 2.0) and close-on-damage (default true). - ListenerAdapter gained onInventoryOpen, onMove, onTeleport and onDamage hooks. - Anti-dupe bypass on items without ItemMeta (ZM-02): PDCDupeManager skipped both tagging and detection whenever ItemStack.hasItemMeta() returned false. That is the case for any item built from a material alone, with no custom name, lore or enchantment, so raw showcase items such as NETHERITE_INGOT, NETHER_STAR, TOTEM_OF_UNDYING or ENCHANTED_GOLDEN_APPLE were never marked and survived extraction as fully functional vanilla items. - protectItem no longer checks hasItemMeta(). It builds the meta through getItemMeta(), falling back to Bukkit.getItemFactory().getItemMeta(Material), and writes the persistent data tag on every non-air item. - isDupeItem no longer checks hasItemMeta() either, so protected raw materials are now correctly detected and removed by DupeListener. - Air stacks are short-circuited in isDupeItem to avoid building meta for empty slots, which are the most frequent case on the inventory click path. - NMSDupeManager (used on servers below 1.14) was already writing raw NBT and is unaffected. - Click rate limiter bypass (ZM-03): several holes let automated clients push far more clicks through a menu than the configured throttle allows. - VInventoryManager.handleClick now calls event.setCancelled(true) when a click is rejected by the cooldown. It previously only sent a message and returned, so on an inventory with disable-click: false the throttled click still performed its vanilla item move. - PacketEventClickLimiterListener no longer cl
    3829 downloads
  3. 1.1.1.8zMenu 1.1.1.8Aug 20, 2026

    New Features

    - Fallback inventories for dialogs on older clients: dialogs can now define a fallback-inventory (name, optional plugin, and optional page). When a player's client is below Minecraft 1.21.6 and cannot render dialogs, zMenu opens the configured chest inventory instead, or sends a dedicated message when no fallback is available. Client versions are detected through ViaVersion, ProtocolSupport, or Paper's handshake protocol. - Client version API: added ClientVersionManager, ClientVersionProvider, and protocol-to-Minecraft version mapping to the public API, allowing integrations to query a player's real client version and register additional providers. - Placeholder-aware `take_item` amounts: the amount field of the take_item / take-item action now accepts placeholders and is resolved for the player when the action runs. It still defaults to 1. - UUID targets in placeholder requirements: target-player can now resolve to either a player name or a UUID when evaluating a placeholder requirement for another player.

    Improvements

    - Updated zItems support: migrated the material loader to the latest zItems registry API. zItems is now loaded after zMenu to avoid Paper dependency cycles, while older incompatible zItems APIs fail gracefully instead of breaking inventory loading. - Dialog management hardening: dialog registries and active-dialog tracking are now thread-safe, the API returns the actual loaded dialog names, and dialog names are removed correctly during reloads. - Error reporting: exceptions are now routed through the zMenu logger with the plugin prefix and complete cause chain instead of being printed directly to standard error.

    Fixes

    - Fixed active dialog data not being cleared when a player disconnects, which could leak entries and restore a stale dialog after reconnecting. - Fixed plugin shutdown throwing an additional NullPointerException when startup failed before the website manager was initialized. - Fixed Minecraft version parsing accepting later numeric fragments after a non-numeric version segment.

    Internal Changes

    - Added anonymous usage metrics through FastStats, with proper startup and shutdown lifecycle handling.
    2921 downloads
  4. 1.1.1.7zMenu 1.1.1.7Aug 10, 2026

    New Features

    - Live sync for button patterns: the website can now push button patterns as well as inventories. A new pattern.sync event installs a pattern sent from the Pattern Studio, and an inventory that depends on patterns now downloads and installs all of its patterns first (sequentially, so the inventory never reloads on a half-updated set) before being reloaded. Patterns are written into patterns/ (or into another plugin's patterns/ folder when the website sends a plugin_name), with the same guarantees as inventories: SHA-256 verification, size limit, path sanitisation, BUTTON type validation, atomic write with a .bak backup and rollback on a load failure. - New requirement `item-rule`: check the item a player is holding or wearing against a zMenu rule. Configure it with rule (any rule supported by the rule engine), item-source (HAND, OFF_HAND, HELMET, CHESTPLATE, LEGGINGS, BOOTS or INVENTORY), amount (minimum quantity, counted across the whole inventory when item-source: INVENTORY) and the usual deny / success actions. - Give an item on the first join of a world: custom items can use give-first-world-join in their mechanics.itemjoin section (a single world name or a list). The item is given the first time the player enters that world - on join or on a world change - and the visited worlds are stored in database (new first_world_join table, created automatically), so the item is never given twice. - Localized dialog messages: dialog-plain-message-body now accepts a localized-messages section with one message list per locale, used when the client's language matches.

    Improvements

    - Updated [CurrenciesAPI](https://github.com/GroupeZ-dev/CurrenciesAPI) to version 1.0.14 (fixed the ExcellentEconomy enum name, old usage deprecated) - All economy and item plugins are now declared in `paper-plugin.yml` as optional dependencies (Vault, PlayerPoints, BeastTokens, CoinsEngine, EcoBits, ElementalTokens, ElementalGems, ExcellentEconomy, RedisEconomy, RoyaleEconomy, VotingPlugin, zEssentials, plus CraftEngine, Denizen, Shopkeepers, zItems, eco, Nexo, NextGens, Nova), so their classes are always visible to zMenu when they are installed - and none of them is required to start. - Commands accept a target player again in a uniform way: player arguments no longer use a raw string argument (a name with a space could break the parsing) and every command resolves its target through the same helper - selector, online player or offline player - falling back to the command sender. /zmenu players convert can now be run from the console / on another player. - /zmenu save <name> [type]: the type argument is now a real enum argument (YML / BASE64) with proper completion, and it is optional - it defaults to BASE64. - CraftEngine items are now built with the player context, so per-player CraftEngine items resolve correctly inside menus. - PacketEvents listeners are thread-safe: animation and click-limiter data now use ConcurrentHashMap, and inventory tasks are scheduled on the player's region instead of resolving a container location (safer on Folia). - More logs to debug items: eco item lookup failures are logged in debug mode, and an unknown mechanic now reports the file it comes from and the list of available mechanics.

    Fixes

    - Fixed the on-click mechanic never running: OnClickMechanicFactory was not registered in the item manager. - Fixed clearInventory: true leaving the player inventory untouched: the saved items are now actually removed after being cloned, and only the 36 storage slots are processed (armor and off-hand are left alone). - Fixed color values not being clamped in ColorUtils (and a potential NullPointerException). - Fixed the offline player cache never being uninstalled on disable. - Cooldowns now clean up their expired entries and drop empty maps instead of growing forever.
    1211 downloads
  5. 1.1.1.6zMenu 1.1.1.6Jul 15, 2026

    New Features

    - Added live sync with the website (Minecraft Inventory Builder): link your server with /zmenu login (no argument starts a secure device-authorization flow - approve the shown code on the website), open the live link with /zmenu connect, and close it with /zmenu disconnect. Once connected, clicking "Sync to Server" on the web builder reloads the inventory on your server live, with no restart. - Added permissions zmenu.connect and zmenu.disconnect. - Custom item `on-click` mechanic: custom items (defined in items/*.yml) can now run zMenu actions when their holder left/right-clicks. Configure it under mechanics.on-click with cooldown (seconds), cancel-event, click-target (air / block / both), click-types (LEFT, RIGHT, SHIFT_LEFT, SHIFT_RIGHT), click-requirements and actions. - Dynamic dialog buttons: two new dialog button types repeat a body or input element over a numeric range — dialog-dynamic-body-button (inside body:) and dialog-dynamic-input-button (inside inputs:), each with placeholder-aware start / end bounds. The %index% placeholder resolves to the current iteration, and each generated input value is available as %<button-name>_<index>% (e.g. %my_input_1%). See dialogs/dynamic-dialog-example.yml. - Dynamic Bedrock buttons: bedrock-dynamic-input-button (CUSTOM forms) and bedrock-dynamic-button (SIMPLE forms) repeat an input/button over start / end, exposing %index% and per-index response placeholders (e.g. %dynamic_input_1%, %dynamic_toggle_1%). See bedrock/dynamic-bedrock-example.yml and bedrock/dynamic-simple-bedrock-example.yml. - Pluggable dialog action types: dialog action buttons (yes/no, notice, multi-action, server-links) now accept a type: field — custom-click (default, runs zMenu actions:) or static for native client actions via static-type: (OPEN_URL, OPEN_FILE, RUN_COMMAND, SUGGEST_COMMAND, COPY_TO_CLIPBOARD). - Dialog action limits: dialog action buttons support usage-limit (maximum activations) and duration-limit — either plain seconds or a { value, type } section with a TimeUnit (SECONDS, MINUTES, ...) — plus enable-placeholders. - Placeholders inside item components: item component fields now accept %placeholder% values, resolved per viewer at build time (local placeholders + PlaceholderAPI) through a new Resolvable framework. dyed-color and other color / enum / number / string fields can now be dynamic. - New item components: tropical-fish/pattern, wolf/sound-variant, can-break, can-place-on, and a now-functional dye component (Paper 1.26.1+).

    Improvements

    - Unique permissions for every command: refactored all commands to use distinct permission nodes — no two commands share the same permission anymore. - Added zmenu.open.main.menu for /zmenu openMainMenu (was sharing zmenu.open). - Added zmenu.dialog for /zmenu dialogs, and zmenu.open.dialog.config for /zmenu dialogs config. - Split zmenu.players into 9 granular permissions: zmenu.players.add, zmenu.players.clear.all, zmenu.players.clear.player, zmenu.players.convert, zmenu.players.get, zmenu.players.keys, zmenu.players.remove, zmenu.players.remove.all, zmenu.players.subtract. - /zmenu login <token> still works as before (legacy token paste); running /zmenu login with no argument now links the server for live sync. - Live sync now sends a stable, persistent server_id (stored in live-sync.json, kept across re-links) at pairing time, so the website recognises the same server across re-pairings and never creates duplicate linked-server entries. - Synced inventories are now written into a subfolder of inventories/ mirroring the inventory's folder on the website (e.g. inventories/Shop/Weapons/menu.yml). The subfolder path is taken from the sync notification and sanitised (segments only, no ../absolute/backslash) before any file is written. - New command `/zmenu unlink` (perm zmenu.unlink): force-detach this server from the website - it revokes the link on the site, and clears the local live-sync.json credential even if the site call fails (so a down/unreachable website never leaves a stuck link). - /zmenu connect now first verifies the link is still valid with the website and refreshes the stored relay url / connection id (so a changed ZMENU_WS_URL is picked up automatically); a revoked link is detected and cleared up front. - All integrations are now optional: every integration plugin (Oraxen, ItemsAdder, PlaceholderAPI, LuckPerms, Geyser/Floodgate, MythicMobs, MMOItems, ...) is declared as a soft dependency in paper-plugin.yml — none are required for zMenu to start. - Expanded color parsing: color fields (dyed-color, map-color, firework colors/fade_colors, custom-model-data colors, potion-contents custom color, collar colors, ...) now also accept "r,g,b" and "r,g,b,a" strings (with or without spaces, values clamped 0–255) in addition to hex strings and RGB(A) lists. - Backward-compatible dialog action buttons: the new nested form (<key>.label, <key>.tooltip, <key>.width, <key>.actions, <key>.type) falls back to the old flat keys (yes-text, notice.text, multi-actions.<key>.text, ...), so existing dialog files keep working. - Bedrock text input now accepts both bedrock_text and bedrock_text_input. - Page placeholders (%page%, %maxPage%, %max-page%) now resolve everywhere inside an inventory (buttons, names, lore), not only in the title. - DeluxeMenu import (zmenuconvert) now honours DeluxeMenu's inventory_type (CHEST, HOPPER, DISPENSER, ...), rejects unsupported types with a clear message, and only enforces the multiple-of-9 size rule on CHEST inventories. - Maven Central mirror fallback: zMenu downloads its runtime libraries via Paper's library loader on startup; a mirror fallback (PAPER_DEFAULT_CENTRAL_REPOSITORY env var → org.bukkit.plugin.java.LibraryLoader.centralURL system property → Google mirror) keeps this working on older Paper builds and restricted networks. - Players can now safely type % inside dialog/chat answers (it is no longer misinterpreted as a placeholder).

    Changes

    - zMenu is now Paper-only. The Spigot plugin.yml has been removed in favour of paper-plugin.yml (Paper bootstrapper + loader); zMenu no longer runs on Spigot — Paper, a Paper fork (Purpur/Pufferfish) or Folia is required. Work has also started on Paper 26+ support. - Item component keys normalized to kebab-case (no alias kept — existing configs must be updated): custom_name → custom-name, death_protection → death-protection, intangible_projectile → intangible-projectile, map_decorations → map-decorations, note_block_sound → note-block-sound, pot_decorations → pot-decorations, provides_banner_patterns → provides-banner-patterns, provides_trim_material → provides-trim-material, tropical_fish/base_color → tropical-fish/base-color, tropical_fish/pattern_color → tropical-fish/pattern-color. - API: InventoryManager methods now return/accept ContainerInventory instead of Bukkit Inventory; plugins compiling against zmenu-api must update.

    Security

    - The live link is end-to-end safe: the WebSocket carries only {inventory_id, file_name, hash} - the YAML is pulled over the authenticated HTTPS API and its SHA-256 hash is verified before being applied. The file is written atomically with a .bak backup and rolled back on a parse/reload failure; all network I/O runs off the main thread and the reload happens on the main thread. The scoped server token is stored in live-sync.json and never printed.

    Fixes

    - Fixed /zmenu disconnect using the wrong permission node (zmenu.description → zmenu.disconnect). - Live sync now stays connected after `
    3137 downloads
  6. 1.1.1.5zMenu 1.1.1.5Jun 16, 2026

    New Features

    - Player Inventory Placeholders: Added %zmenu_player_empty_slots% to get the number of free slots in the player's inventory, and %zmenu_player_item_count_<MATERIAL>% to count the total amount of a specific item. These placeholders work even when the bottom inventory is hidden with clear-inventory: true, allowing shop menus to check if the player has enough space before purchasing. - Custom Commands: Add a new field actions-requirements for custom commands, allowing you to specify requirements that must be met for the command's actions to execute. This provides more control over argument conditions and enhances command functionality. - Anvil Inventory Support: Added a new ANVIL inventory type, with rename-requirements to validate the text entered by the player before running the rename actions. Inventory types are now resolved through a dedicated InventoryType registry (currently ANVIL and CHEST), making it easier to add new container types in the future. - Item Rules System: Added a flexible item-matching system configurable through a rule section. Built-in rule types: material, material-contains, material-prefix, material-suffix, name, lore, tag, custom-model-data, and the and / or composites to combine several rules. Plugin-specific item rules (match by item id, supporting wildcards and ignore-case) are available for CraftEngine, Denizen, Eco, ExecutableBlocks, ExecutableItems, HeadDatabase, ItemsAdder, MMOItems, Nexo, NextGens, Nova, Oraxen and SlimeFun. The item_drag button now accepts a rule section to validate which items a player is allowed to drop. - New Action `set_item` (set_item / set-item): place an item in one or several inventory slots (menu or player inventory via in-player-inventory: true), with dupe-protection enabled by default. - New Action `take_item` (take_item / take-item): remove a configurable amount of matching items from the player's inventory, with verification: SIMILAR (default) or MODELID to control how items are matched. - New Action `refresh_slot` (refresh_slot / refresh-slot): refresh only the given slots (menu or player inventory) without rebuilding the whole inventory. - Check Inventory Requirement (check-inventory permissible): verify that a given slot contains a specific item (or that the player owns it), with success and deny actions and a configurable comparison type. - Denizen Support: Added a new hook for Denizen, allowing Denizen items to be matched through the item rules system (denizen rule type).

    Bug Fixes

    - Clear Inventory Session Items: Fixed a bug where items given to the player during a menu session (e.g., via shop purchase actions) were lost when closing a menu with clear-inventory: true. Session items are now collected before restoring the original inventory and properly restored afterward. - ItemGiveAction Inventory Update: Added player.updateInventory() after giving items via the give_item action, ensuring the client inventory display updates immediately. - Inventory Desync on Item Give: Fixed ItemGiveAction not calling player.updateInventory() after adding items, causing a visual desynchronization where the player's hotbar/inventory wouldn't visually update until the next interaction. - Multi Dialogs `number-of-columns`: Fixed multi-action dialogs not supporting the number-of-columns option. - Nexo Glyphs in Items: Fixed Nexo glyphs not working inside items. Add skip-first-cache: true to the item configuration to use them. - Animation Listener: Fixed an issue with PacketAnimationListener ([#245](https://github.com/Maxlego08/zMenu/issues/245)). Internal Changes - New Minecraft version detection system MinecraftVersion over old NMSVersion enum, allowing more flexible version checks and better support for future Minecraft versions without needing to update the plugin. - New utils annotations - @SinceVersion | These annotations can be used to mark classes that should only be loaded for specific Minecraft versions, check in the VersionFilter class for more details. - @UntilVersion | These annotations can be used to mark classes that should only be loaded for specific Minecraft versions, check in the VersionFilter class for more details. - @PaperOnly | These annotations can be used to mark classes that should only be loaded if the server is a Paper version, check in the VersionFilter class for more details. - @SpigotOnly | These annotations can be used to mark classes that should only be loaded if the server is a spigot version, check in the VersionFilter class for more details. - @AutoComponentLoader (renamed from @ComponentLoader) | Allow to load dynamically all items component loader without having to register them one by one in the ZComponentManager class for "fr.maxlego08.zmenu" package, filtering by version and server type with the new annotations by the helper of VersionFilter class. - @AutoListener | Allow to load dynamically all listeners who take a MenuPlugin in their constructor or no-arg constructor without having to register them one by one in the ZListenerManager class for "fr.maxlego08.zmenu" package, filtering by version and server type with the new annotations by the helper of VersionFilter class. - @AutoActionLoader | Allow to load dynamically all action loaders without having to register them one by one, filtering by version and server type via the VersionFilter class. - @AutoMaterialLoader | Allow to load dynamically all material loaders without having to register them one by one, filtering by version and server type via the VersionFilter class. - @AutoPermissibleLoader | Allow to load dynamically all permissible (requirement) loaders without having to register them one by one, filtering by version and server type via the VersionFilter class. - @AutoRuleLoader | Allow to load dynamically all item rule loaders without having to register them one by one in the ZRuleLoaderRegistry, filtering by version and server type via the VersionFilter class. - @RequiresPlugin | Mark a class so it is only loaded when a given plugin is present. Now supports a version and a type (Comparison) to only load the class when the plugin version comparison is true, plus a checkMode (EXISTS / EXISTS_AND_ENABLED) to choose between "plugin installed" and "plugin installed and enabled". - All action, component, listener, material, permissible and rule loaders are now discovered and registered automatically at startup through ClassRegistry and the annotations above, instead of being registered one by one. - ClassRegistry now logs constructor instantiation failures, making it easier to diagnose why a loader did not register. - New dedicated NMS modules (NMS/Base, NMS/v1_20_R3, NMS/v1_20_R4, NMS/v1_21_R1) with a versioned NMSHandler abstraction. - New item packet management classes: NMSMenuPacketListener, PacketQueue and ForceChannelPromise. - New item components: AttackRange and MaxStackSize (with Spigot and Paper implementations); entity variant loaders refactored onto shared base classes (CollarColor, DyeColor, Enum, Registry variant loaders). - Standardized string casing using Locale.ROOT across all classes for consistent, locale-independent behavior. - Migrated the build to a Gradle version catalog (gradle/libs.versions.toml).
    2953 downloads
  7. 1.1.1.4zMenu 1.1.1.4May 21, 2026

    New Features

    - Bedrock Inventory Support: Added full Bedrock inventory support via Geyser/Floodgate integration. Includes Bedrock-specific actions, buttons, input builders (with placeholders support and legacy color code conversion), drag button, inventory replacement, dialog support, and Bedrock player validation. - Inventory Replacement: Implemented inventory replacement functionality, allowing inventories to be dynamically replaced across various classes. - ItemStack Build Context: Added ItemStack support to build context and updated durability handling in menu item stack. - PaperProfileComponent: Added new PaperProfileComponent for Paper-specific profile handling.

    Bug Fixes

    - Clear Inventory + BACK Button: Fixed items being restored to the player when clicking a BACK button between two inventories with clear-inventory: true and clear-inventory-type: PACKET_EVENT. Items are now physically cleared from the player inventory during storage, ensuring container content packets don't reveal hidden items. The close handler also uses physical restoration (giveInventory) instead of packet-based restoration. - Item Pickup with Clear Inventory: Fixed items being picked up by the player when clear-inventory is enabled. - Lore Metadata Duplication: Fixed "lore" metadata duplication when loading items. - Color Handling: Fixed and simplified color handling for leather armor and banner patterns in MenuItemStackLoader. - NPE Fix: Fixed null pointer exception. - Import Fix: Fixed import for ZBuildContext in ItemEditAction. - API Errors: Fixed errors and updated API version.

    Improvements

    - Requirement Configuration Validation: Added validation for click-requirement, view-requirement, and open-requirement configurations. Detects common misconfiguration where users place requirement keys directly under the requirement section instead of using named groups (for click-requirement) or a requirements list (for view/open-requirement). Displays a clear warning message with an example of the correct structure and a link to the documentation. - Inventory Lookup Optimization: Optimized inventory lookup with a map cache for better performance. - CraftEngine Compatibility: Updated compatibility with the latest version of CraftEngine. - Color Parsing: Added color parsing support.

    Changes

    - Time Placeholders: Changed time_unix_timestamp, time_next_day_unix_timestamp, and time_today_start_unix_timestamp placeholders to return values in seconds instead of milliseconds.

    Internal Changes

    - Standardized method parameter annotations to use @NonNull across action and button classes. - Standardized this keyword usage in method return statements for clarity. - Streamlined item stack creation by consolidating special item stack application. - Enhanced click handling in Button class and simplified click requirement configuration. - Updated Nexo dependency version. - Updated Gradle repositories URL for Floodgate. - Removed unused library files (FirstCore.jar, zEssentials.jar, zMenu-1.1.0.0.jar). - Removed debug messages.
    2664 downloads
  8. 1.1.1.3zMenu 1.1.1.3Apr 19, 2026

    New Features

    - Pagination Management System: Introduced PaginationManager with PaginationButton, PaginationNextButton, and PaginationPreviousButton classes, allowing a single button to handle pagination. Includes max page tracking and optimized page size handling. - Pagination Placeholders: Added pagination-related placeholders to MenuPlaceholders for enhanced inventory navigation. - Reset Pagination Action: New ResetPaginationAction and loader to reset pagination state for button paginations. - Skip Close Actions on Inventory Switch: Added skip-close-actions-on-switch configuration option to prevent close actions from firing when switching between inventories, fixing issues with back/inventory actions triggering on close. - PacketManager Interface: Introduced PacketManager API interface and refactored title name handling in packet events for cleaner architecture. - ClickAction Enum: Added ClickAction enum to streamline action handling in InventoryLoader.

    Bug Fixes

    - Fixed CustomModelDataComponent data handling (removed Optional) and added Paper-specific implementation (PaperCustomModelDataComponent) for proper Paper compatibility. - Fixed head cache issue in ZMenuItemStack. - Fixed unnecessary toLowerCase conversion on dialog names in CommandDialogOpen. - Fixed item button click handling by removing redundant null check for clickable buttons.

    Internal Changes

    - Added javadocs. - API fixes. - Removed unused class.
    2144 downloads
  9. 1.1.1.2zMenu 1.1.1.2Mar 17, 2026

    Bug Fixes

    - Fixed openWithOldInventories method crash on 1.20 by using CompatibilityUtil.getTopInventory() for safe inventory access. - Fixed trim pattern and material validation: now uses Bukkit Registry instead of the hardcoded TrimHelper, with proper error messages listing all available patterns/materials when a key is not found. - Fixed null ItemFlag entries causing errors when applying flags to item meta. - Fixed EnchantmentGlintOverrideComponent not handling false values correctly — previously only true was applied, now both true and false are respected. - Fixed click requirements defaulting to an empty click list when none are specified — now defaults to all click types. - Fixed AttributeWrapper to support an optional NamespacedKey instead of always generating a random UUID, preventing attribute duplication on item rebuild. - Fixed database connection logger initialization order in ZStorageManager. - Fixed item loading from map (loadItemStack) to use MenuItemStackLoader instead of the removed MenuItemStackFormMap class.

    Improvements

    - Command Permissions: Added dedicated permissions for CommandMenuEditor (ZMENU_EDITOR), CommandMenuVersion (ZMENU_VERSION), and CommandMenuGiveOpenItem (ZMENU_GIVE_OPEN_ITEM). - API: Added getClickRequirementKeys() method to MenuPlugin interface, allowing addons to retrieve the supported click requirement configuration keys. - Default Configs: Updated default configuration files (pro_inventory.yml, playtime_reward.yml) to use kebab-case (view-requirement, click-requirement, open-requirement) matching current conventions. - Dependencies: Added adventure-text-minimessage as a library dependency in plugin.yml.

    Internal Changes

    - Removed unused PlayerSkin class. - Removed unused MenuItemStackFormMap class and associated fromMap static method. - Cleaned up imports and formatting across multiple files.
    1867 downloads
  10. 1.1.1.1zMenu 1.1.1.1Mar 9, 2026

    New Features

    - MMOItems Support: Added material loader for MMOItems plugin integration. - Enchantments Component: Added enchantments component support for item configuration.

    Performance

    - Performance improvement for items that will use a player's nickname to be displayed (player-head optimization).

    Bug Fixes

    - Fixed enchant key parsing in configuration. - Fixed enchantments component initialization. - Fixed title parsing before sending to player in PlayerTitleAnimation. - Fixed dynamic material check in menu item stack caching logic. - Fixed %player% as a valid player argument in validators. - Fixed error handling and formatting in various loaders and actions. - Fixed basehead itemstack rendering. - Fixed French translations in message strings. - Fixed wrong format issues. - Fixed null checks for player in packet listeners. - Fixed [] display when placeholder returns an empty list. - Fixed null message handling in getLegacyMessage method.

    Internal Changes

    - Refactored placeholder package structure and usage. - Renamed SpigotDyeColorItemComponentLoader to SpigotDyedColorItemComponentLoader. - Changed item model type from String to NamespacedKey in MenuItemStack classes. - Updated @Contract annotations in BaseInventory.java for clarity. - Removed unnecessary whitespace in ComponentMeta.java. - Removed debug messages.
    124 downloads
  11. 1.1.1.0zMenu 1.1.1.0Feb 15, 2026

    New Features

    - Performance Debug System: Added per-operation performance monitoring for inventory opening. Measures execution time for each step (permission checks, button building, item rendering, etc.) and logs results to console. Configurable via enable-performance-debug, with threshold filtering and whitelist/blacklist support for operation names.

    Performance

    - ItemStack Build Optimization: Optimized ZMenuItemStack.build() to reduce redundant work on each inventory open: - Eliminated duplicate PlaceholderAPI resolution for material strings (was called twice per build) - Pre-resolve Material at load time when no placeholders are present, skipping PAPI parsing at runtime - Replaced exception-based control flow for numeric material IDs with a simple numeric check - Pre-compute NamespacedKey for tooltipStyle, itemModel, and equippedModel in setters instead of splitting/creating on every build - Cache the glowing enchantment lookup instead of querying the enchantment registry on every build - Pre-split lore lines containing \n at load time instead of splitting on every build - Added early exit in Placeholders.parse() when the string contains no % character, avoiding unnecessary iteration over all placeholder entries

    Internal Changes

    - MiniMessage Color Parsing Refactor: Consolidated color parsing methods into MiniMessageColorUtils class for better maintainability and code reuse. - Added unit tests to verify preservation of MiniMessage color tags.

    Bug Fixes

    - Fixed hex color parsing regex to correctly handle edge cases. - Fixed typo in PlayerCommandLoader constructor parameter list.
    1449 downloads
  12. 1.1.0.9zMenu 1.1.0.9Feb 3, 2026

    New Features

    - Dynamic Inventory Title Updates: Added PacketEventChangeTitleName and PacketTitleListener for changing inventory titles dynamically without reopening the inventory. Requires [PacketEvents](https://github.com/retrooper/packetevents). - ClearInvType for Inventory Management: Introduced ClearInvType enum and temporary inventory storage system for better inventory state management. - Per-Inventory Click Limiter: The click limiter now only applies to zMenu inventories and can be configured per inventory with click-limiter-enabled: true/false. It no longer interferes with non-zMenu inventories. - Enhanced ItemButton Context: ItemButton now includes inventory context for improved button logic and interactions.

    Bug Fixes

    - Fixed parsing of map structures inside arrays in YAML configuration. [#219](https://github.com/Maxlego08/zMenu/pull/219) - Fixed click limiter applying to all inventories instead of only zMenu inventories. [#219](https://github.com/Maxlego08/zMenu/pull/219) - Fixed inventory restoration on plugin disable. [#215](https://github.com/Maxlego08/zMenu/pull/215) - Fixed PacketEvents warning on plugin disable. [#215](https://github.com/Maxlego08/zMenu/pull/215) - Resolved scheduler compatibility issue with Folia. - Fixed task registration during plugin shutdown. - Enhanced variant component initialization with proper error handling and version checks.
    639 downloads
  13. 1.1.0.8Item components and inventory title animation !Jan 27, 2026

    New Features

    - New Item Component System (1.20.5+) - Complete overhaul with 30+ components (Enchantments, Lore, Trim, Tool, PotionContents, WrittenBook, AttributeModifiers, etc.). Improved error handling and case sensitivity. - Animated Inventory Titles - Requires [PacketEvents](https://github.com/retrooper/packetevents). - Local Placeholders - local-placeholders section in inventory/pattern configs, cached with Guava for better performance. - Actions Pattern System - Define default actions for all buttons in actions_patterns/ directory. - New Actions: message-to (send to specific player), open-actions and close-actions for inventories. - Console Commands - Commands can now be executed from console (console: true). - LuckPerms - Permission expiration support with time unit configuration. - MiniMessage support in toasts. - Multi-line inventory names (useful with zTextGenerator). - Resin trim material support.

    Bug Fixes

    - Fixed Avast false positive on VirusTotal. - Fixed async access block and container component issues. - Fixed PacketAnimationListener task execution when plugin is disabled. - Fixed button reference in updatedButtons iteration. - Various minor fixes.

    Internal Changes

    - Removed getCustomItemStack(Player player) method. Use getCustomItemStack(Player player, Placeholders placeholders) instead. - Renamed package zcore → common. - Moved Component classes to API module. - Added nullability annotations and new interfaces (BuildContext, MenuItemStackContext). - Improved JavaDoc documentation.
    590 downloads
  14. 1.1.0.6zMenu 1.1.0.6Dec 1, 2025
    Fixed the removal of default attributes. Improved attribute configuration, you now have more comprehensive options. More information available here. Added more configuration options for patterns. Added Brewery support to create your items. Added an option to run actions as an administrator. Added support for Oraxen fonts. Fixed the loading of certain plugins. Added a system to apply actions to items.
    521 downloads
  15. 1.1.0.5zMenu 1.1.0.5Oct 27, 2025
    - Improved and optimized internal code. These consist of micro-optimizations that will only be noticeable on servers with several hundred players. - Added an option to disable toasts. - Fixed antivirus-related flag issues. - Fixed default attributes applied to items. - Added support for MythicMobs. - Added a placeholder for global placeholders.
    2969 downloads
  16. 1.1.0.4zMenu 1.1.0.4Oct 2, 2025
    Update to Sarah 1.20. Added MARIADB support Fixed NONE database settings Improve pattern file loading
    1013 downloads
  17. 1.1.0.3zMenu 1.1.0.3Sep 18, 2025
    Added dialogs inventories /zm dialog #186 by 1robie and saildrag Added %player% placeholder for each action Added a view requirement system with the ability to define an else for another pattern Added option to disable inventory loading: enable: false Added reason for withdraw and deposit action Fixed withdraw and deposit action with zEssentials Improve update checker #183 Fix openInventoryWithOldInventories method Fixed inventory button drop on death when clear inv is active Fixed item giving on disconnect when clear inv is active Fixed textures of offline players’ heads Optimized Enum NmsVersion → no more repeated calls to getVersion (unnecessary since the version doesn’t change at startup) Fixed commands not displaying the "No permission" message during setup New command: /zm contributors New command: /zm addons New command: /zm dumplog Update to Sarah 1.19
    825 downloads
  18. 1.1.0.2zMenu 1.1.0.2Aug 8, 2025
    ![Toast](https://cdn.modrinth.com/data/cached_images/8249a0d3845f9… Added toast action Added more API methods Added equipped model, for custom armor Fixed error if button is not found Fixed luckperm action Fixed discord parsing Fixed inventory reloading issues #173 Updated source code to java 21 #166 Updated to last CurrenciesAPI version Some fixs #170
    3881 downloads
  19. 1.1.0.1zMenu 1.1.0.1Jul 7, 2025
    Added player target with inventory name #169 Added player data convert with /zm player convert, convert old JSON data to SQL Update to last CurrenciesAPI version Use EntityScheduler instead of RegionScheduler #168 Fix items attributes
    3601 downloads
  20. 1.1.0.0zMenu 1.1.0.0Jun 17, 2025
    Codebase structure overhaul: the project now uses Gradle. This major change has enabled numerous modifications and improvements to the API. The API is now cleaner, more efficient, and easier to use. You will need to update all your plugins that use zMenu at the same time to avoid compatibility issues. Upgraded to Java 21, and the minimum supported Minecraft version is now 1.19. Since very few servers using zMenu were still on older versions, we decided to drop support for legacy Minecraft versions. This simplifies the codebase and opens the door to many new enhancements. Added a config.yml file. You can now delete the old config.json file. New configuration options are also available. Integrated database support. This allows logging of opened inventories by players and enables cleaner data storage compared to JSON files. Added /zm players removeall <key> command, which removes a specific key from all players. Added support for mathematical expressions in placeholder requirements and player data actions. To enable math operations, set math: true. See cookie.yml for examples on how to use math expressions. Added %zmenu_math_<expression>% placeholder to perform math operations via a placeholder. Added %zmenu_formatted_math_<expression>% placeholder to perform math operations and return a formatted value. Introduced a validation system for command arguments. This lets you define the expected argument type to ensure correct values are used in your commands. Added tooltip-style: <style> option. Introduced a cache system for online players to improve performance by avoiding repeated lookups for offline player data. Added cancel-item-pickup: <true/false>, which prevents players from picking up items while an inventory is open. Added item-model: <model> option to customize the item’s model. Added support for potion arrows using arrow: true. Added player command as op action, which executes a command as if the player were OP. ⚠️ Be cautious: this gives the player all permissions during command execution. Added support for ExecutableItems and ExecutableBlocks. Added the SWITCH button. This displays a button based on the result of a placeholder, simplifying your configuration. See switch.yml for an example. Added refresh inventory action to reload the inventory content. Dates now include month and year in their display. Fixed issues with the book action.
    2523 downloads
  21. 1.0.4.1zMenu 1.0.4.1Apr 30, 2025
    Added action discord, Send a classic webhook discord. Added action discord component, Send a webhook discord with the new component system #132. Added requirements for broadcast action. Added a new way to load messages action. Fixed enchant loader. Fixed magiccosmetics loader. Fixed MenuItemStack when loaded by an ItemStack. Fixed MenuItemStack attributes. Change broadcast action placeholder for %receiver% and %sender% Disabling the /zm download command by default, you must enable it in the configuration if you want to use it.
    363 downloads
  22. 1.0.4.0zMenu 1.0.4.0Apr 21, 2025
    Fixed placeholders in actions Fixed commands with arguments Fixed minimessage #124 Added RoyaleEconomy support
    517 downloads
  23. 1.0.3.9zMenu 1.0.3.9Apr 11, 2025
    Added dependency management for inventory loading. If an inventory needs to be loaded but one of its dependencies is not yet loaded, it will be put on hold until all dependencies are loaded. This allows you to use any element from any other plugin in any zMenu inventory. Added teleport action. Added default value for commands. This allows having optional arguments with a default value. Added API method : InventoryManager#loadYamlConfiguration(File file), load a YAML file using the file’s placeholders global-placeholders.yml. This allows you to reduce the size of your configurations by avoiding the repetition of certain values. Added API method : ZPermissibleLoader#loadPermissible(ButtonManager buttonManager, TypedMapAccessor accessor, String key, String path, File file), Allows you to load a list of permissible. Added API method : ButtonManager#loadPermissible(YamlConfiguration configuration, String path, File file), allows you to load a list of permissible list from a configuration. Added API method : ButtonManager#loadActions(YamlConfiguration configuration, String path, File file), allows you to load a list of action list from a configuration. Added conditional-name, allows you to change the name of the inventory based on conditions. (available with zMenu+). Added MagicCosmestics material loader. Added the ability to include \n in actions. This allows you to send a list of commands in an inventory argument and more ! Added lore-type, allows you to define how the lore should interact with the itemstack. If you are using a material loader, you can specify that the lore is added at the end of the existing lore, added before the existing lore, or replaces the existing lore. Added and and or permissible. Allows you to create more complex requirements. (available with zMenu+). Fixed ConcurrentModificationException that could occur when using PlayerData #104. Fixed material's loaders. Fixed commands and messages placeholders. Fixed buttons with multiple slots that could not be on another page. You can now define a list of slots and a page for your buttons. Fixed next and back button with old inventories Rework messages.yml, you need to redo your configuration. You can use trims in 1.20. Updated miniumRequirement to minimum-requirement for requirements. Updated maxPage to max-page for inventory name. Register command permissions in Spigot. This prevents the command from appearing in the player's tab completion if they do not have permission.
    161 downloads
  24. 1.0.3.8Bug fixes and global placeholder!Feb 15, 2025
    Added Global Placeholders, which allows you to define values that will be available across all inventory configuration files. Fixed custom heads with URLs Fixed inventories that do not have a default type Added sound category Removed deprecated method onInventoryOpen(Player player, InventoryDefault inventory) Improved code, removed the slot variable to use only the list of slots for each button Fixed actions withdraw, deposit and requirement money, now allowing lowercase Added API code for use of slots in player inventory. Coming soon in zMenu+ ! Updated folia API All configuration keys are now in kebab case. Old configurations will still work but the documentation has been updated to reflect the new format. Improved pagination performance by avoiding unnecessary list management operations
    195 downloads
  25. 1.0.3.7zMenu 1.0.3.7Dec 16, 2024
    Added inventory type #97 Added placeholder priority #96 Added the possibility to include a prefix for lists when using a pattern. You need to add text in front of your placeholder Modified the money permissible to support more economies using CurrenciesAPI Modified the deposit and withdraw action to support more economies using CurrenciesAPI Added deny-message for commands. Allows to send a custom error message if the player does not have permission. Fixed the max page placeholder that says 0, it will now say 1 by default
    1884 downloads
  26. 1.0.3.6zMenu 1.0.3.6Nov 12, 2024
    Added the ability to use font ItemsAdder with format :font-name: Improve TypedMapAccessor Added API method InventoryManager#openInventoryWithOldInventories Added API method ZButton#paginate Added action set permission, allows setting a permission to a player with luckperms Added aliases command and commands for console command action. Fixed max-stack-size for itemstack with 1.21
    108 downloads
  27. 1.0.3.5zMenu 1.0.3.5Sep 27, 2024
    - Added support for DeluxeMenus configurations. You no longer need to convert your DeluxeMenu configurations to zMenu, they are now automatically compatible! - Added command /zm documentation [<word>] - Added key title for inventory name, you can use name or title now - Fixed itemstack with 1.21, components was added when it should not be added by default. - Fixed the item backup system for potions and firework (use in /zm save command and in zEssentials)
    743 downloads
  28. 1.0.3.4zMenu 1.0.3.4Sep 15, 2024
    - Add support for \n in item lore - Add refresh_requirement, allows refreshing the lore, name of the item or the button in its entirety according to several conditions. - Add permissions on default commands - Add PlaceholderAction: DIFFERENT_STRING, check that a string is different from the value - Add sub commands for commands. You can now have sub commands to perform actions, for example, create a /votes party command, a /votes info command! - Added aliases for enchantments, this allows using the word protection to obtain the PROTECTION_ENVIRONMENTAL enchantment - Deprecated method onInventoryOpen(Player, InventoryDefault) use now onInventoryOpen(Player, InventoryDefault, Placeholders) - Fixed items flags (HIDE_ATTRIBUTES) for 1.20.4 and above - Added [zItems](https://www.spigotmc.org/resources/zitems-demo.118638/) support, Example: material: "zitem:<item name>", zItems is an item that allows you to create items taking advantage of all the features of 1.21 #### Only for version 1.21 and above - Added max-stack-size: <number>, Overrides the default maximum stack size of this item. - Added max-damage: <number>, Controls the maximum amount of damage an item can take. - Added damage: <number>, The absolute amount of damage or use this item has taken. - Added repair-cost: <number>, Number of enchantment levels to add to the base level cost when repairing, combining, or renaming this item with an Anvil. - Added unbreakable: <true/false>, Tools, armor and weapons set with this won't lose durability when used. - Added unbreakable-show-in-tooltip: <true/false>, If false, an 'Unbreakable' line will not be included in the tooltip. Default is True. - Added fire-resistant: <true/false>, If true, this item will not burn in fire. - Added hide-tooltip: <true/false>, If present, it will completely hide the whole item tooltip (that includes the item name). The tooltip will still be visible and searchable in creative mode. - Added hide-additional-tooltip: <true/false>, If true, disables the 'additional' tooltip part which comes from the item type. - Added enchantment-glint: <true/false>, If true, the item will glint, even without enchantments; if false, the item will not glint, even with enchantments. If null, the override will be cleared. - Added enchantment-show-in-tooltip: <true/false>, If false, no enchantments will be shown in the item tooltip. Default is true. - Added attribute-show-in-tooltip: <true/false>, If false, the attributes will not show on the item tooltip. Default is true. - Added item-rarity: <COMMON/UNCOMMON/RARE/EPIC>, Determines the default color of its name. This enum is ordered from least rare to most rare. - Added trim: <trim configuration>, Represents an armor trim that may be applied to an item.
    438 downloads

Similar projects

Plugin →