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:
Thank you I love this plugin <3
v2.9.1 for MC 1.15.2, 1.14.4
Migration notes: Before updating, make a backup of your save.yml file just in case something goes wrong.
Update for MC 1.15.2:
Other changes:
Added: Warning messages when a trading offer cannot be loaded for some reason.
Changed: Trading offer and hire cost items get automatically migrated to the current data version now.
Known potential issues: See here.
Donations
If you like this plugin, consider making a donation.
Thanks!
Thanks to all donations since the last update:
The item's name have [&black] mark, shop cannot display black name and auto change to [&white] name.
In reply to KUO_56:
This is caused by an issue in Spigot's item serialization: https://github.com/Shopkeepers/Shopkeepers/issues/617
It omits storing the black color, since it considers it to be the default color. A workaround is to use a different color code first, in front of the black.
how to rotate my villigers?
In reply to docpizza8888:
They rotate automatically if you are using the correct version of Shopkeepers for your version of Spigot.
How come my shopkeepers only face one direction whenever I make them? It won't let me rotate them or anything. Help?
In reply to Skritzzzzz:
yes i got the same problem.. wanted to post the same question but yeah, how to fix it ?
In reply to Forge_User_78828294:
Make sure you are using Shopkeepers v2.9.0 if you are running on MC 1.15.x.
In reply to blablubb:
How do I change what version the shopkeeper is in??
In reply to Skritzzzzz:
What do you mean? You need to make sure that your Spigot server is up-to-date (check "/version" command), and that you are using the latest version of the Shopkeepers plugin (v2.9.1 currently).
In reply to blablubb:
I am using the plugin on Minehut. It says the version on minehut is 2.7.1
In reply to Skritzzzzz:
Shopkeepers v2.7.1 is only compatible with MC 1.14.x. For MC 1.15.x you will have to update to Shopkeepers v2.9.1. I don't know how updating works on Minehut, so you will have to figure this out yourself.
Would balancing the obscenely abusable Vanilla Shopkeepers be outside of this plugin's scope?
Examples:
- Trading sticks with vanilla villagers can grant you a stack of emeralds (or so I heard)
- Village discounts for saving villagers are OP
- Apparently the whole 1.14 raiding mechanic can be abused for obtaining ritches too.
It's a massive pitty that on 1.14+ I have to resort to just disabling vanilla shopkeepers with your plugin, instead of actually balancing them.
Else, does anyone know how I could balance this stuff?
In reply to MithrandirMage:
Yeah, that's outside of the scope for Shopkeepers. In a quick search I wasn't able to find an updated plugin that offers this either, unfortunely..
blablubb,
Thank you so much for updating. Now my shopkeepers look alive and turn to players again!
Is it recommended to delete the old config and let it repopulate since you implemented so many changes and fixes?
In reply to Falastar:
This should not be required. There haven't been that many changes to the config either. But if you let it regenerate you will get/keep all the default comments, which are otherwise not persisted.
In reply to blablubb:
Thanks!
v2.9.0 for MC 1.15.1, 1.14.4
Update for MC 1.15.1:
Other changes
Fixed: Raider shopkeeper mobs were able to join and thereby interfere with nearby raids. This should no longer be the case.
Fixed: The save file was missing the data-version when initially created. This caused subsequent reloads to always trigger a 'migration' / forced save without actually being required.
Fixed: The book shopkeeper was ignoring books with missing generation tag. These are now treated as 'original' books, just like Minecraft does.
Fixed: Spigot seems to (internally) support books with empty titles now. The book shopkeepers were updated to ignore them, since supporting them would require fundamental changes to how book prices are stored and how books are identified. Those books can't be created in vanilla Minecraft, so this shouldn't be a severe limitation.
Fixed: Due to a Minecraft bug (MC-141494) interacting with a villager while holding a written book in the main or off hand results in weird glitches and tricks the plugin into thinking that the editor or trading UI got opened even though the book got opened instead. We therefore ignore any interactions with shopkeeper mobs for now when the interacting player is holding a written book.
Fixed: The book shopkeeper would not correctly store offers for books that have dots in their name.
Fixed: We would previously drop the shop-creation item returned on shop deletion at the shop's location, even if the shop got deleted via remote editing from far away (and is potentially not even loaded). If the player is further than 10 blocks away (or if the shop object is not loaded), it will drop the item at the player's location now.
Fixed: The shop creation item can no longer be used from dispensers if regular use is disabled.
Config/Fixed: Derived settings were not updated when loading messages from a separate language file.
Config/Fixed: Some settings would not loaded correctly depending on the used locale. Also made all text comparisons locale independent.
Config/Fixed: In case the name-regex setting cannot be parsed, we now print a warning and revert to the default (instead of throwing an error).
API/Fixed: NPE when accessing a non-existing second offered item from the ShopkeeperTradeEvent.
API/Fixed: The offered items inside the ShopkeeperTradeEvent are copies now and their stack sizes match those of the trading recipe.
Messages/Fixed: The internal default for message 'msg-list-shops-entry' (that gets used if the message is missing in the config) was not matching the message in the default config.
Internal/Fixed: Improved thread-safety for asynchronous logging operations and settings access.
Changed: Villager shopkeepers get their experience set to 1 now. I wasn't able to reproduce this myself yet, but according to some reports villager shopkeepers would sometimes lose their profession. Setting their experience to something above 0 is an attempt to resolve this.
Changed: Instead of using a fallback name ("unknown"), player shops are required to always provide a valid owner name now.
Changed: Explicitly checking for missing world names when loading shopkeepers.
Changed: Added validation that the unique id of loaded or freshly created shopkeepers is not yet used.
Changed: Added more information to the message that gets logged when a shopkeeper gets removed for owner inactivity.
Changed: The errors about a potentially incompatible server version and trying to run in compatibility mode are warnings now.
Messages/Changed: The msg-shop-creation-items-given message was using the player's display name. This was changed to use the player's regular name to be consistent with the rest of the plugin.
Config/Changed: The plugin will now shutdown in case a severe issue prevents loading the config. This includes the case that the config version is invalid. Previously it would treat invalid and missing config versions the same and apply config migrations nevertheless.
Config/Changed: The always-show-nameplates setting seems to be working again (since MC 1.9 already). The corresponding comment in the default config was updated.
Config/Changed: Changed/Added a few information/warning messages related to config and language file loading.
Config/Changed: Only printing the 'Config already loaded' message during startup if the debug mode is enabled.
Debug: Debug option 'owner-name-updates' enables additional output whenever stored shop owner names get updated.
Various changes to the shopkeeper registry and shopkeeper activation:
We keep track now which chunks have been activated. This avoids a few checks whether chunks are loaded.
The delayed chunk activation tasks get cancelled now if the chunk gets unloaded again before it got activated. This resolves a few inconsistencies such as duplicate or out-of-order chunk activation and deactivation handling when chunks get loaded and unloaded very frequently.
Similarly the respawn task on world saves gets cancelled now if the world gets unloaded.
Shopkeeper spawning is skipped if there is a respawn pending due to a world save.
Shopkeepers are now stored by world internally. This might speed up a few tasks which only affect the shopkeepers of a specific world.
Debug: Added debug option 'shopkeeper-activation'. Various debug output related to chunk/world loading/unloading/saving and spawning/despawning of shopkeepers was moved into this debug category.
Debug: The "/shopkeepers check" command now outputs some additional information about active chunks.
API changes:
Various (mostly internal) changes to commands and argument parsing:
Internal changes:
Migration notes:
Save data format changes:
Changed messages (you will have to manually update those!):
Removed messages:
New messages:
Known potential issues: See here.
Donations
If you like this plugin, consider making a donation.
Thanks!
Thanks to all donations since the last update:
In reply to blablubb:
Where's the build? :l