-
Improve the firework system to put more buttonOption. Being able to put several effects, power etc.
-
Add a system that allows you to cache an ItemStack, so instead of returning the ItemStack at each opening, there can be several minutes without having to recreate a new ItemStack. For decorations, buttons without placeholders for example.
-
Add an order to display the list of official addons.
-
Add a
/zm command <command> <inventory>command to create an order file for an inventory. -
Add a system to translate plugin messages.
-
Update developer doc
-
Add a chance system for actions
-
Add has experience / level for requirement
-
Add is near for requirement
-
Add delay support for zMenuConvert
-
Add boolean for enable or disable inventory to load
-
Add nbt support
-
Upgrade potion support for multiple effect, main effect and color
-
Remove config.json and setup a config.yml
-
Create an extension for vscode, notepadd++ to configure the plugin faster
-
Upgrade
/zmenu save <name>to add support for heads, fireworks and banner etc -
When loading inventories, check the name, or the color of the item or the name of the inventory will contain a placeholders, so do not call placeholder API if it is not useful. The same can be done on messages, commands or any other action that uses placeholder API
-
Add the Pagination button, it will allow to take an input number, an output number and browse the value number
-
Add a way to display the list of online players in a button list
-
Add Citizen and ZNPCsPlus support to open an inventory by clicking on an NPC
-
Fix the bug about the
clearInventory: true. It does not restore inventory when the menu is closed. -
Add the support for the
http://textures.minecraft.net/texture/e34969c2684e4f62d5f87875460441a9f849d296c01e4c621636bb6acda696f7in the URL of a custom head. -
Add matrix support for slot (like this: https://abstractmenus.github.io/docs/general/item_format.html#way-4-matrix)
-
Adding more logs on the errors that can occur with custom items like ItemAdder, this will cause an error but the user will not have the information of why, for example when the item does not exist.
-
Create a new class for loading buttons to add more elements, like a boolean to check if the button needs an itemstack
-
Can split a file into several and thus avoid having too large files
-
Add slot type for create pattern (Allows to fill slot areas as do the outline of the inventory)
-
Ajouter un systéme qui permet de load un inventaire uniquement quand tout les requirements sont pr�sents
- MMOItems Support: Added material loader for MMOItems plugin integration.
- Enchantments Component: Added enchantments component support for item configuration.
- Performance improvement for items that will use a player's nickname to be displayed (player-head optimization).
- 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
getLegacyMessagemethod.
- Refactored placeholder package structure and usage.
- Renamed
SpigotDyeColorItemComponentLoadertoSpigotDyedColorItemComponentLoader. - Changed item model type from
StringtoNamespacedKeyin MenuItemStack classes. - Updated
@Contractannotations inBaseInventory.javafor clarity. - Removed unnecessary whitespace in
ComponentMeta.java. - Removed debug messages.
- 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.
- 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
Materialat 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
NamespacedKeyfortooltipStyle,itemModel, andequippedModelin 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
\nat 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
- MiniMessage Color Parsing Refactor: Consolidated color parsing methods into
MiniMessageColorUtilsclass for better maintainability and code reuse. - Added unit tests to verify preservation of MiniMessage color tags.
- Fixed hex color parsing regex to correctly handle edge cases.
- Fixed typo in
PlayerCommandLoaderconstructor parameter list.
- Dynamic Inventory Title Updates: Added
PacketEventChangeTitleNameandPacketTitleListenerfor changing inventory titles dynamically without reopening the inventory. Requires PacketEvents. - ClearInvType for Inventory Management: Introduced
ClearInvTypeenum 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:
ItemButtonnow includes inventory context for improved button logic and interactions.
- Fixed parsing of map structures inside arrays in YAML configuration. #219
- Fixed click limiter applying to all inventories instead of only zMenu inventories. #219
- Fixed inventory restoration on plugin disable. #215
- Fixed PacketEvents warning on plugin disable. #215
- Resolved scheduler compatibility issue with Folia.
- Fixed task registration during plugin shutdown.
- Enhanced variant component initialization with proper error handling and version checks.
- 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.
- Local Placeholders -
local-placeholderssection 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-actionsandclose-actionsfor 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.
- 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.
- Removed
getCustomItemStack(Player player)method. UsegetCustomItemStack(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.
- Fixed NMS compatibility for 1.21.10.
- Fixed issues with DeluxeMenus inventory loading.
- Fixed MiniMessage regex handling.
- Added the
ZMenuItemsLoadevent, triggered when zMenu custom items are loaded or reloaded. - Improved the logging system.
- Improved item mechanics.
- Added
deny-chance-actionssupport for actions. - Various minor fixes and general code improvements.
- Added new placeholders:
%zmenu_time_unix_timestamp%,
%zmenu_time_next_day_unix_timestamp%,
%zmenu_time_today_start_unix_timestamp%
- 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.
- 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.
- Update to Sarah 1.20. Added MARIADB support
- Fixed NONE database settings
- Improve pattern file loading
- 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
reasonfor withdraw and deposit action - Fixed withdraw and deposit action with zEssentials
- Improve update checker #183
- Fix
openInventoryWithOldInventoriesmethod - 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
- 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
- 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
- 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.ymlfile. You can now delete the oldconfig.jsonfile. 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 dataactions. To enable math operations, setmath: true. Seecookie.ymlfor 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 opaction, 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.ymlfor an example. - Added
refresh inventoryaction to reload the inventory content. - Dates now include month and year in their display.
- Fixed issues with the
bookaction.
- 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 downloadcommand by default, you must enable it in the configuration if you want to use it.
- Fixed placeholders in actions
- Fixed commands with arguments
- Fixed minimessage #124
- Added RoyaleEconomy support
- 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 placeholdersglobal-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
\nin 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
andandorpermissible. Allows you to create more complex requirements. (available with zMenu+). - Fixed placeholders for messages and commands.
- 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
miniumRequirementtominimum-requirementfor requirements. - Updated
maxPagetomax-pagefor 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.
- 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, InventoryEngine inventory) - Improved code, removed the
slotvariable to use only the list ofslotsfor 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
- 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
moneypermissible to support more economies using CurrenciesAPI - Modified the
depositandwithdrawaction to support more economies using CurrenciesAPI - Added
deny-messagefor 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
- 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
commandandcommandsfor console command action. - Fixed max-stack-size for itemstack with 1.21
- 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
titlefor inventory name, you can usenameortitlenow - 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 savecommand and inzEssentials)
- Add support for
\nin 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 partycommand, a/votes infocommand ! - Added aliases for enchantments, this allows using the word
protectionto obtain thePROTECTION_ENVIRONMENTALenchantment - Deprecated method
onInventoryOpen(Player, InventoryDefault)use nowonInventoryOpen(Player, InventoryDefault, Placeholders) - Fixed items flags (HIDE_ATTRIBUTES) for 1.20.4 and above
- Added zItems 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
- 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/fasle>, Tools, armor and weapons set with this won't lose durability when used. - Added
unbreakable-show-in-tooltip: <true/fasle>, If false, an 'Unbreakable' line will not be included in the tooltip. Default is True. - Added
fire-resistant: <true/fasle>, If true, this item will not burn in fire. - Added
hide-tooltip: <true/fasle>, If present, it will completely hide whole item tooltip (that includes item name). The tooltip will be still visible and searchable in creative mode. - Added
hide-additional-tooltip: <true/fasle>, If true, disables 'additional' tooltip part which comes from the item type. - Added
enchantment-glint: <true/fasle>, 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/fasle>, If false, no enchantments will be shown in the item tooltip. Default is true. - Added
attribute-show-in-tooltip: <true/fasle>, 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.
- Fix nullable player in MenuItemStack
- Add
performMainActionfor commands, allows to activate or not the main actions of the command. This allows you to create commands with arguments without opening an inventory for example. #89 - Add the possibility to have several languages for the lore and name of items and inventory name. Depending on the player�s game language you can set other messages and make your server international
- Remove
ecofrom plugin.yml, this caused problems loading various plugins - Tab completes for more of the sub commands #75
- Create action
actionbar, allows to send a message in the action bar of the player - Add placeholder
%zmenu_player_is_expired_<key>%Check if a key has expired, if the key does not exist it will be considered expired - Add
updateMasterButton, allows to update the button entirely during the update. You haveupdateenabled - Add requirement permissible
money, allows you to check if the player has enough money by using the Vault API - Add action
withdrawanddeposit, allows to withdraw and add money to the player�s account using the Vault API - Fix folia (omg folia wtf)
- Fix refresh action
- Fix placeholder API cache, its disable by default
- Add support for 1.20.6 (There has been a big change on how to encode and decode itemstacks in base64, the old values will no longer work)
- Fix folia commands and data manager #63
- Fix actions for command with delay
- Fix MenuItemStack with AIR material
- Fix color with messages in button
- Fixed saving enchantments with /zm save
- Change Item Permission to check in all inventory instead of just the player's hand
- Create new Button for zMenu+
INPUT, allows you to choose a number or a text in the chat and perform actions - You can choose the pattern plugin for the button with
pluginName - Fix MenuItemStackLoader for save model id
- Create new placeholder
%zmenu_player_next_page%, return player next page - Create new placeholder
%zmenu_player_previous_page%, return player previous page - Create new requirement:
playername, Check if a text is a player nickname - Fixed the display of a button with a playerHead if the text is not a
playerHead. This avoids server lag when opening inventory. - Fixed Numbers saved in PlayerData are not Numbers after a restart. #59
- Added Placeholder in head url #58
- Added Action - Data placeholder #56
- Expand player data commands with add & subtract #46
- New features for Commands (Perform action and Auto-completion) #26
- You can now open a book
- Create
/zm download <link>command. You can download configuration files from links, discord links for example.
- Added support for zHead. A free and open source head database plugin (with more than 72.000 heads)
- Create new placeholder
%zmenu_player_page%, return player page - Create new placeholder
%zmenu_player_max_page%, return player max page - Change NEXT and PREVIOUS button. If you click right you will go directly to the first or last page.
- Improve MiniMessage format with italic text
- Create new file:
default_values.yml, it will contain all the default values for the placeholders of the player data. - Create pattern for Button. You can create a pattern file for a button with placeholders. And in your inventory, just call the pattern with a placeholder list. The placeholders will be replaced by your values and the button will be loaded with the new values. Thus, you can have dozens of similar buttons while reducing your configurations by several hundred lines. More information here.
- Creation of 5 configurations for zMenu:
- PLAYTIME LEVELS - zMenu Configurations: https://minecraft-inventory-builder.com/resources/9
- VOTE MENU - zMenu Configurations: https://minecraft-inventory-builder.com/resources/8
- DONUTSMP HOME - zMenu Configurations: https://minecraft-inventory-builder.com/resources/7
- zAuctionHouse - Hypixel AuctionHouse: https://minecraft-inventory-builder.com/resources/6
- zAuctionHouse - DonutSMP AuctionHouse: https://minecraft-inventory-builder.com/resources/5
- Add /zm inventories - Allows access to the inventories of the online inventory editor
- Add PlayerInteractEvent in DupeListener
- Fix classic meta with PAPI color
- Fix NPE with ButtonOption
- Start of development of the zMenu+ paid addon. This addon will be available with the purchase of Premium upgrade.
- Huge API Change. This change introduces zMenu+
- Create ButtonOption, allows any developer to add options that will be available for all types of buttons.
- Create PaginateButton interface. This interface allows you to create buttons that need pagination. This interface will manage the number of pages in the inventory.
- Add matrix support for button slots #39
- Add /zm editor, at the moment this command redirects to the online editor
- Add target placeholder #48
- Fix reload command with pattern. The pattern were reload after the inventories
- Fix error with InventoryPlayer
- Fix NmsVersion with 1.8 and 1.9
- Fix anti-dupe for old version
- Fix MenuItemStack loader with placeholder check
- Fix CONTAINS_STRING action for placeholder
- Fix NMS with 1.20.4
- Fix method
getRealSlotwith isPermanent
- Add BlockPlaceEvent for Anti Dupe
- Add placeholder %zmenu_test% for testing
- Add
jobrequirement. Check if the player has a job with JobsReborn plugins - Added a cache on placeholders. By default, the cache is 500ms. That corresponds to opening a menu. So if you have several times the same placeholder used, it will only be called once.
- Fix sound action, pitch and volume was reversed
- Fix commands async
- Add new lore as string support
- Fix itemstack amount of 0
- Support file with space
- Improved API, added many new methods to make API more permissive.
- Patterns can now be on multiple pages
- Add custom sound to SoundOption
- Added ability to add arguments and select page for INVENTORY button #45
- Change update interval to milliseconds #37
- Added replacement of , by . for placeholders requirements. If your placeholder returns a number with a comma instead of a period, the plugin can handle that.
- Added base64 MaterialLoader. Allows to load ItemStack with all the data it can contain.
- Added cooldown on button click. The default cooldown will be 350ms.
- Fix Folia with VersionChecker #35
- Fix error with mini message format in 1.16
- Fix JUMP Button
- Change
/zm save <item name> <base64/yml>, saves an element in YML or base64 format. The base64 format will save the itemStack with all its data. - Change
pagefrom JUMP Button totoPage
- Fixed the pattern display, they will now appear first and let the more important buttons pass over
- Fixed MenuItemStack build method, add boolean for use cache or not
- Fixed PAPI use if player is null
- Create new button type: JUMP #34
- Added open menu with item interaction #29 by EnzoShoes
- Added
/zm giveopenitem <inventory> [<player>]
- Added the ability to perform actions when clicking. For simple actions you no longer need to use a click_requirements.
- Added ShopKeeper support for action. #27
- Added deny and success action for each requirement. In addition to its global actions, you can add them for each requirement. Perfect to set the error message for the player.
- When creating ItemStacks, the plugin will no longer use PlaceholderAPI if the item contains no placeholders.
- Added cache system for ItemStack. If ItemStack does not use placeholder API, then it will be created once and cached. All inventories will therefore use the same ItemStack. This allows to improve performance (from a few thousand nano seconds per item, so if you have a lot of items in your inventory the gain can be very important).
- Fixed command /zm open. The opening arguments were only taken into account if the command had more than 5 arguments instead of starting from 5.
- Fixed command /zm reload with commands.
- Added ANY and ALL support for click requirements #24
- Added a check when displaying the item to prevent that if the slot is outside the slots this triggers an error but just a message in the console
- Fix error with 1.20.4
- Fix error with Meta
- Fix error with slot page and else button
- Fix checkPermission with view requirement who made it check placeholders and permissions impossible
- Added back type for action requirements
- Improved ItemStackLoader. This class is used for converting inventories from GuiPlus.
- Fixed loaded messages
- Add command
/zmenu save <name>. Allows to save the item in your hand in format for plugin configuration. - Add material loader for eco #19
- Set
enableAntiDupeDiscordNotificationto false by default - Fix ItemStackCompound
- Fix PDC dupe, replace BOOLEAN by INT
- Added number of inventory loaded with command /zm reload
- Added anti dupe system with NMS Tag
- Fix model id value in config, you can now you modelId, customModelId or customModelData
- Fix player head for 1.20+ (https://blog.jeff-media.com/creating-custom-heads-in-spigot-1-18-1/) #16
- Fix docs for potion
- Added information about potion in 1.8 - 1.12. You have to do this:
material: POTION
durability: 16454- Start of the translation of the plugin documentation in French. If you want to translate zMenu documentation into your language, please contact me.
- You can use multiple placeholders now, do like this:
placeholders:
- placeholder: <your placeholder>
value: <your value>
action: <your action>
- placeholder: <your placeholder>
value: <your value>
action: <your action>Be careful, you must put an s to placeholder, otherwise it will not work.
- You can use now the text
placeholderinstanceofplaceHolder - Start new way to configure the plugin, you have now
requirementandactions: A requirement consists of a permission list to check (placeholder, permission, regex and item), an action list on success and an action list on deny. You have 11 actions available:
- broadcast
- broadcast_sound
- close
- connect
- console_command
- data
- inventory
- message
- chat
- player_command
- sound
Example for view_requirement:
view_requirement:
deny:
- type: chat
messages:
- "msg Maxlego08 test"
success:
- type: sound
sound: ENTITY_PLAYER_LEVELUP
requirements:
- type: permission
permission: "admin.use"
- type: permission
permission: "use.pro.config"
- type: placeholder
placeholder: "%player_gamemode%"
value: "CREATIVE"
action: equals_string
- type: placeholder
placeholder: "%player_is_flying%"
value: "yes"
action: equals_stringExample for open_requirement:
open_requirement:
requirements:
- type: regex
input: "%player_item_in_hand%"
regex: "(NETHERITE_|DIAMOND_|IRON_|GOLDEN_|STONE_|WOODEN_|LEATHER_|BOW|CROSSBOW|FISHING_ROD|SHEARS|SHIELD|TRIDENT|TURTLE_HELMET|ELYTRA|FLINT_AND_STEEL)"
deny:
- type: message
messages:
- "&cYou doesn't have an item in your hand."Example for click_requirement:
click_requirement:
left_click:
clicks:
- LEFT
- SHIFT_LEFT
requirements:
- type: placeholder
placeholder: "%player_gamemode%"
value: "CREATIVE"
action: equals_string
deny:
- type: inventory
inventory: "example"
plugin: "zMenu"
success:
- type: message
messages:
- "well <red>done <green>you did it"More information on the plugin documentation: https://docs.zmenu.dev/
- Add alias for placeholder action:
- BOOLEAN:
b= - EQUALS_STRING:
s= - EQUALSIGNORECASE_STRING:
s== - CONTAINS_STRING:
sc - EQUAL_TO:
== - SUPERIOR:
> - SUPERIOR_OR_EQUAL:
>= - LOWER:
< - LOWER_OR_EQUAL: <
=
- Enable version checker
- Improve javadocs
- Remove example.yml, example2.yml and example3.yml in inventories folder
- Remove example.yml in commands folder
- Rename pattern1.yml to pattern_example.yml
- Edit commands.yml file with new default config
- Add pro_inventory.yml in inventory folder
- Fix component for inventory name
- Add cache system for ComponentMeta (optimizes code and makes it more efficient)
- Fix button load if type doesn't exist
- Add
onBackClickin Button, is called when a player will click aBACKbutton just before performing his action. - Add method
setMaxPagein InventoryDefault class - Add event cancel before use the button. It is now possible to activate the click of items in the inventory from the api
- Inventory can load with error in button
- Fix commands register and unregister. The commands are now saved in the plugin that will load the command.
- Fix Firework meta for firework rocket
- Improve documentation: #15
- Added
DefaultButtonValueinButton, Change the default values of the buttons if they are not present in the configuration. To avoid, for example, having to redefine the slot for elses buttons or not having to set isPermanent: true for NEXT or PREVIOUS type buttons - Added
advanced_inventory.ymlin default config file - Fix
/zm reloadwith patterns - Previous and Next button are now permanent button by default
- Else button doesnt need to set slot and page
- Fix error with 1.20.2 (PlayerSkin#getFromPlayer)
- Add
/zm listcommand - Add
/zm create <file name> <inventory size> <inventory name>command - Add action, closeInventory
- Add new default inventory, basic_inventory. An inventory with lots of explanation for beginners.
- Fix
ComponentMetawith old color tag - Disable double click action
- Add
playerCommandsas an aliases forcommands - Add
FastEventinterface, allows you to listen to plugin events without going through the Bukkit API, performance gain - Add
InventoryLoadEventevent, Event called when an inventory is loaded - Add
ButtonLoadEventevent, Event called when a button is loaded - Add
PlayerOpenInventoryEventevent, Event called when a player opens an inventory - Removed the requirement to have another button for the NEXT and PREVIOUS button
- Removed registerButtonListener
- Fix /zm open argument, you can now set argument like
that:
/zm open zmenu:example_punish Maxlego08 false target:Maxlego09 reason:"this is a really long reason" - Fix Leather color material case
- Fix GameProfile with null name
- Change ButtonLoadEvent to ButtonLoaderRegisterEvent
- Allow inventories without items
- Add %player% with papi utils
- Add getter for MetaUpdater in InventoryManager
- Add method getCurrentPlayerInventory in InventoryManager
- Add method buildDisplayName in Button
- Add method buildLore in Button
- Add updateOnClick buttonOption, update button if player click on another button
- Add button listener method in InventoryManager
- Add check for new messages value saving
- Fix placeholder verification
- Fix patterns interactions
- Fix itemstack amount with custom material
- Fix item lore with lore is empty
- Fix message translation for hex color
- Fix Component meta regex
- Add %player% variable for messages on button
- Add PlaceholderAPI support for custom model data (modelID)
- Add argument for command /zm open
- Change super.onClick on each buttons
- Add inventory name for commands arguments (#12)