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 |
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!
In reply to blablubb:
thanks
Im trying to use a custom currency renamed and hidden enchanted sunflowers as coins.. Upon getting a stack of 5 via a /minecraft give command from the reward of a fishing tournament if i go to a shopkeeper and try trade them in occasionally it bugs out and it wont take the item i have to individually unstack them and restack them in my inventory for it to work. There seems to be a bug on enchanted/renamed/lore items in stacks needing you to restack them and its very frustrating using a custom item based currency none of the trades go smoothly as of the latest version 2.9.3 and i also tried 2.9.1. An occasional issue with stacked items it takes the currency to the trade window then you click the item it flashes and resets. Is this a known issue?
In reply to Forge_User_79194804:
The problem is probably that you are using color or formatting for those items' display names or lore. The problem is that Spigot's item serialization does not properly persist the internal data of these items but converts these formatting information into legacy color codes internally (the § character). The result is that after the trades of the shopkeeper got saved and then loaded again later, the items inside the trade will no longer match any freshly via command created items (since their internal data has changed and no longer matches).
This also explains why those items are not stacking sometimes: Certain inventory actions will trigger this conversion of Spigot as well. Once an item has been converted, it no longer matches and stacks with any unconverted items.
A workaround is to either use a plugin to create those items (if the plugin uses Spigot's API to create the items they will be in the normalized internal data format right away). Or you can use legacy color codes for formatting the text. See https://github.com/Shopkeepers/Shopkeepers/issues/578
There is a comment somewhere with an example of how to manually use legacy color codes inside the give command. However, I just recently debugged some issue with those manually inserted legacy color codes sometimes not getting converted to § right away either. The recommended way is therefore to use a plugin for creating the item.
In reply to blablubb:
Thank you very much it seems this was the issue. I tried generating it via an item plugin that creates and generates renamed things and it worked fine so far. So my next issue is i made voucher type items to be used with shopkeepers to redeem things from spawn. I edited the default games loot tables.json files with these items in vanilla minecraft fashion.. itallic/false/ etc. So my issue is because i've had reports of those vouchers having issues being traded sometimes i assume its the exact same issue with the serialization. Is there any way i could add lore/coloured name type voucher items work being generated from loot tables JSON format such as finding in dungeon chests to be then directly compatible with being traded with shopkeepers? I know its a very specific issue just curious if you've had this one before as i can't be the only person who uses item based currency naturally generated in loot tables to work with shopkeepers.
In reply to Forge_User_79194804:
Yes, the issue is with the text formatting of minecraft texts. As mentioned above you could try to use legacy color codes directly (the § character or alternatively '
\u00A7
' or '\\u00A7
').What settings should I use to use Citizen?
In reply to ブルーバス:
enable-citizen-shops
Is there any chance of making an option so that when villagers are linked to a chest, opening the chest links to a global per player virtual storage and the chest has GUI with multiple pages?
Players can setup their trades as normal within the villager, and the chest just acts as a means of being able to open a giant virtual inventory for the player for shop storage. As we have the odd comment pop up every now and then that double chests per villager is quite small storage and being able to have a multiple page virtual storage would be handy that every villager links to that one virtual storage and the chests are just the gateway to viewing it.
Kind regards
In reply to Forge_User_74434314:
I would really prefer not storing the shop chest contents externally. Loading and saving items has always been quite fragile to server related issues. However, there is a ticket over a github (I believe) for allowing linking more than one (double) chest to a single shopkeeper. This would be something I consider to be more realistic to be added.
In reply to blablubb:
That sounds like a more realistic option for sure :) Thanks for responding.
In reply to Forge_User_74434314:
You can also set up hoper chains to allow the trader to "refresh" thier stock
If we the app server Magma works, is a app in which you can put mods and plugin in 1.12.2
In reply to Forge_User_75547730:
This? https://github.com/magmafoundation/Magma
Well, you can try it, but my hopes are low that it works. Shopkeepers relies on certain minecraft internal code which is not covered by the Spigot API, so if Magma has made changes to those code portions or changes to their obfuscation this will brake.
If you run into issues with Magma don't expect support from me, since I will not look into reproducing and fixing Magma specific issues. The portion of users using Magma is probably very low, so my time is more efficiently spent with other things..
With Magma works?
In reply to Forge_User_75547730:
I don't understand the question, sorry.
Great developer. Helps alot if u have problems! Gotta give the love!
How do i make villager trading allowed?
In reply to Forge_User_53435620:
Some other plugin might restricting interaction with the villager entity, because this message is not coming from the Shopkeepers plugin.
However, shopkeepers has a setting 'check-shop-interaction-result' which you can try to set to false (which it is by default). This should allow ignoring most other plugins regarding interaction restrictions (eg. WorldGuard).
Unfortunely this setting does not work for all other plugins. So if that is the case you will need to figure out which other plugin is preventing the interaction and then configure it to stop doing that. (Also please let me know which plugin is causing this issue then, so I know in the future when this comes up again.).
This is great! It's the only plugin I found that allows multiple items per shop and the villager gives it a real shop feel. The setup is so easy as well. Wonderful job!
I wish I could delete individual shops though rather than all shops of a player or all admin shops at once. Did I miss that option already being available or could you add that?
In reply to gamebuddiesempire:
The delete commands are for bulk removal of shopkeepers. You can delete individual shops with the button inside their specific editor view. You can also remotely delete individual shops by opening the editor view remotely via the respective command (/shopkeeper edit [shopName]).