ChestShop (iConomyChestShop)
Acrobot released his first Android game, would you mind giving it a go?
ChestShop
A simple, yet very powerful system for making physical shops using signs and chests.
It's never been that easy to create shops! With features like shop protection and anti-lag protection, you won't have to worry about your server's economy anymore!
"Just works"! Don't worry about your economy plugin, ChestShop supports all of them with Vault!
(Versions above 3.9.2 also support economy plugins using the Reserve API)
Use the latest development builds for 1.13 compatibility!
The plugin by default submits anonymous stats about your server (player count, plugin/server version and type) to a public statistics websites (mcstats.org and bstats.org) in order to provide the developers with usage information. If you wish to opt out, you can do so in the PluginMetrics/config.yml and bstats/config.yml files. It also features an auto-update feature, which can be turned off in the config.
Frequently Asked Questions
User-made tutorials
Download the latest stable version
Download the latest development version
Download older versions
API for plugin developers
Source code on GitHub
Thread on Bukkit forums
IRC chat (#chestshop on irc.spi.gt)
bStats metrics
Additional modules for ChestShop:
Notification module - to use with Notifications plugin
Towny module - to use with Towny plugin
ChestShop Notifier - records all sales, even when the player is offline (Maintained by Phoenix616)
ChestIcon - Icons for Chests, just like the Showcase plugin! (User-made, broken on newer versions)
Libelula Auto Shop - easy creation of admin shops, using Essentials (User-made)
ChestShopLimiter+ - limits the number of shops per player (User-made)
ChestShopLogger - store all shop information in a database (User-made)
Using shops
It's easy! Just right-click the sign to buy, left-click to sell. (You can configure the buttons in the config file!)
How to create a shop
Player shop
Place a chest on the ground | |
Place a sign 1 block away from the chest (for example, above it) | |
On the sign, write: | ![]() |
First line will be automatically filled with your name by the plugin (if you have the permission ChestShop.admin then you can create shops with the names of other players) |
|
Second line is the amount of items to buy or sell | |
Third line is a combination of buy and sell prices. You need to have a price indicator (like 'B' - price that will apply to items BOUGHT by PLAYERS - or 'S' - the SELL price) near the price - the prices are separated by a colon (:) |
Some of the possible price combinations: "B 5:5 S", "B 5", "S free" |
The forth line will hold the id/name of the item. Write ? on the sign and the item will be autofilled with the one from the chest or you can click on the sign with the item afterwards. Optionally you can put the actual name on it. You can find out the name of the item you're holding by doing /iteminfo |
|
For example | ![]() |
A person can buy 64 diamonds for 10 dollars and sell them back for 5 dollars from Phoenix616 |
Admin Shop - shop with unlimited items
Firstly, you've got to be sure that you've the ChestShop.admin permission or that you are an OP. To make an Admin Shop, simply put "Admin Shop" (configurable in config.yml) on the first line of the sign when creating the shop. Admin Shops do not require a chest!
Translations
Here is a list of player-made translations: Translation list
Commands
- /iteminfo - Get information about the item in your hand
- /iteminfo <id/name> - Get information about the item with the given id or name
- /csgive <itemcode> [<amount>] [<player>] - Give item with a unique ChestShop code to a player
- /cstoggle - Toggle buy and sell notificiation messages
- /chestshop version - Display the ChestShop version
- /chestshop reload - Reload the ChestShop config and translation messages. (This might not reload some features)
Permission nodes
Description | ||
---|---|---|
ChestShop.shop.* | shop creation and buying/selling - it contains: | |
ChestShop.shop.create.* |
create all types of shops |
|
ChestShop.shop.buy | buy any item from shop | |
ChestShop.shop.sell | sell any item to shop | |
ChestShop.mod | open any shop chest, destroy stores | |
ChestShop.admin | open any shop chest, destroy stores, create (admin) shops |
A full list of permission nodes
Configurations
Useful tips by players
How not to get bankrupt | A customisable price table |
Alternative price table |
Compatibility
ChestShop directly hooks into the following plugins to provide additional functionality:
Metrics
This resource sends metrics data to McStats and bStats. You can opt-out of metrics for all plugins on your server by changing the settings in the PluginMetrics/config.yml and the bStats/config.yml file if you don't want any data to be send.
More info
Even more information can be found in the old plugin thread on the forums.
Got an error or suggestion?
Simply submit a ticket here!
If you have a Github account and have coding knowledge you can also directly open an issue on Github.
If you just need general help feel free to ask in the comments or join the #chestshop channel on Spigot's IRC network (irc.spi.gt, webchat)
Has ChestShop helped you or your server?
If you want to thank the team in a more materialistic way, feel free to donate! :)
A shout-out to Acrobot's friend:
We believe that the music he makes is really stunning - you can decide it for yourself!
Hi there, I am having issues getting this plugin to work, it has always been my favorite!
I just can't seen to get it working this time, i have ran many servers and know all about installing plugins, not quite sure why im having issues this time around. i have vault, worldedit,PermissionsEx, Basic Economy,Fly, NoRainReloaded for plugins on our server. it s a 1.13.2 server version. I have tried many different builds, like 10 different ones on Jenkins, etc., I'm not sure if im downloading the right build though, the server acts like it has the plugin downloaded, where the Chestshop plugin is loaded on to the Bukkit server when logged in. We have access to 4 different commands /csgive/ cstoggle /csversion /iteminfo, but not all work though, the csversion command doesn't work.
We can't get the signs to work for chest shops in our server like they normally do. Can you please help us? Any help would be extremely appreciated.
Thank You.
~RESOLVED~ Just had to switch from craftbukkit server version to spigot and everything works now, weird but at least, i got it working finally!
The latest build definitely works. This sounds like an issue with your permissions setup. (Or plugin config, make sure everything is set to the values that you expect as there are some cases in which shop interaction will not work by default e.g. in creative or with access permission)
In reply to Phoenix616:
Any recent Vault version and any Vault-compatible economy plugin will work (I personally use craftconomy but more simple setups with Essentials work too)
And Reserve is just an economy API interface for plugins to access economy plugins similar to how Vault works.
Also I would like to advice against downgrading the server version as that can potentially lead to lots of issues with the world and player data.
I get a massive server spam anytime someone buys or sells anything, however all sales and purchases still operate correctly despite the error. This is an example of selling 64 stone brick:
[00:21:47 ERROR]: Could not pass event TransactionEvent to ChestShop v3.9.2 (build 86)
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:308) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at com.Acrobot.ChestShop.Listeners.Player.PlayerInteract.onInteract(PlayerInteract.java:132) ~[?:?]
at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:299) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:266) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.PlayerInteractManager.a(PlayerInteractManager.java:110) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1163) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.PacketPlayInBlockDig.a(SourceFile:40) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.PacketPlayInBlockDig.a(SourceFile:10) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.a(SourceFile:10) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_191]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_191]
at net.minecraft.server.v1_13_R2.SystemUtils.a(SourceFile:199) [spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:900) [spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:417) [spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:835) [spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:733) [spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
Caused by: java.lang.IllegalArgumentException: Cannot generate code for item ItemStack{STONE_BRICKS x 64} with maximum length of 0 (code Stone Smooth Brick results in item ItemStack{LEGACY_SMOOTH_BRICK x 1})
at com.Acrobot.Breeze.Utils.MaterialUtil.getName(MaterialUtil.java:199) ~[?:?]
at com.Acrobot.Breeze.Utils.MaterialUtil.getName(MaterialUtil.java:128) ~[?:?]
at com.Acrobot.ChestShop.Listeners.PostTransaction.TransactionLogger.onTransaction(TransactionLogger.java:29) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304) ~[spigot-1.13.2.jar:git-Spigot-573cdf2-dff66df]
... 26 more
You are not using the latest version, the one that you are using is not properly compatible with 1.13. Update to the latest build.
Hey there, sorry for bothering !
I'm actually doing a RP server with my friends and as the developer of that server, I did download your github repo. I tried to change the text displayed on the sign.
I'd like to change the "B 5" (5 as the exemple) to something like "Buy this for $" + 5. I've seen that you were using a char as buy/sell indicator and I tried to turn it into String to fill it with the exemple I just gave you. It, as I thought, didn't work. When I filled the sign with all the classic informations, once I pressed "done", sign blowned up.
Is there any way to make it or to guide me throughout the process ?
Thanks for that amazing plugin though, it works like a charm ! You guys rock !
The plugin is not made with changing that in mind so implementing that is probably not easily doable without rewriting large portions of how signs and sign validation is handled. You also have to keep in mind that such a long text would most likely not fit on the sign in many cases.
Hi!
Is there any way for multiple people to access the chest that is being used to sell/buy items?
Thanks!
Not directly in the plugin but you might be able to set this up by using LWC for shop chest protection instead of the inbuilt one.
Hello ! I can not use your plugin to sell some items, like the different tree log and I can not sell either pumpkin no carved and there are also the Disc that are impossible for sale. I am in 1.13.2. could you help me?
(Sorry I do not speak English so I use google translation)
What exactly are your issues with them? Make sure that you use the latest development builds for 1.13.2 support.
In reply to Phoenix616:
Which exact plugin and server version are you using? Because this error seems to indicate that you are using a pre 1.13 build on a 1.13+ server.
In reply to Phoenix616:
You have to use the latest development build for 1.13+ support as mentioned at the top of the description .
In reply to Phoenix616:
This didn't Work for me :(
You need to provide a lot more information like what exactly doesn't work, how your sign is set up, what config you use, the log file, server and plugin version...
So I have the shops working fine but I don't have any messages appear beyond the one that appears after creating a shop. I have checked cstoggle and I've enabled everything in the config I can see to send messages in console and chat for notifications and no messages.
Any suggestions?