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 (shopguiplus.shop)
- /shop reload – reload the configuration (shopguiplus.reload)
- /shop [shop name] – directly open the specified shop (shopguiplus.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] (shopguiplus.shop.addmodifier) – add item-specific price modifier
- /shop addmodifier shop <player> <shop> <value> [buy|sell] (shopguiplus.shop.addmodifier) – add shop-specific price modifier
- /shop addmodifier global <player> <value> [buy|sell] (shopguiplus.shop.addmodifier) – add global price modifier
- /shop resetmodifier item <player> <shop> <item> [buy|sell] (shopguiplus.shop.resetmodifier) – reset player’s item-specific price modifier
- /shop resetmodifier shop <player> <shop> [buy|sell] (shopguiplus.shop.resetmodifier) – reset player’s shop-specific price modifier
- /shop resetmodifier global <player> <value> [buy|sell] (shopguiplus.shop.resetmodifier) – reset player’s global price modifier
- /shop checkmodifiers <player> (shopguiplus.shop.checkmodifiers) – 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.food, 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.
- shopguiplus.bypassgamemode – allows to access the shop when in a banned gamemode
- shopguiplus.bypassworld – allows to access the shop when in a 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 “Sell more” 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:
The plugin is incompatible with StackableItems plugin.
- Purchase (thanks!) and download the plugin
- Stop your server, put the .jar file in your server’s /plugins/ directory
- Start the server, plugin will generate all necessary config files
- Fill in config yml and shops yml with desired settings
- Restart the server
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):
Legacy config yml and shops yml for 1.7-1.12:
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:
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.
Example: http://pastebin.com/xjpWWUBf2. 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: http://pastebin.com/TtNtRtTh
More information: http://wiki.brcdev.net/ShopGUIPlus/Installation_&_configuration#Changing_sizes.2Fbuttons_of_shops
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: http://pastebin.com/bWU5Vygu
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 http://wiki.brcdev.net/ShopGUIPlus/Installation_&_configuration#Amount_selection_GUI_customization.
13. How do you use the per-item permissions?
It’s explained here: http://wiki.brcdev.net/ShopGUIPlus/Installation_&_configuration#Using_per_item_permissions
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: http://pastebin.com/69RX1hpB
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): http://wiki.brcdev.net/ShopGUIPlus/Installation_&_configuration#Mob_spawners
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: http://wiki.brcdev.net/ShopGUIPlus/Price_modifiers
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: https://pastebin.com/B7Rh15tt
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: https://pastebin.com/MexHAhkX
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: https://pastebin.com/Y5zV2p4M
Shop menu – set the item in fillItem in each shops section in shops yml, example: https://pastebin.com/kjQAg3xS
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.
35. How do you add an item just for decoration of the shop of no other purpose?
You can add item with type DUMMY (since 1.18.2 version of the plugin). Such items can’t be bought or sold, they can be used for commands on click though.
36. How do you execute commands when player clicks/buys/sells an item?
For commands executed by the player you can add any of following to an item: commandsOnClick, commandsOnBuy, commandsOnSell
For commands executed by the server console you can use: commandsOnClickConsole, commandsOnBuyConsole, commandsOnSellConsole
OnClick gets executed when a player clicks an item in the shop menu (can be used for linking to other shops/plugins)
OnBuy/OnSell get executed after a player buys/sells the item
By buying this plugin you agree to the following rules:
- No refunds
- You may not redistribute the plugin or any part of it
- We may refuse to give you support without any specific reason
- You may modify the plugin for personal use only
Looking for an auction plugin? Check out AuctionGUI+