We are aware that our community has many good ideas and suggestions, but I currently do not have sufficient time, so you will need to wait for further updates to implement your ideas.
This update has been prepared for quite some time, with many modifications that you need to pay attention to.
Removed buy and sell cooldown feature. In a simple survey, almost no users were using this feature, so we moved it to the auto reset feature in this version.
The elements of the random placeholder no longer support inputting other random placeholder IDs.
Random placeholder now will be loaded before shops to make sure the shop config get latest random placeholder data.
Updated default product configs which uses v3 new condition format in sell-limits-conditions.
Added new reset mode into auto reset feature (Premium version only):
COOLDOWN_TIMED
COOLDOWN_TIMER
CUSTOM
RANDOM_PLACEHOLDER
Added days and months support in reset-time option. (Premium version only)
Added some new language files. These language files are provided by the community and come from Discord servers, GitHub, private messages from SpigotMC, etc. Thank you very much for their support of this project!
Added Czech, German, Spanish, Brazil, Slovak language file into plugin.
Moved bedrock.icon and bedrock.hide option to display-item section, this allows you set several bedrock UI icons on different display items. Sadly because of this change, you have to reconfigure your bedrock options in ALL product and button configs.
Improved menu init codes, now it will faster than before.
Now, if the product do not has any valid sub products and prices, we will auto hide it and when player click it, plugin no longer send successfully buy or sell message.
Added support for set different buy more menus for products don't have buy price or sell price.
Added new feature: Sub Buttons for products, this feature allows you display same product in different place and even supports different display item for them!
Improved item price check codes, should has about up to 50% performance improve of this feature. MAY HAS MARJOR ISSUES, IF YOU MEET THEM, PLEASE TELL ME IN DISCORD.
Recoded hook system, now you can make addon plugin to make UltiamteShop supports more item and economy plugins!
Recoded action and condition system, it's more flexible now, and add new actions and conditions. OLD ACTIONS AND CONDITIONS CONFIG WILL ALL BREAK, YOU HAVE TO RECONFIGURE FOR NOW.
Fixed HIDE_ATTRIBUTES item flag does not work for item does not have attribute modifier in 1.20.6 and higher version.
This is a bug from Mojang and we can do nothing for this. Plugin will auto add empty attribute modifier if you add hide attributes flag to solve this problem.
Added built-in placeholder support in status and compare placeholder, this can help you display the percentage of dynamic price changed. For more info, please view plugin Wiki.
Added built-in placeholder support in status and compare placeholder, this can help you display the percentage of dynamic price changed. For more info, please view plugin Wiki.
Added action prefix! You can now set action prefix to make this action only run with specifed click type, like only left click can active this action.
Added fail-actions for menus and products! If you fail to buy/sell product or fail to meet the condition of a button, the fail action will run! You can use it play fail sound!
Now buy-actions, sell-actions and fail-actions will auto merge shop config's general value and product config's value to make actions system more easy to use. (Like put sound at shop general configs, then put command at product configs, no need to copy sound action to all product's buy and sell actions!)
Added custom click event in shop GUI, you can set action in custom click event, like setting shift left click to buy one stack of the product instead of open buy more menu. (Premium version only)
Fixed default fish shop does not generate when first start the plugin.
Fixed default main menu has wrong symbol in fish shop item lore.
Now if all display-item-conditions do not meet the condition, we will auto hide the button instead of put a stone at GUI.
Added use * symbol to replace product ID to pickup all products in specified shop in addbuytimes, addselltimes, setbuytimes, setselltimes command. (Premium version only)
Added Standard Localized Item Name Translate feature.
Due to the fact that the Minecraft server does not store client language files, the plugin cannot know the name of the item you hold displayed on your client. Therefore, in most scenarios where the item name is displayed, we directly display its English name. Now this new feature will automatically download the client language file and translate your item name.
This feature only works for premium version of MythicChanger and 1.16+ Minecraft server version.
You have to setup this feature first to enable this feature.
Because this is a big update, some features not fully test, major bugs maybe found!
Added general-configs section in shop configs, your products always have same option values? Now you can set their default value by this section, you don't need to copy and paste same content for all products!
Big change for random placeholder! Now it support use other placeholder's element and added new not-same-as option to make sure each placeholder has different value! (Premium version only)
Added VotingPlugin economy support. (not test)
Added Alternative Options feature, some options now have other format.
Added error message for built-in placeholder display.
For now after each click in GUI, we only update the click item instead of update whole GUI items, so this will improve plugin performance in some case.
Added menu.shop.click-update option, if you still like update whole GUI items, don't worry, simply enable this option and all will running like before.
Added sell.ignore-item-format-keys option, useful for people want to use fuzzy checking sell item.
Fixed ItemFormat sell method does not work in some case.
Fixed sometimes plugin display GUI error warning after use /shop reload in pre-1.21 version.
Start from this version, UltimateShop bring you a new price type: static price.
Now prices are divided into dynamic prices and static prices.
If the amount option in the price configuration only contains numbers, we will automatically classify it as a static price.
Static pricing will automatically disable some features that are only used for dynamic pricing, such as parsing PlaceholderAPI, mathematical calculations, etc., which can reduce some plugin performance consumption.
The results of static pricing will be stored in memory, rather than automatically calculated every time purchased or selled.
The concept of base price has been added to dynamic pricing.
In dynamic pricing, you will use mathematical symbols and a large number of numbers. Starting from this version, the first number in dynamic pricing will be considered as the base price.
The base price is only displayed and used in the placeholder, and it does not actually change the price of the product.
The auto add lore feature now supports parsing PlaceholderAPI.
Added {status} placeholder support in price config's amount option. (Premium version only)
This placeholder will automatically compare with base price and current price and display different results based on the size relationship between the current price and the base price.
This placeholder is very useful in dynamic pricing, as it can help players understand whether the current price has increased or decreased.
This placeholder will display empty value for static price, so it will only work for static price.
Added {compare_<num1>_<num2>} placeholder support anywhere in plugin.
This placeholder will compare the 2 numbers and display different value based on the size relationship between 2 numbers.
Added detection of protection plugins for sell stick. If the clicked container is protected, this sellling will not occur. (Premium version only)
For the convenience of plugin usage, we added 3 automatically config changer for price config.
Support automatically add discount placeholder in price amount option. Useful for people want to make discount placeholder working for all products.
Support automatically add status placeholder in price placeholder option. Useful for people want to make all dynamic price display now status (up or down).
Support automatically replace amount placeholder to other format in price placeholder option. Useful for people want to display formatted number in price (8000000 -> 8,000,000 or 80k -> 80000), require use some PlaceholderAPI expansions.
For now, /shop sellall and /shop menu command are default to access to everyone, if you don't want this, simply use LuckPerms and give default group -ultimateshop.sellall and -ultimateshop.menu permission.
Some other unimportant modifications are no longer listed here. 1.21 is not tested for now but shouldn't have any problems since we never touch NMS in plugin codes!
Added -b suffix in action. -b means when multiple products are about to be sold, adding this suffix means that only the first product will be sold and this action will be executed.
Added new sell mode: ItemFormat, instead of require item must 100% equal than selled item, if 2 item's Item Format is same, we will also consider the item can be selled. You can consider it as: fuzzy matching.
Added new command: /shop generateitemformat, will parse hold item into UltimateShop's ItemFormat, if you don't know how to write Item Format, this will very useful for you.
Fixed /shop saveitem command does not working well since 2.1.0.
Added use ~ symbol splite random placeholder element, which means pick one random number from X value to Y value. Like 5~100 means pick one random number from 5 to 100.
Now placeholder.click.enabled option is default set to false to save server performance when you are using MythicMobs and MMOItems hook item. Both plugins are spend much server resource to generate item than vanilla items.
Now if placeholder.click.enabled option is set to false, {buy-click} and {sell-click} placeholder will still display default success buy/sell message instead of empty message in previous version.
Removed double hook item check. Becuase our NBT check method has been used for months and no one said it has problems, so now we remove the second hook item check way and only use NBT check method for now. This will also improve plugin performance in some case.
Now sell all menu will apply select-more.max-amount value in config.yml, which means player no longer can sell tons of same item in one time to avoid server tps down in some case (like hook item, and you use ANY or ALL price mode).
Breaking config change: Renamed display-item.add-displayname option to display-item.add-name option.
Now plugin won't auto add item name at first of add-name option value. You have to use new placeholder {item-name} inside the option to display item name.
New display-item.add-name default value is: '&f{item-name} x{amount}'
Huge improve to the price placeholder display, now if similar price will be merged to display.
Before your product has 2 prices and it will display like: 5 coins, 2 coins, now: 7 coins.
Fixed player can drag item into gui by shift left click item which has been fixed 1.5.1 but now it was rediscovered again because 1.8.0 GUI rewrite.
Improved CLASSIC_ANY mode product will display only 1 picked price instead of print all available price.
Added replace-new-line-symbol option. If you don't want to use the new line symbol (; in the chat box after using it, you need to replace it with this option.
Improved the buy more menu. In the past, buying and sellling were done using the same button in buy more menu, and players may have accidentally purchased so many items due to incorrect left clicking (because left click is buy, right click is sell by default). Now this issue has been resolved. The buy more menu now distinguishes between purchase confirmation items and sellling confirmation items, as you can see examples on the wiki.
Technically speaking, UltimateShop now uses BigDecimal instead of the previous double type data to calculate the price of products. For decimal calculations, UltimateShop's current calculations will be more accurate.
GUI Editor now supports edit the items included in the product, and also create new items for products.
GUI Editor now supports delete the items and the display item included in the product.
Fixed MMOItems item always being parse item ID to "" in GUI Editor.
Removed /shopadmin commands. Include those commands below:
/shopadmin createshop
/shopadmin createproduct
/shopadmin setproductbuyprice
/shopadmin setproductsellprice
Those commands are now be replaced to /shop editor command.
New command: /shop editor.
Required permission: ultimateshop.editor
For now, shop editor can only change general settings in shop configs, it can not add/modify/delete product in shop, we will add those feature at next update, we just want invite everyone to help us testing shop editor with this simply change.
If we found no problems or fixed all problems about shop editor, we will start begin add more features to shop editor.
In-game GUI Editor is premium version feature.
Improved language system.
Now if plugin find your language file missing some keys, plugin will auto generate default value for it so you no need to manually update langauge file anymore.
Now message.yml can be deleted after first load, if you delete it, plugin will generate new language file after next load. (not reload)
Reworked GUI system, now it's codes are more clear.
Now /shop quickbuy and /shop quicksell command can also be used in console with need put extra <player> arg at the end of the command, like /shop quickbuy test A Player1.
This version includes breaking config, feature update, please read this changelog carefully.
Breaking change: display-item section.
Removed display-item.<buy or sell times> section support.
Removed auto use products.<first product ID> section as display item feature. You have to enable display-item.auto-set-first-product option in config.yml to use another feature which will auto pick one real product as display item if your products didn't set display-item section.
Added display item format.
Added display-item-conditions option.
Players who meet different conditions can display different items.
Added new actions:
buy
sell
sellall
Moved send-messages-after-buy option from config.yml to shop configs.
Improved placeholder condition.
Added *= check symbol, which means placeholder is not equal with specified value.
Added *!= check symbol, which means placeholder is not contains value string.
Now =,>,>=,<,<= check symbol supports decimal.
Fixed buy/sell cooldown get resetted after play rejoin server.
Added new error catcher: invalid menu. When you set invalid menu name in shop configs, plugin will auto generate a default menu for players instead of print errors in console.
Now display-item option in shop product configs is no longer required.
Since plugin will cost more server resource when try auto check whether specified software/plugin has installed in your server, we added this option to make someone who want manually set class and improve the server performance.
enabled: Whether we enable auto check spcified class file is exist in your server.
classes: If you disable the enabled option, you need put the class file name here.
Now server cache also not use async method to save data when server disable.