Shopkeepers
Set up custom villager shopkeepers that sell exactly what you want them to sell and for what price. You can set up admin shops, which have infinite supply, and you can also set up player shops, which pull supply from a chest.
It will also prevent any other trades with non-shopkeeper villagers, if you want it to.
For those who are simply looking for a convenient way to modify the trades of vanilla villagers (as an alternative to using complex Minecraft commands), the plugin also includes a graphical editor for regular villagers and wandering traders.
Basic Features
- Easily create villager shopkeepers that trade the items you want them to trade.
- Admins shops with infinite supplies.
- Player shops which pull supplies from a chest.
- Different types of player shops: selling, buying, trading, and selling books.
- Various supported mob types to represent your shopkeeper, sign shops, and Citizens (NPC) shops.
- Editor for regular villagers and wandering traders.
- Many configuration options.
- Translatable messages.
- Open source (Source code on GitHub)
Supported server versions
Shopkeepers supports the latest versions of Bukkit / Spigot.
Note that this plugin is created to work with CraftBukkit (or alternatively Spigot). Bukkit does not have an API for some of the things necessary to make this plugin work. This means that other server software (Tekkit, Forge, Cauldron, etc.) will not work with this plugin.
Other CraftBukkit or Spigot derivatives/forks might work, but are not officially supported. So if you run into issues while using those, try to reproduce your issue on a fresh and up-to-date Spigot server first.
Getting started
All documentation can be found in the wiki:
- Downloads and changelogs for all files
- Installation
- Translations
- Configuration
- Permissions
- Creating shops
- Commands
- Frequently Asked Questions
Showcase
Admin shops:
Configure the trades via the in-game inventory menu:
Resulting trading menu:
Player shops (ex. selling items):
Fill the shop chest with supplies:
Configure the trades via the in-game inventory menu:
Resulting trading menu:
Video Tutorials
More video tutorials can be found in the wiki: https://github.com/Shopkeepers/Shopkeepers-Wiki/wiki/Video-Tutorials
Tutorial by Donnie, explaining the setup of the different shop types:
Tutorial by Fan Staaff showing the setup of the different shop types in detail:
Tutorial by LastKing2X,showing the setup of the different shop types:
Spanish tutorial by Ajneb97, also mentioning placeholder items and various config options:
Statistics
This plugin uses bStats to collect anonymous plugin usage statistics. This helps me to determine how many servers are using the plugin, which Minecraft versions it is used with the most, and to which degree the different features are used.
Here is a list of all currently tracked information:
- Common information: The number of servers using the plugin, the number of players on these servers, online mode, Minecraft version, plugin version, core count, system arch, operating system, server country, Java version.
- Shopkeepers specific information: Whether specific related plugins are used (Citizens, Towny, WorldGuard, Gringotts, other Vault economy plugins), number of shops, whether player shops are used, whether certain features are enabled in the config (ex. WorldGuard/Towny compatibility, Citizens shops, delayed saves, colored names, chest protection, removal of inactive shops, tax rate, strict item comparison, purchase logging, disabling of other villagers, ..), the number of worlds containing shops.
- All information can be publicly viewed here: https://bstats.org/plugin/bukkit/Shopkeepers/
If you want to disable bStats for all plugins on your server, edit the file plugins/bStats/config.yml, or alternatively disable it only for Shopkeepers by setting 'enable-metrics' to 'false' inside the Shopkeepers config.
Known potential issues
A list of known potential issues of the latest version of Shopkeepers can be found in the wiki: This documents differences between Minecraft/Spigot versions, and existing Minecraft/Spigot issues related to Shopkeepers.
If you run into an issue, check if this list already contains and maybe offers information on how to handle it.
Have issues or further questions?
If you have a pressing issue or simple question, you can join the discord server and ask other plugin users for help:
But submitting a ticket is the best way to get help or report a problem with the plugin.
Before submitting a ticket:
- Check if your question is already answered in:
- The documentation (wiki).
- The FAQ.
- The Known Issues.
- Check if there is already another ticket for your issue.
Before reporting an issue:
- Try to reproduce your issue when using:
- The latest versions of Spigot and Shopkeepers.
- No other plugins.
- No kinds of other server or client mods.
When reporting an issue:
- Provide the versions you are using of Minecraft, Spigot and Shopkeepers.
- Provide a detailed description of your problem and add as much information as possible which could help reproducing the issue.
- If possible, include step-by-step instructions on how to reproduce the issue on a fresh Spigot server.
Donations
If you like this plugin, consider supporting its developers by making a donation:
- To blablubbabc (current maintainer: Dec 2013 - today)
- To nisovin (former author: Aug 2012 - Dec 2013)
A big "thank you" to everybody who is keeping the motivation up through donations!
Minecraft-Servers-Listing.com | TRS Game Servers | terminalserver.us |
Minewind | mercurialmusic | timitimitimi |
FatherWh0 (merchantvillages.com) | lukeeexd (tws-mc.com) | PapaJuan |
EmeraldHaze (Ninjalette) | Espen | kbtalkin |
Dimo (Beyond Vanilla) | RefugiaCraft | Frilioth |
Tabletopcheese | Observant Minecraft Server | Ren Binden |
BadWolfMC |
Want to help?
The less I have to do myself, the more time I have to write plugins. Therefore I am looking for someone who would be willing to get involved in the project. That could for example mean:
- Keeping the documentation (the wiki) up-to-date with plugin updates.
- Improving the existing documentation.
- Creating and maintaining translations.
- Help managing issues and answering questions of users.
If you are a programmer with experience in writing bukkit plugins, or have ideas on how you can contribute to the project beyond that, let me know as well! If you are interested, feel free to contact me via PM.
Beyond that, everybody is invited to help others with issues and questions in the issue tracker, comment section, and the discord channel! Also consider contributing translations!
Third-Party Add-On Plugins
Sometimes a feature is either to specific to include it directly into the Shopkeepers plugin, or I did not yet have the time to add something similar myself. The plugins listed here extend the functionality of the Shopkeepers plugin.
These plugins are maintained by other community members. If you run into issues while using any of these add-ons, try to first reproduce your problem without any add-ons before you report it.
ShopkeepersNavAddon(abandoned): Adds inventory-based GUIs that allow you to browse all player shops, all admin shops, and to find shops that trade a specific type of item. You can teleport to a particular shopkeeper by clicking a button inside the GUI.
This plugin also integrates support for trading with Vault-based currency, but does so by replacing Shopkeepers' normal trade handling.
If you have also written an add-on plugin and want it listed here, let me know!
@Aluin13
I was having this problem, too. Try using the generic white spawn egg, not the actual villager spawn egg. The item ID for the generic spawn egg is 383.
@blablubbabc
Thanks for the reply!
The issue I'm having is with associating a shopkeeper npc to a chest. Previously, I was able to hold the villager spawner in my hand, right click the chest, then right click to place the villager (now associated with the chest). My understanding is that the `/shopkeeper setforhire` command assumes that there is already a shopkeeper bound to a chest.
Right clicking with the spawner in hand while sneaking also does not cycle through shop types. As a matter of fact, I see no console or in-game messages at all no matter what I do with a villager spawn egg. I've triple checked the config file and shope-creation-item is set to the default MONSTER_EGG with item-data set to 120.
I apologize if this is just user error.
@blablubbabc
Nope, with debug enabled there's no console output when attempting and failing to use the shop creation item. I use zPermissions, updated for 1.8+ by the Spigot team. Honestly, I'm clueless as to what's really going on. It doesn't seem like a permissions issue as I can verify that I do have the permissions set using other commands to test. It doesn't seem like the shopkeeper entity types should fail to load either though, and as far as I can tell it has to be one of the two.
Update to 1.10 :)
[04:18:27] [Server thread/INFO]: [Shopkeepers] Enabling Shopkeepers v1.74 [04:18:27] [Server thread/ERROR]: [Shopkeepers] Potentially incompatible server version: v1_10_R1 [04:18:27] [Server thread/ERROR]: [Shopkeepers] Shopkeepers is trying to run in 'compatibility mode'. [04:18:27] [Server thread/INFO]: [Shopkeepers] Check for updates at http://dev.bukkit.org/bukkit-plugins/shopkeepers/ [04:18:27] [Server thread/ERROR]: [Shopkeepers] Incompatible server version: Shopkeepers cannot be enabled.
1.10 breaks shopkeepers, Not sure why other than incompatible server version. Wondering how soon the plugin could be rolled out and updated to work with 1.10.
Don't mean to pester you, Just trying to be informative!!
@Jikoo_K
Thanks, will be fixed in the next update.
Doesn't it print the failing permission nodes?
Could you tell me what permissions plugin your are using, together with an (minimal) example configuration, with which I might be able to reproduce this?
There seem to be more people having permissions-related problems, though I wasn't yet able to reproduce them with PEX, nor with GroupManager.
@Aluin13
I am currently can't remember any changed to the for-hire feature. Setup is done by targeting the chest and executing the '/shopkeeper setForHire' command. After you have setup the shop for hire, then you can right click it and hire it.
I just tested on my 1.9.4 test server with the latest version of shopkeepers, and that seemed to work fine for me.
I'm having an issue with this plugin on Spigot 1.9.4 regarding for-hire shops. When I try to create such a shop in survival mode by right clicking a villager spawner on a freshly-created chest, nothing happens. I've tried regenerating my config file and enabled debug mode and absolutely nothing happens in-game or in the console.
Permissions seem fine and I can generate an admin shop using /shopkeeper without issue. I'm likely just not following instructions correctly. About a year ago I was able to set up multiple shops just fine. Since then, they've gone missing at some point and I'd just like to set them back up. Any help would be appreciated!
Whenever I attempt to make a shop, I get the no permission message. I updated to 1.9.4 and Shopkeepers 1.74 from 1.9.2 and 1.70, regenerated and redid config. I've verified that I do have permission to create the shops in enabled-living-shops and I do have permission to create shops of most types.
After a read of the source, I have no clue what's wrong. ShopkeepersPlugin#hasCreatePermission is obviously returning false - I don't get the creation instructions when swapping to the creation item in hotbar, but it is the correct item because I get the no permission message when right clicking.
Debug output doesn't help, unfortunately. Here's my config (mostly - I removed several more allowed entity types, but the majority of the safer ones are still present).
Unrelated to my issue, you missed converting the new permission to lower case in the wildcard permission.
@MasterMithrandir
Oh, you are right. Seems like it was printing only the x coordinate 3 times in a row. Will be fixed in the next version.
@blablubbabc
By the way, is this a normal coordinate?:
[22:13:34 WARN]: [Shopkeepers] Failed to spawn shopkeeper at PVP-EVENT,397,397,397
"397,397,397"
@Roadhog360
If you are seeking help, you might want to create a ticket and attach your server log there.
Does not work. 0/10. 1.8 version on 1.8. /shopkeeper puts errors in console. It doesn't do anything. Boo.
@MasterMithrandir
The plugin would only need to let you specify and keep track of the WorldGuard region together with a boolean flag, which indicates whether or not creation of living entity shopkeepers shall get blocked.
If I would have some time I would look into it, but I don't currently :(
@blablubbabc
The thing is, I don't want entity shops in that area. (I've tried it in the past, and the frame rate lag is considerable when near too many shopkeeper npc's in one place.)
Therefore, I BLOCK entity spawning in the area. I'm causing my own issue, but it's much better than having lag. (This also caused noise excess in the past, but thankfully this has been solved on 1.9). This allows only sign shops to be generated (Which are more neat), while any other shop established is blocked unless the player removes it.
I can't imagine not attempting to generate the shop any more, if it fails on creation, doing any harm.
I understand your point. So if I can't convince you, I guess I'll just be removing the shops manually every time I see spam on console, or I'll have to think of something else (Which In a whole year I haven't managed to fix on my side yet). Maybe I should rethink about my trading center project's base concept.
@Liphian1
Take a look at the default config file here: http://dev.bukkit.org/bukkit-plugins/shopkeepers/pages/default-config-file/
The 'disabled-living-shops' isn't used anymore, as it was replaced with the 'enabled-living-shops'.
Best you remove your config file and let shopkeepers regenerate it. The villagers should be enabled by default.
Great plugin! Only downside; some villagers spawn in the ground for a couple seconds...
Included VILLAGER in the [ ] and it still placed signs when doing /shopkeeper. Tried disabling sign shops and that only gives me the "You don't have permission to do that" error. I tried VILLAGER without the [ ] and also checked if VILLAGER is disabled which wasn't. I'll include the pastebin of the config file.
http://pastebin.com/rBu8V2uF
@Liphian1
Make sure you have VILLAGER as entry in 'enabled-living-shops'.
@MasterMithrandir
Usually the spawning of the shop entities should not get blocked in the first place. The purpose of this setting kind of contradicts the purpose of having the 'bypass-spawn-blocking' setting.
That's why I was considering it for cleanup purposes. However, it might be more useful to instead figure out the situations in which the shops can get stuck and preventing the 'issue at its root'. Also, adding it and not knowing how the shops can get into this 'stuck' state leaves the possibility open for abuse of this feature by players against other players' shops.
I don't want to add features which are only of use in some very specific context ('feature creep'). That's why I suggested that you can let someone create a small and simple addon plugin, which uses shopkeeper's already available API to prevent the shop creation in your very specific situation.
I am not sure what you mean by 'avoid a shop from generating'.
@blablubbabc
Not sure which config option it is but I have the following that came up when searching for 'villager':
disable-other-villagers: false hire-other-villagers: false block-villager-spawns: false
Also everyone has all the default permissions including: shopkeeper.player
(I'm using PEX)
@blablubbabc
"When the player creates a shop and it cannot be initially spawned, remove it again and let the player know immediately."
Sounds like the perfect solution. Can you think of anything wrong with this?
Player shops can get permanently stuck in any other context. If they don't know of the shopkeeper remove command (Because they don't feel like reading) their shop will just keep trying to spawn eternally.
I'm sorry to ask for this though. Keep in mind it's still optional. I'll deal with the consequences on my side, if I decide to activate this option.
Also, I'm just wondering, what do you have in mind which could be used by a player in order to avoid a shop from generating?