Common problems and solutions
After successfully creating a shop trading isn't possible!
First please make sure that your Shop isn't inside the spawn protection or inside another region where the player can't access signs/shops. (E.g. WorldGuard or GriefPrevention, you'll have to read these plugin's documentation for figuring out how to give access)
Another issue could be that you are trying to trade with a shop that you have access to, either because you are the owner or because you have the permissions to access the shop content which OPs are granted by default. If you want people who have access to shops to still trade with them then you can disable IGNORE_ACCESS_PERMS in your config.
Also make sure that you are not in Creative mode, by default players with in Creative mode will not be able to trade with shops. Disable IGNORE_CREATIVE_MODE in your config if you want to allow them to trade with shops.
Adventure mode makes problems with sign interaction too (the client doesn't send interact packets to the server for these) so unfortunately Adventure mode isn't supported at all at this time.
No, it doesn't. Your economy plugin was coded in such a way that it lags the server when someone tries to make a transaction.
ChestShop has built-in anti-lag measures, though. In the config, you can see "SHOP_INTERACTION_INTERVAL". It's set to 1/10th of the second by default, however if your server can't process transactions that often, change it to, for example, 0.5 second - that means that you need to set it to "500".
If that doesn't work, try turning off processor-heavy options - mainly "LOG_TO_DATABASE" and "GENERATE_STATISTICS_PAGE", but also "LOG_TO_CONSOLE" - Java's logging is slow, it might be the culprit in your case.
After creating a shop sign it does nothing, not even display a message in the chat
You are probably using a Mac. If that's the case, Apple's included a weird version of Java in Mac OS X since Mavericks - it adds "garbage", invisible unicode characters to the sign. Some people reported having success installing Oracle's Java, but you can also press backspace a few times before writing on every line of the sign.
I can buy/sell but I cannot sell/buy
Make sure that you're not right-clicking the sign and holding a block in your hand. Due to the way Minecraft has changed, it no longer sends packets when trying to place blocks in impossible places (since you're pressing the block against the sign, you're standing in its way).
Also, spawn protection might prevent you from left-clicking signs, in this case, either move the shop out of the spawn or disable spawn protection.
When I try to create a shop it says "You can't create this type of shop!"
You need to set up your permissions correctly.
(You need ChestShop.shop.create permission, you can also give your players ChestShop.shop.* permission that allows them to buy, sell things and create shops)
Why does the plugin say "Shop out of stock" even if it's not?
Check if the item you are selling is equal to the item on sign. Do /iteminfo to find out the id.
Why can my players buy/sell/create shops even if they lack the necessary permissions?
Well, it's a superperms (system that Bukkit uses) feature - those are default permissions. You need to negate them (refer to your perm plugin's documentation)
If LuckPerms: "perms set ChestShop.shop.create.* false"
If PEX: "-ChestShop.shop.create.*"
If bPermissions: "^ChestShop.shop.create"
(without quotation marks)
Alternatively, you can open ChestShop.jar with WinRAR/7Zip (or any other .zip opening program), open plugin.yml and change ALL "default: true" to "default: op"
Why does it say "You can't buy/sell here"?
Well, it basically means that the shop owner doesn't want you to buy/sell here.
However, if you know it's in error, that means that the sign's prices line (3rd line) is wrong.
It should look somewhat like: (of course, that's not the all possible combinations)
B 5:5 S
How do I give another player access to my shop?
ChestShop itself does not include a way to grant other individual players access to specific shops.
However ChestShop integrates with LWC(X) which can be used for access management of shops. In order to use that you need to set TURN_OFF_DEFAULT_PROTECTION_WHEN_PROTECTED_EXTERNALLY: true in the ChestShop config.yml. That means that now all players on the access list of the shop chest's LWCX protection can now access the chest to add or remove items.
Chests can then be protected with LWCX either manually by the shop owner or automatically with the PROTECT_CHEST_WITH_LWC: true option.
Why does the plugin not work with Bedrock players?
When using ChestShop with Geyser and floodgate to allow Bedrock players to play without a Minecraft Java Edition account you will get an error about invalid usernames and/or invalid player ids. This is because by default ChestShop is configured for original Java Edition accounts.
In order to allow Bedrock accounts with Geyser/floodgate to work you need to adjust two options in your config file:
- VALID_PLAYERNAME_REGEXP: "\\.?\\w+$"
This is the regex which usernames need to match. If your prefix for Bedrock usernames is not . then you need to adjust the first . in your regex. (E.g. "\\_?\\w+$" for a _ prefix)
- ENSURE_CORRECT_PLAYERID: false
This is necessary so that the UUID type (0) which floodgate uses for Bedrock players is accepted. Please note that disabling that option might result in shops being broken if an admin creates it for a player that has not played before or wasn't cached!
Please note that allowing non-Java accounts with floodgate is experimental and not officially supported and that your economy/money plugin might have issues with non-standard usernames and UUIDs too! For best compatibility enforce global linking of Java accounts with floodgate!
How can I get /shop working again?
ChestShop offers a /shopinfo command with which players can see information about the shop they are looking at. For convenience one of the pre-configured aliases of that command is /shop.
If you have another plugin which uses /shop and after installing ChestShop it doesn't work anymore (because it now is executed by ChestShop) then you can use the alias functionality of the commands.yml in your server root to specify which plugin should run on that command by aliasing /shop to a namespaced command like /YourOtherPlugin:shop.
For example it could look like this if you want /shop executed by the plugin "YourOtherPlugin" instead:
- "YourOtherPlugin:shop $1-"
(The $1- means that all arguments after /shop will be passed to the plugin command too!)