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 ONLY at our Discord!
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 (supports SilkSpawners, MineableSpawners, EpicSpawners and WildStacker)
- Supports multiple economies (Vault, exp, MySQL Tokens, PlayerPoints, TokenEnchant, TokenManager) at the same time
- 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
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 the shop yaml (for example shopguiplus.shops.food, shopguiplus.shops.armor etc.). You can use the wildcard permission node shopguiplus.shops.* only if you are using PermissionsEx or UltraPermissions (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 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
- LuckPerms 5.0 or newer (recommended)
- UltraPermissions: 4.4.5 or newer
- zPermissions: 1.3-SNAPSHOT-b6 or newer
- PermissionsEx: 1.22.7 or newer
- GroupManager: 2.0-Phoenix or newer
Following spawners plugins are supported but optional:
- SilkSpawners (requires ShopGUI+ bridge for SilkSpawners)
- MineableSpawners (requires ShopGUI+ bridge for MineableSpawners)
- EpicSpawners
- WildStacker
- 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 with desired settings
- Restart the server
- 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
This plugin comes with a simple API available at https://github.com/brcdev-minecraft/shopgui-api.
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/xjpWWUBf
2. How do you make weapons/armor/potions unstack?
You can make multiple weapons/armor/potions unstack by adding unstack: true entry to the item.
Example: http://pastebin.com/tJEmxW0g
3. How do you set other item as a placeholder instead of the sold one?
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 the shop yml.
Example: http://pastebin.com/bWU5Vygu
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 the shop yml.
Example: http://pastebin.com/aUqvg651
5. 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
Example: https://pastebin.com/2q6yBMmG
6. How to add commands on item click to the main /shop menu?
You can use both commandsOnClick and commandsOnClickConsole described above in the main menu as well. You can use it both for an item actually opening a shop or a placeholder item with type DUMMY.
Example: https://pastebin.com/hiMhzvDs
7. Where do you find all the material names which can be used?
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.
8. How do you change the size of a shop?
You can change the size of any of shop inventories in the shop 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
9. How do you make the buying/selling process faster?
You can enable quickBuySell in your config.yml. This will result in the amount selection GUI not being closed after buying or selling an item.
10. How do you edit the amount selection GUI buttons/slots?
Please refer to http://wiki.brcdev.net/ShopGUIPlus/Installation_&_configuration#Amount_selection_GUI_customization.
11. How do you use the per-item permissions?
It's explained here: http://wiki.brcdev.net/ShopGUIPlus/Installation_&_configuration#Using_per_item_permissions
12. 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 the shop yaml. 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.
Example: http://pastebin.com/Gkerd04V
13. 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.
Example: http://pastebin.com/GLrDv9S3
14. 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 the shop yaml.
Example: http://pastebin.com/PF3W6M8s
15. 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).
Example: http://pastebin.com/nrzEz0Zz
16. How do you edit the format of displayed price?
You can add following settings at the bottom of your config.yml and edit them as you wish: http://pastebin.com/69RX1hpB
17. How do you edit the receipt message sent after buying/selling an item?
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.
Example: http://pastebin.com/98XSJrs0
18. How do you limit the item stack size players are able to enchant at once?
Simply add an entry named enchantmentStackSizeLimit with the value of the limit.
Example: http://pastebin.com/tvdqTYfJ
19. How do you set a different name of each page of the shop?
Add an entry named namePerPage below name in the shop yaml. You can set as many names as you wish (the format is PAGE: NAME)
Example: http://pastebin.com/Zmdc03My
20. How do you sell spawners?
It's explained here (it requires one of the spawners plugins listed above in "Requirements" section): http://wiki.brcdev.net/ShopGUIPlus/Installation_&_configuration#Mob_spawners
21. 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 the shop yaml.
Example: http://pastebin.com/DsVWWC4h
22. 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).
Example: http://pastebin.com/LvqrGVg3
23. 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.
Example: http://pastebin.com/ubDZh7zB
24. 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.
Example: http://pastebin.com/QieD3NLb
25. How do you set up the price modifiers?
It's explained at the wiki: http://wiki.brcdev.net/ShopGUIPlus/Price_modifiers
26. 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 so: https://pastebin.com/B7Rh15tt
27. 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
28. 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.
29. 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 the shop yaml
Example #1 (this will allow access in world_nether only):
https://pastebin.com/Lk0p5yZH
Example #2 (this will allow access in any world except world_nether):
https://pastebin.com/SULMAUSW
30. 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 shop yaml, example: https://pastebin.com/kjQAg3xS
31. How do you require players to have certain permissions before they are able to purchase an item?
You can add requiredPermissions list to an item inside the shop yaml.
Example: https://pastebin.com/zh21u74e
32. 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.
Example: https://pastebin.com/2yQyfAJP
33. How do you add custom economy plugin support?
You can use the EconomyProvider (see section API above for link) to implement your own economy handler. Then you need to use the ShopGuiPlusApi#registerEconomyProvider method to register it and set the economyType in config.yml to CUSTOM.
34. How do you change the click cooldown inside GUIs?
You can change it by adding a clickCooldown entry to gui section in config.yml. The value is click cooldown in milliseconds (250 ms is default).
Example: https://pastebin.com/EvX9MDaG
By purchasing this plugin resource you agree to following terms of service:
- No refunds will be given unless a solid reasoning is provided
- You may not redistribute the plugin jar or any part of it's source code
- Redistribution of config files is allowed
- 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+
Icon credits: Freepik, Flaticon, icons8