ExcellentShop v5.0.0 Beta

In 
Published 06/04/2026

ExcellentShop v5.0.0 is a massive update where I completely reworked some of the core mechanics, like the Buy Menu and Sell Menu. They now feature a much more dynamic and user-friendly interface, making it perfectly clear exactly how many items are available to buy, and what you can sell to the shop(s) and for how much.

I have also overhauled the item click actions - you can now bind different keys and actions based on the item's "status". For example, if an item cannot be bought, you can set it to only show sell actions (and vice versa) so your players do not get confused. Plus, I added number key support (0-9) so you can quickly buy or sell a specific amount of an item!

Alongside the click actions, I brought similar changes to the item display info in the shop menus. Now, depending on the item's status, the plugin will use one of four "master-lores". This makes it super easy to filter out irrelevant details (like hiding the buy price if an item is strictly sell-only). For the more complex setups, I introduced dynamic conditions like <if_[condition]>Some Text</if_[condition]> and new placeholders {some_placeholder}.

Last but not least, I did a mini-rework of Global Stocks and Individual Limits. The global stock is now unified for both buying and selling, and the auto-restock amount can now be randomized. Even better, both of these features now have their own dedicated on/off toggles!

Oh, and the transaction processing system was completely rewritten from the ground up - it is now a truly unified, reliable, and high-performance system.


Product Cart

Product Cart is not a thing anymore. It has been replaced by two new GUIs:

  • Buying Menu - Works basically the same way as Product Cart used to, with some QoL additions.
  • Selling Menu - Works basically the same as Sell GUI used to, with some QoL additons.

Selling Menu

I feel like there is actually no need in amount selection when you simply want to sell your items. So, now when clicking items to sell them, it will open the Selling Menu, where you can put any item, that belongs to clicked item's shop, to sell it.

What's new:

  • Selling Menu will display client-side lore on player's items in inventory displaying their worth or amount requirements.
  • Selling Menu bounds to a shop, product or globally. This "scope" defines what items can be sold at once. When bound to a product, only items that match the product are available to sell. When bound to a shop, all items that match any shop product(s) are available to sell. When bound globally, all items that match any product in any shop are available to sell. Unsellable items will render as barriers (configurable) in player's inventory.
  • Amount of items to sell must match product's unit size. If product is 8 x Apple, you put only 8/16/24/64/128/etc. apples for sell.
  • Selling Menu now will try to sell as much items as possible and return back items that were not sold. This means that you no longer need to calculate exact amount of items to sell them, like it was in Cart GUI.
  • If item match multiple products, Selling Menu will suggest the most valueable one.

Buying Menu

When buying items, you still select desired amount using the + and - buttons, so nothing new here.

What's new:

  • Buying Menu will display barriers on item slots that you can't "reach" using amount buttons due to lack of funds, stock limits, etc.
  • Buying Menu got some extra logic for the + and - buttons: now they works by % of item's max. stack size: 1/1, 1/2, 1/4 and just 1. The 1/2 and 1/4 buttons will not diplsay for item's with max. stack size less than 8.

Product Click Key Mappings

Currently, you can map certain GUI click types to a certain shop (item) actions, such as Buy, Sell, Open Amount GUI, etc. This update expandes the current system:

  • Mapping settings can be different for VirtualShop and ChestShop now. They're now located in the settings.yml of each module.
  • Mapping settings can be different based on item's buyability/sellability status.
  • When mapping NUMBER_KEY click type to the BUY_ONE or SELL_ONE action, the number key a player pressed is now taken into account. Which means you can quickly buy/sell 1-9 units of a product by pressing that number on your keyboard!

As possible alternative (and solution for Bedrock players) to the key mappings, a new Dialog Screen was added. It contains all the buttons with all possible buy/sell actions. You can also map this dialog screen to any click type by specifying its action name - PURCHASE_DIALOG.


Product Display Format

This update introduces a new, dynamic placeholder system for product lore format in shop GUIs. There are new "inner" placeholders and conditions added that allows you to show/hide certain product info based on its state and conditions.


Product Stock & Limits

VirtualShop Only

In this update I also reworked how the Global Stock feature work. Previously, it makes no sense to have both buy and sell stock values. Now, there is a single stock value, that controls how much of the product is available for buying. What about sales? A new capacity option has been added. It controls the max. possible product amount. When selling items, the stock value is increased, however, when stock >= capacity, no more sales will be allowed.

I added two new options there: min restock amount and max restock amount. With these settings you can create randomized "initial" stock value every time it resets!

The Player Limits feature works exactly as it used to.

Also, an explicit enabled setting for both features has been added. Now you can easily turn them on/off without resetting all your configured values.


Here is the corrected version of your documentation. I have polished the grammar, fixed typos (like "additons" and "valueable"), and ensured all Retype components and character constraints are strictly followed.


Product Cart

The Product Cart feature has been retired. It has been replaced by two new GUIs:

  • Buying Menu - Functions similarly to the previous Product Cart but includes several Quality of Life (QoL) improvements.
  • Selling Menu - Functions similarly to the previous Sell GUI with added QoL features.

Selling Menu

There is no longer a need for manual amount selection when simply selling items. Now, clicking an item to sell it will open the Selling Menu. From there, you can add any item belonging to that shop to the menu to sell it.

What is new:

  • The Selling Menu displays client-side lore on items in the player's inventory, showing their worth or specific amount requirements.
  • The Selling Menu can be bound to a shop, a specific product, or globally. This "scope" defines which items can be sold at once:
    • Product Scope: Only items matching that specific product can be sold.
    • Shop Scope: All items matching any product within that shop can be sold.
    • Global Scope: All items matching any product in any shop can be sold.
  • Unsellable items will appear as barriers (configurable) in the player's inventory.
  • The quantity of items sold must match the product's unit size. For example, if a product is defined as 8 x Apple, you must sell in increments of 8 (8, 16, 24, 64, 128, etc.).
  • The Selling Menu will now automatically attempt to sell as many items as possible and return any unsold items to your inventory. You no longer need to calculate exact amounts manually.
  • If an item matches multiple products, the Selling Menu will automatically suggest the most valuable one.

Buying Menu

When buying items, you still select the desired amount using the + and - buttons.

What is new:

  • The Buying Menu displays barriers on item slots that you cannot reach using the amount buttons due to insufficient funds, stock limits, or other constraints.
  • The + and - buttons now feature extra logic based on the item's maximum stack size. Increments are handled by percentages: 1/1, 1/2, 1/4, and 1. The 1/2 and 1/4 buttons will not display for items with a maximum stack size of less than 8.

Product Click Key Mappings

You can map specific GUI click types to shop actions such as Buy, Sell, or Open Amount GUI. This update expands the current system:

  • Mapping settings can now differ between VirtualShop and ChestShop. These are located in the settings.yml file of each respective module.
  • Mapping settings can now vary based on the item's buyable or sellable status.
  • When mapping the NUMBER_KEY click type to the BUY_ONE or SELL_ONE action, the specific number key pressed by the player is now detected. This allows players to quickly buy or sell 1-9 units of a product by pressing the corresponding number on their keyboard.

As a possible alternative (and a solution for Bedrock players), a new Dialog Screen has been added. It contains buttons for all possible buy and sell actions. You can map this dialog screen to any click type by specifying the action name PURCHASE_DIALOG.


Product Display Format

This update introduces a dynamic placeholder system for product lore formatting in shop GUIs. New "inner" placeholders and conditions have been added, allowing you to show or hide specific product information based on its current state.


Product Stock & Limits

VirtualShop Only

The Global Stock feature has been completely reworked. Previously, having separate buy and sell stock values was often redundant. Now, there is a single stock value that controls how much of a product is available for purchase.

For sales, a new capacity option has been added. This controls the maximum possible product amount the shop can hold. When items are sold to the shop, the stock value increases; however, if stock >= capacity, no further sales will be allowed.

Two new options have also been added: min restock amount and max restock amount. These allow you to create a randomized initial stock value every time the stock resets.

The Player Limits feature continues to function as it did previously. Additionally, an explicit enabled setting has been added for both features, allowing you to toggle them on or off without losing your configured values.

Other Changes

  1. Added Buy All feature for Virtual and Chest shop modules. Permission, like Sell All has, is included.
  2. ChestShop Added config option to limit max. price value players can set for buying and selling.
  3. ChestShop Added Scale option for shop holograms.
  1. VirtualShop Float prices won't refresh randomly unless a refresh time/interval is set or a shop rotation is performed.
  2. VirtualShop Editor for "normal" (non-rotating) shop products now uses the same GUI (layout) as shop does when you open it.
  1. Fixed a bug, where full inventory check not worked for products with stack size > 1.
  2. ChestShop Fixed a bug, where Rent's default currency was always vault even if it was disabled.
  3. ChestShop Fixed a bug, where sell/buy price can't be disabled for certain currencies from CoinsEngine.
  4. ChestShop Fixed (hopefully) some issues with PlotSquared integration.
  5. VirtualShop Fixed a bug, where shop rotations can generate duplicated items.