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 - Adds item display icons for shops above the chest! (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)
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)
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!
@Acrobot
This is why I was asking about iConomy itself. Is iConomy no longer developed on? If so, does it support multiple worlds? And when you say it supports multiple worlds, is it as I asked earlier, being "money given to the shop stays in the receiving player's wallet associated with the world that shop is in"?
Hear me out, this seems confusing to talk about, but in practice it's the most obvious, most annoying thing:
If player1 is in worldA and buys from player2, but player2 is in worldB, does that money STAY in worldA or does it deposit to player2 regardless of world?
@roracle ChestShop supports multiple worlds, it is just a question whether your economy plugin supports multiple worlds.
Sorry for not replying to more tickets - seriously low on time.
@KevinEssence ChestShop has supported name changes for a long time - just do /iteminfo and put that on the sign.
STILL waiting to hear about this:
I'm using multiple worlds and keeping inventory separate, and would like to keep economy separate, too. Does iConomy + iConomy Chest Shop allow for this, or should I seek elsewhere?
I would like to ask for help! I would like to make a dress shop where painted leather armor traitor. However, the smooth skin id is not good .. What are the sales-colored leather ID?
Does this not support name changes yet?
Why TAX_AMOUNT work only when i set it to 10, 20, 30, 40, 50, 60, etc... ?? And don't work when 8, 15, 37....
And SERVER_TAX_AMOUNT does not work! Or maybe i don't understand what this do? But looks like don't work...
I used CraftBukkit version git-Spigot-2f787bd-ea28011 (MC: 1.8.3) (Implementing API version 1.8.3-R0.1-SNAPSHOT)[m
CS version 3.8.11
P.S. and it's stupid when u have Server Economy Account and can't off taxes when u sell to Admin Shop... Cause it's looks like you pay for your item from your taxes)) lol
@gabeeroo51803
Please explain the issue. Stating that car doesn't move doesn't tell us what is wrong. Such as, does it start, does it make noise, can you turn the key, is there fuel in the tank, can you enter the car?
Just an example of what I mean.
Reposting my last message, anyone else having the following issue?
http://gyazo.com/a7ee9cc1d67466f2e0e9bd79225cfc97
To expand, when someone is selling to the shop, it will either sell for 1 or the set amount on the sign, but all at the same price.
@gabeeroo51803
Sewing is what you do with thread and a needle. Also, it isn't in good practice to threaten legal action against people with a gigantic disclaimer on their site about what you're downloading/using.
Wtf this thing is not working please help the chest shop does not work how come you better tell me soon or I will sew you
This is a great plugin to create stores, uses it on my server! :D
Also I don't know if there is alot of this yet, but I did a video tutorial explaining how you can use chestshop your self. :)
Hope you don't mind.
Link: https://www.youtube.com/watch?v=EnC0PJSkIDU
i dosnt even work
Acrobot, thanks for fix the bugs. I like you!
Can you add colors to sign text?? And can you fix id on sign and on shop interactions messages? Players sometime don't understand what they buy/sell, because some id is incorrect!
For example: Dark Oak Wood in sign text visualising as Wood:5 and in shop message as Redwood Wood
Is there anyway to get data out of this? Whats bought and sold to the admin shops etc?
I notice this is called "iConomy Chest Shop" so I have a few questions:
This requires vault, though it shouldn't if I'm using iConomy?
Multi-world/multi-currency support: does it actually work properly? (ie: player1 buys from player2 in worldA, player2 is playing in worldB but his balance in worldA is changed)
If you do not really support multiple worlds, why (like others) would you say you do?
@TheFenixFire Sorry for not responding in the comments, professional life unfortunately recently gets into the development of ChestShop.
There is not much I can do with BlockPhysicsEvent. It basically is there so no sign attached to sand/gravel can be broken just by TNT/breaking sand beneath. It is also there so the shop owner can destroy the block and ChestShop will let him do it.
I am trying my best - believe me. However again, my time is limited and I just cannot work on ChestShop as often as I could before.
I was trying to explain to @hutt132 that having 32,913.0k (== 32,913,000) events fired in 40 seconds is bad and it is not ChestShop that causes the lag, but it seems like it is falling on deaf ears. Well, there is nothing else I can really say. I will be trying to improve ChestShop's performance, however the remaining miliseconds will still "lag", according to some.
EDIT: Also, SignBreak.onSign(BlockPhysicsEvent) does not care for falling sand/gravel, it cares for the signs that are "popping off" - the events I am checking are fired for signs.
I'm not sure what's causing this, but it's been happening a lot.
http://gyazo.com/a7ee9cc1d67466f2e0e9bd79225cfc97
@hutt132
I agree with you. That issue is happening on multiple servers, and whenever I do profiling, it always seems to be from ChestShop's event listeners.
HOWEVER, some things need to be made clear.
1) It might be true that the only way ChestShop can do what it does is by using the BlockPhysicsEvent listener.
2) ChestShop has NO control over how many times that event is triggered on a server. If the server does wacky things, even if a DIFFERENT plugin triggers that BlockPhysicsEvent, ChestShop has no control over it.
3) With regards to your comment " If you insist on using BlockPhysicsEvent, at least have it trigger only when sand and gravel fall, instead of every time a piece of redstone turns on and off or vines grow." There is no way to do that. When an event listener is created for an event, like BlockPhysicsEvent, there is no way to tell it "Only listen to that event if these conditions are met ...". You need to have a method that is an event listener (which will ALWAYS be called when that event is triggered, no matter what), then inside that method, you need to test it for the conditions you want.
That being said, I DO think that the ChestShop author needs to look at either writing the event listener in a more friendly fashion in order to handle servers with a high level of BlockPhysicsEvents, OR he needs to see if the same things can be done with a DIFFERENT event, and stop using BlockPhysicsEvent.
@Acrobot, would you at least be amenable to looking into those two options? Thank you.
Acrobot
Jun 25, 2015 at 15:27
"No, I cannot make it not handle it. Really the issue is not with ChestShop. As you can see, it takes 7.23 ms to process an event - a really short time."
http://timings.aikar.co/?url=11814683
"Average Players: 10.42 - Average TPS: 13.15"
"ChestShop v3.8.10 Total: 39.452 s Pct: 16.84%"
And Acrobot claims the issue isn't with ChestShop...
This is ridiculous. SignBreak::onSign is being called with every physics event. This needs to be addressed. Multiple people are having the same exact issue. If you insist on using BlockPhysicsEvent, at least have it trigger only when sand and gravel fall, instead of every time a piece of redstone turns on and off or vines grow.
The plugin dev hasn't responded to my ticket in a while. Anyone else have a solution to this 16 characters long username problem? http://dev.bukkit.org/bukkit-plugins/chestshop/tickets/1049-username-16-characters-long/