ShopGUI+ [1.7-1.13]

SpigotMC Plugin ShopGUI+ [1.7-1.13] 1.19.1-SNAPSHOT

You must be signed in and/or upgrade to VIP to download this resource
Tested Minecraft Versions:
1.7, 1.8, 1.9, 1.10, 1.11, 1.12

ShopGUI+ is an advanced high-quality GUI shop perfect for every server. It allows players to easily buy/sell items, enchantments, permissions and commands.

Support is given to buyers only.
You can get support via conversation only. No help in reviews/comments section.
Please get familiar with FAQ in the bottom of this page first.

Configuration tutorial by @Hagenite

Review by @Sean0402

  • Complete, premade shops with lots of items
  • The best anti-dupe protection, even better than on some popular servers
  • Allows players to sell, sell all and buy items using convenient GUI
  • Sell multiple enchantments, permissions and commands to players
  • Sell preset mob spawners to players (requires SilkSpawners/PickUpSpawners/EpicSpawners)
  • Supports various economies (Vault, exp, MySQL Tokens, PlayerPoints, TokenManager)
  • Separate log file to log shop transactions
  • Supports item-based economy (requires Gringotts and Vault)
  • Supports custom names, lores, enchantments, potions and fireworks
  • Allows you to set different prices for each player using item-based, shop-based and global price modifiers
  • Advanced amount selection GUI for buying or selling items
  • Multiple shops with per-shop permission support
  • Multiple page support in each shop GUI with buttons
  • Convenient "Go back" button to easily return to main menu
  • Customizable size of each shop GUI
  • Item placeholders to buy/sell items different from the displayed ones
  • Per-item permissions inside shops
  • 100% customizable messages, shops and items
  • Reload command to update shops without restarting the server
  • Efficient & high-quality code

Shop command aliases: /shop /shopgui /guishop​

  • /shop - open the main shop menu (
  • /shop reload - reload the configuration (shopguiplus.reload)
  • /shop [shop name] - directly open the specified shop (
  • /shop [player] [shop name] - open the specified shop (or main one if none specificed) for specified player (shopguiplus.others)
  • /sell hand [quantity] - sell the item held in your hand (shopguiplus.sell.hand)
  • /sell handall - sells all items inventory which are the same as the one being held in your hand (shopguiplus.sell.hand.all)
  • /sell all - sells all items from your inventory (shopguiplus.sell.all)
Price modifier commands
  • /shop addmodifier item <player> <shop> <item> <value> [buy|sell] ( - add item-specific price modifier
  • /shop addmodifier shop <player> <shop> <value> [buy|sell] ( - add shop-specific price modifier
  • /shop addmodifier global <player> <value> [buy|sell] ( - add global price modifier
  • /shop resetmodifier item <player> <shop> <item> [buy|sell] ( - reset player's item-specific price modifier
  • /shop resetmodifier shop <player> <shop> [buy|sell] ( - reset player's shop-specific price modifier
  • /shop resetmodifier global <player> <value> [buy|sell] ( - reset player's global price modifier
  • /shop checkmodifiers <player> ( - check player's current price modifiers
Note: Item modifiers override shop ones which override global ones.

All command permissions have been listed above. However, players need additional permissions to access each shop. You can give or revoke access to particular shops by using the shopguiplus.shops.SHOP_ID permission node where SHOP_ID is the shop id from shops.yml (for example, shopguiplus.shops.armor etc.). You can use the wildcard permission node shopguiplus.shops.* only if you are using PermissionsEx (other plugins doesn't support it). Otherwise you have to manually add permissions to access each shop.
In order to ban player from accessing particular shop just negate the corresponding permission node.

Additional permissions:
  • shopguiplus.bypassgamemode - allows to access the shop when in banned gamemode
  • shopguiplus.bypassworld - allows to access the shop when in banned world
  • shopguiplus.buymore - allows to use the "Buy more" feature (it's set given to all players by default, negate it if you don't want them to have it)
  • shopguiplus.sellmore- allows to use the "Sellmore" feature (it's set given to all players by default, negate it if you don't want them to have it)

  • Spigot 1.7.10 or newer
  • Vault 1.4.1 or newer
If you want to sell permissions you also need one of following plugins:
  • PermissionsEx: 1.22.7 or newer (recommended)
  • zPermissions: 1.3-SNAPSHOT-b7, 1.3-SNAPSHOT-b6, 1.3beta1
  • GroupManager: 2.0-Phoenix
Other permissions plugins may also work but support will be given only to these listed above.

If you want to sell preset mob spawners you also need following plugin:
  • SilkSpawners or PickUpSpawners or EpicSpawners
The plugin is incompatible with StackableItems plugin.

  1. Purchase (thanks!) and download the plugin
  2. Stop your server, put the .jar file in your server's /plugins/ directory
  3. Start the server, plugin will generate all necessary config files
  4. Fill in config.yml and shops.yml with desired settings
  5. Restart the server
  6. Done!
All configuration files are easy to edit. If any of them lacks a feature you wish to be added, please contact us.

Configuration examples (please don't copy them, the plugin will generate all necessary files):
For more detailed installation & configuration guide please refer to the Configuration tutorial.


This plugin comes with a simple API:
There are also some events available:
Other useful gists:
Please contact us via PM if you want to try it out, we will provide you the test server's IP.

1. How do you add more pages?
Adding a new page is as simple as adding a "page: x" entry where x is the page number. When there's at least 1 item on a page it will be automatically added to the gui. Slot numbers start from 0 for every page.

2. I'm getting a white /shop [reload] message or Shop with id blocks not found every time I try to access the shop
It means the plugin didn't load up correctly. Please check your server startup log for errors. It's located in the /logs/latest.log file or the server console. You can PM me the log if you need help.

3. I'm getting an "ERROR Could not pass event InventoryClickEvent to ShopGUIPlus v1.5.3" error after updating to 1.5.0 or later
Most likely you haven't updated your config.yml when updating to the latest version of the plugin. You have to either update it according to this and this update notes or delete your config.yml so the plugin will generate a new up-to-date one.

4. How do you make it so bought commands are executed by the player instead the console?
Simply add the runAsBuyer: true entry to your command item in shops.yml.

5. Why do you have to use these weird material names instead of IDs?
You can use numeric IDs as well, just make sure you enter only the ID without any data value (it has to be set in a separate entry) like that:

6. I can't find an item on the materials list, what do I do?
Some of the items have different material name than that one you know from the game and some require changing the data value (damage value) of the item. Please look for such items here.

7. My players receive stacked weapons/armor/potions, how can I fix it?
You can make multiple weapons/armor/potions unstack by adding unstack: true entry to the item.

8. I'm getting an ArrayOutOfBounds error, how can I fix it?
Make sure you don't have any button (like back, next page, previous page buttons) on a slot higher than the size of the shop inventory.

9. I'd like to change the size of one of my shops, how can I do that?
You can change the size of any of shop inventories in shops.yml. Simply add a "size: x" entry where x is the desired size (it has to be either 9, 18, 27, 36, 45 or 54). Example:
More information:

10. I'd like to display one item in the shop but actually sell another one, how can I do that?
You can set another item as a placeholder in order to sell a different item (even with a different lore or name) by adding additional a "placeholder" entry below specific item in shops.yml. Example:

11. I'd like to make the buying/selling process faster, what can I do?
You can enable quickBuySell in your config.yml. This will result in the amount selection GUI not being closed after buying an item.

12. How do you edit the amount selection GUI buttons/slots?
Please refer to

13. How do you use the per-item permissions?
It's explained here:

14. How do you disable direct access to a shop (using the GUI or /shop <name>) so it can be accessed only by having it open from the console/by another plugin?
Simply add the denyDirectAccess: true entry to the shop in shops.yml. Then the only way for players to access the shop will be to have the /shop <player name> <shop name> executed by
the console/another player/plugin.

15. How do you remove custom name/lore from the item bought by players?
You can remove it by adding stripItemMeta: true entry to the item.

16. How do you change the maximal item stack size (regardless of global settings from config.yml)?
Simply add a maxStackSize entry to desired item in shops.yml.

17. How do you sell multiple permissions?
Simply add a permissions list to the shop item and list there all permissions. You can add the force flag if you want to allow players to buy the entire set of permissions even if they already have one or more of them (they won't be able to buy if they have all of them though).

18. How do you edit the format of displayed price?
(1.3.3 version and above only) You can add following settings at the bottom of your config.yml and edit them as you wish:

19. How do you edit the receipt message sent after buying/selling an item?
(1.3.4 version and above only) You can define the custom messages at the bottom of the shop item (messageBuy, messageSell, messageSellAll). Same placeholders apply as in the default messages from lang.yml.

20. How do you limit the item stack size players are able to enchant at once?
(1.3.5 version and above only) Simply add an entry named enchantmentStackSizeLimit with the value of the limit.

21. How do you set a different name of each page of the shop?
(1.3.7 version and above only) Add an entry named namePerPage below name. You can set as many names as you wish (the format is PAGE: NAME)

22. How do you sell spawners?
It's explained here (it requires SilkSpawners/PickUpSpawners/EpicSpawners):

23. How do you disallow selling items with name/lore different from the shop item's ones?
Simply add a "compareMeta: true" setting to your shop item in shops.yml.

24. How do you change the /shop command?
You can't completely change it, you can only add aliases using the spigot's built-in commands.yml file (you can find in the root directory of your server).

25. How do you add "Owned"/"Not owned" tag to permission shop items?
Simply add %owned% placeholder to shopItemLoreFormat -> permission in config.yml. It will be replaced with an appropriate tag.

27. How do you hide only one of the "Owned"/"Not owned" tags from permission shop items?
If you want to have only one of them displayed simply set the other one to blank in lang.yml. The example below shows how to have only the "Owned" tag displayed.

27. How do you set up the plugin to use Gringotts currency?
The plugin uses the main economy on your server, make sure it's Gringotts. Note: You need Vault as well.

28. How do you set up the price modifiers?
It's explained at the wiki:

29. How do you add an alias /sellhand for /sell hand (with no space inbetween)?
You can add it in commands.yml in the root folder of your server like that:

30. How do you enable compareMeta and/or stripItemMeta globally for all items?
Add the following section to your config.yml and adjust it to your needs:

31. How do you make /sell hand sell all items of the type from the inventory instead of the single one being held in the hand?
Set sellsAllItems to true in the sellHand section in config.yml.

32. How do you allow/block access to particular shop in particular worlds?
You can add either worldsWhitelist (to whitelist allowed worlds) or worldsBlacklist (to blacklist blocked worlds) entry to the shop in shops.yml.
Example #1 (this will allow access in world_nether only):
Example #2 (this will allow access in any world except world_nether):

33. How do you fill shop and/or main menu with certain item, eg. a glass pane?
Main menu - set the item in shopMenuFillItem section in config.yml, example:
Shop menu - set the item in fillItem in each shops section in shops.yml, example:

34. How do you require players to have certain permissions before they are able to purchase the item?
You can add requiredPermissions list to an item in shops.yml.
First release
Last update
0.00 star(s) 0 ratings

Share this resource

Latest updates

  1. 1.19.1-SNAPSHOT

    The jars for 1.13 and 1.7-1.12 were separated. If you experienced any errors on 1.12 and earlier...
  2. 1.19.1-SNAPSHOT

    Fixed spawn eggs not working on 1.13 More updates coming soon!
  3. 1.19.0-SNAPSHOT

    Yay! 1.13 update! Made the plugin compatible with 1.13 (keeping all the backwards...