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"! ChestShop supports almost all economy plugins by using Vault!
(Versions above 3.9.2 also support economy plugins using the Reserve API)
Some known compatible and incompatible economy plugins.
Please check if there are newer development builds before reporting issues!
If you are upgrading from a previous version of ChestShop please make sure to always read the warnings in the file's changelog!
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
Permissions
User-made tutorials
Download the latest stable version
Download the latest development version
Download 1.12.2 version
Download 1.8.8 version
Download older versions
API for plugin developers
Source code on GitHub
Crowdin Localization Project
Thread on Bukkit forums
IRC chat (#chestshop on irc.esper.net)
Discord Channel Joining through that invite auto subscribes you to important update notifications, if you don't want that use this invite.
bStats metrics
Additional modules for ChestShop:
ChestShop LegacyIds - allows usage of numeric and old pre 1.13 string IDs on signs
Notification module - to use with Notifications plugin (outdated)
Towny module - to use with Towny plugin
ChestShop Notifier - records all sales, even when the player is offline (Maintained by Phoenix616)
ChestShopTools - Enchantment info signs and empty shop notifier (Maintained by Phoenix616)
Adda - Item display icons above the chest, transaction limit, Discord alerts, per-player shop limit! (User-made)
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, abandoned)
ChestShopListing - Stores shops and transactions in SQL; adds related features including in-game search (User-made)
ChestShopConfirmation - confirmation screen before buying (User-made)
SearchChestShop - search for shops selling certain items (User-made)
BoltChestShop - Add support for Bolt container protections (Made by the Bolt author)
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: | ![]() |
| Leave the first line empty. It 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 |
|
| Resulting Shop | ![]() |
| A person can buy 64 diamonds for 10 dollars and sell them back for 5 dollars from Phoenix616 |
If you want you can also take a look at this video tutorial.
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
- /iteminfo - Get information about the item in your hand
- /iteminfo <id/name> - Get information about the item with the given id or name
- /shopinfo - Get information about the looked-at shop
- /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)
- /csaccess - Toggles ability to buy/sell on shops while having admin/access permissions and normally being ignored
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 | |
| 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:
- AuthMe (and forks like AuthMe Reloaded)
- WorldGuard
- Residence
- LWC (and forks like LWCX and Modern-LWC)
- Lockette
- LockettePro
- Deadbolt
- SimpleChestLock
- OddItem
- Heroes
- ShowItem
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. (You can also fund them via IssueHunt!)
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 or buy Phoeni616 a beer! :)
A shout-out to Acrobot's friend:
We believe that the music he makes is really stunning - you can decide it for yourself!
If you have an issue then please open a ticket on GitHub or post on SpigotMC.org for faster replies to questions!


-
View User Profile
-
Send Message
Posted Jul 17, 2012-
View User Profile
-
Send Message
Posted Jul 17, 2012-
View User Profile
-
Send Message
Posted Jul 17, 2012@Acrobot Any chance you can update the main post to be a little more obvious that it supports other economy plugins than iConomy, such as EssentialsEco.
I see like 2 or 3 questions per day about this in some of the IRC support channels.
-
View User Profile
-
Send Message
Posted Jul 16, 2012@imaxorz :)
@LevveGames @deancohen1994 ... Did you even TRY to search for this? It's in the "Frequently Asked Questions" section.
-
View User Profile
-
Send Message
Posted Jul 16, 2012@Acrobot
Just want to report back that that error is finally gone. You have no idea how happy I am, ha.
-
View User Profile
-
Send Message
Posted Jul 16, 2012@LevveGames
i have this problem too is there a fix coming soon for now ive set shop make prices insanely high
-
View User Profile
-
Send Message
Posted Jul 16, 2012The permission nodes doesn't seem to work properly for me.
When I give the group that is allowed to create shops they are able to, just like it should be. The thing is that the lower ranks also are able to create shops, even though I have only given them the permission nodes to buy and sell.
Group that is allowed to create shops has this node: ChestShop.shop.create The lowest rank has this: ChestShop.shop.sell and ChestShop.shop.buy
Any solutions?
-
View User Profile
-
Send Message
Posted Jul 15, 2012I have a problem :(
2012-07-15 18:22:21 [SEVERE] Could not pass event SignChangeEvent to ChestShop
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:460)
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:1266)
at net.minecraft.serverhook.NetServerHandlerProxy.a(NetServerHandlerProxy.java:217)
at net.minecraft.server.Packet130UpdateSign.handle(SourceFile:41)
at net.minecraft.server.NetworkManager.b(NetworkManager.java:229)
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:113)
at net.minecraft.serverhook.NetServerHandlerProxy.a(NetServerHandlerProxy.java:83)
at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78)
at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:567)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:459)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
Caused by: java.lang.NumberFormatException: For input string: &quot;Laz&quot;
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:438)
at com.Acrobot.Breeze.Utils.MaterialUtil$Enchantment.getEnchantments(MaterialUtil.java:246)
at com.Acrobot.Breeze.Utils.MaterialUtil.getEnchantments(MaterialUtil.java:229)
at com.Acrobot.Breeze.Utils.MaterialUtil.getItem(MaterialUtil.java:182)
at com.Acrobot.ChestShop.Listeners.Block.SignChange.onSignChange(SignChange.java:43)
at sun.reflect.GeneratedMethodAccessor250.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)
... 12 more
-
View User Profile
-
Send Message
Posted Jul 15, 2012@imaxorz Nice :D
@seane96 Seems like a problem with enchantments, but well - I can't really tell, because you haven't posted the necessary information and you haven't posted it in the "Tickets" section.
-
View User Profile
-
Send Message
Posted Jul 15, 2012I got 3.46 today and I had it for about 8 hours now, and I have yet to see the "duplicate primary key" error spam that I used to get all the time. :D
-
View User Profile
-
Send Message
Posted Jul 15, 2012Hey I Have A Error :(
-
View User Profile
-
Send Message
Posted Jul 15, 2012@Mystra007 Sorry, but - 1 and 2 - I'll revert it, I have both jars on my PC (and there are some on the net), and Heroes is correct, but it's for the DEV version of Heroes.
RestrictedSign.java was already renamed, but git didn't pick up the name case-change.
For the tax, the way I see it - SELLER (no matter if it's a shop or not) pays the SELL tax, and BUYER (no matter if it's a shop or not) pays the BUY tax.
The rest seems fine, altough I think that the way that your tax works (which is honestly not as real-life, because the price on sign should be the brutto price, not netto) could be changed, so the tax is included in the price.
Also, 1 000 000 BUKKITDEV downloads! Thanks everyone!
-
View User Profile
-
Send Message
Posted Jul 14, 2012@mrchasez
AFAIK there is only one: http://dev.bukkit.org/server-mods/iconomy/
And the version on that link is 6, 7 is an april fool.. it fix two minor bugs
-
View User Profile
-
Send Message
Posted Jul 14, 2012Where can i find a working iConomy?
-
View User Profile
-
Send Message
Posted Jul 14, 2012The sales tax seem to work:
@Acrobot: I had to remove a few files to be able to compîle:
- couldn't find Lockette and ICon 5 on the Net
- There was a method mismatch with heroes:
hero.gainExp(heroExp, HeroClass.ExperienceType.EXTERNAL event.getPlayer().getLocation());
but the Heroes 1.4.7 version on bukkit dev only support 2 arguments, and the Heroes 1.4.6 version doesn't have the correct package structure
to work with the current Heroes.java file.
- I had to rename the file holding the class RestrictedSign from restrictedSign.java to RestrictedSign.java to match the name of the class.
I'll make sure the pull request is clean later.
---------------------
file: config.yml
---------------------
SERVER_ECONOMY_ACCOUNT: "statworld001"
#The economy account which Admin Shops should use
SERVER_TAXES_ACCOUNT: "stateworld001t"
#The economy account in which all taxes will go. Can be the same as SERVER_ECONOMY_ACCOUNT
SALES_TAX_AMOUNT: 15
#Percent of the price from an item sold to a player that should go to the server's account. (100 = 100 percent)
BUY_TAX_AMOUNT: 0
-------------------
file: local.yml
-------------------
YOU_BOUGHT_FROM_SHOPWTAX: "You bought %amount %item from %owner for %price + %tax in taxes = %totalprice."
You bought 64 Cobblestone from Admin Shop for 32.00 credits + 4,81 credits in taxes = 36,81 credits
What would you prefer for the purchase tax that is already in and paid by the player at the moment?
1) players pay the purchase tax
2) shops pay the purchase tax since the players pays the sales tax and the purchase tax is an "upkeep" fee from the server charged to the shops
Should I add:
SERVER_SALES_TAX_AMOUNT
SERVER_BUY_TAX_AMOUNT
For the tax amount charged in the admin shops?
-
View User Profile
-
Send Message
Posted Jul 13, 2012@re4397
Create a ticket for the bug. Click "Tickets" at the top of this page.
-
View User Profile
-
Send Message
Posted Jul 13, 2012This plugin have some bug , the players can get any amount of money.
-
View User Profile
-
Send Message
Posted Jul 12, 2012@Mystra007 Honestly, that's awesome. There is a purchase tax already, but you're right - there should be a message about the tax too.
I don't know how you plan on making the "tax whitelist", but I'd prefer if you included it in a separate file, not the config.
For BOSE bank modification - I'm afraid that's impossible. BOSEconomy uses a different bank system than other plugins, and I'm not coding for BOSEconomy specifically - I'm using Register and Vault.
Feel free to make pull request on Github, but I might change your code to fit the project better.
-
View User Profile
-
Send Message
Posted Jul 11, 2012TO ACROBOT: this isn't a feature request. I'd rather not be part of the "problem" by just providing suggestions. When I make a suggestion I like to join a code that work with them.
I'm planning to implement those features in my local version of Chestshop:
- Sales tax Tax in the current version(I tested with admin shops) is charged when a player sell an item to a shop. It is a _purchase tax_. Also the player isn't told what amount has been deduced from the price. For example if I sell an item for 0.35$ to an admin shop and the tax is 0.05$ the message tells me I sold the item for 0.35$ but only 0.30$ is added to my account).
- Buy/sell messages with support for the %tax token so you can make sale/buy message including the taxes paid on an item.
- Tax 'whitelist' : a list of itemids / blockids on which tax isn't charged (useful if you want to use gold ingot/diamond as a "trade item").
- Modification of the BOSEconomy interface to use a bank account for the server account instead of a player account. That way the account can be used in BOSE regardless of wheter a player named after the account exists or not (in IConomy the account isn't linked to a player like in BOSE).
I'd like to know if anyone else finds these features useful?
CraftBukkit 1.2.5-R4.1-MCPC-SNAPSHOT (171) "I haz a bukkit"
-
View User Profile
-
Send Message
Posted Jul 11, 2012v3.46 for CB 1.2.5-R4.0
[SEVERE] Could not pass event BlockBreakEvent to ChestShop
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:460)
at net.minecraft.server.ItemInWorldManager.breakBlock(ItemInWorldManager.java:220)
at net.minecraft.server.ItemInWorldManager.a(ItemInWorldManager.java:175)
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:518)
at net.minecraft.server.Packet14BlockDig.handle(SourceFile:43)
at net.minecraft.server.NetworkManager.b(NetworkManager.java:229)
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:116)
at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78)
at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:567)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:459)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
Caused by: java.lang.NullPointerException
at org.bukkit.craftbukkit.block.CraftSign.<init>(CraftSign.java:17)
at org.bukkit.craftbukkit.block.CraftBlock.getState(CraftBlock.java:227)
at com.Acrobot.Breeze.Utils.BlockUtil.isSign(BlockUtil.java:18)
at com.Acrobot.ChestShop.Utils.uBlock.findValidShopSign(uBlock.java:40)
at com.Acrobot.ChestShop.Listeners.Block.BlockBreak.cancellingBlockBreak(BlockBreak.java:40)
at com.Acrobot.ChestShop.Listeners.Block.BlockBreak.onBlockBreak(BlockBreak.java:63)
at sun.reflect.GeneratedMethodAccessor197.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)
... 12 more