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)
- 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!
Generally speaking mods can't be supported as the Bukkit API has no concept like that but if you really want to get into that then you'll need to make sure that the mod's signs look the same as the normal ones to the Bukkit API. (e.g. normal sign blockdata and blockstates or even types depending on your version)
I use chestshop and I'm having a problem with taxes. Taxes are being discounted on buy/sell transactions between players, but the money is not going to the server account I have set. I don't think it's a chestshop issue cause any other plugin that has a tax funciton have worked so far (chestshop and quickshop have but only at the very first transaction, and then stopped working). I use essentials, luckperms and I have vault. I don't know what to do
Make sure the user which the server economy account belongs to logged in at least once or that your economy plugin supports fake-player accounts.
When trying to use a chest shop, the shop creates, but when trying to buy from it I get an error that says, "Economy Account does not exist for user".
I've looked everywhere but being new to plugins, i can't anything useful as to how to fix it.
You'll need to provide some more information like your sign setup, your server config (e.g. online or offline mode) and your plugin config. Also your server log might help there.
In reply to torin1237:
Have you installed Vault? If not, get the vault plugin (It helps this plugin and other economy plugins mesh together) ChestShop does not come with a built in accounting system so you will need additional plugins.
Along with Vault, you will also need a money / player account plugin (One of the simplest is gmoney) Use the /gmoney command to create your player account and to see your balance, chest shops should work after that.
Okay i was debating putting this in my factions server due to one question. Will this plug in ad a system where players can make money and have a balance or how exactly does it work?
In reply to the_camper6501:
This plugin makes it possible for players to create a shop and sell their items. For example: I'd go mining and find 12 diamonds, I only need 5 so I sell 7. Someone else might need those diamonds and buy them off me. They'd pay me by clicking the sign and automatically receiving the amount of diamonds configured on the sign.
This plugin only allows buying and selling of items, if you want balances you need an economy plugin e.g. Essentials or CraftConomy3.
I am having a peculiar issue. I am on a server with several friends and we all decided to make some shops in a shopping district. After some time, we decided to revise the shopping area and I used worledit to copy/paste my builds to a different location. Upon doing this, the items that sit on top of the chests stayed at the previous location and are now permanently sitting there, unable to be picked up.
I have tried /kill @e[type=item] which works, however, after some time the items respawn.
I have tried dropping the items out of the world, however, as the previous test, they simply respawn after time.
I have tried burying them, however they appear to pop back up to the surface.
Any help? Thanks all.
ChestShop itself does not place items on top of chests, you might have some other plugin that added that functionality so please contact their authors about that issue.
Players that do not have OP are not allowed to use shops. Im not sure why this is happening, maybe because of another plugin?
Config Flie:
#Do you want to turn off the automatic updates of ChestShop?
TURN_OFF_UPDATES: false
#How large should the internal caches be?
CACHE_SIZE: 1000
#What containers are allowed to hold a shop? (Only blocks with inventories work!)
SHOP_CONTAINERS:
- "CHEST"
- "TRAPPED_CHEST"
#(In 1/1000th of a second) How often can a player use the shop sign?
SHOP_INTERACTION_INTERVAL: 250
#Do you want to allow using shops to people in creative mode?
IGNORE_CREATIVE_MODE: true
#Do you want to allow using shops to people who have access to it due to their permissions? (owners are always ignored)
IGNORE_ACCESS_PERMS: true
#If true, people will buy with left-click and sell with right-click.
REVERSE_BUTTONS: false
#If true, people will be able to buy/sell in 64 stacks while holding the crouch button.
SHIFT_SELLS_IN_STACKS: false
#What can you do by clicking shift with SHIFT_SELLS_IN_STACKS turned on? (ALL/BUY/SELL)
SHIFT_ALLOWS: "ALL"
#Can shop's chest be opened by owner with right-clicking a shop's sign?
ALLOW_SIGN_CHEST_OPEN: true
#If true, when you left-click your own shop sign you won't open chest's inventory, but instead you will start destroying the sign.
ALLOW_LEFT_CLICK_DESTROYING: true
#If true, if the shop is empty, the sign is destroyed and put into the chest, so the shop isn't usable anymore.
REMOVE_EMPTY_SHOPS: false
#If true, if the REMOVE_EMPTY_SHOPS option is turned on, the chest is also destroyed.
REMOVE_EMPTY_CHESTS: false
#A list of worlds in which to remove empty shops with the previous config. Case sensitive. An empty list means all worlds.
REMOVE_EMPTY_WORLDS:
- "world1"
- "world2"
#First line of your Admin Shop's sign should look like this:
ADMIN_SHOP_NAME: "Admin Shop"
#The economy account which Admin Shops should use and to which all taxes will go
SERVER_ECONOMY_ACCOUNT: ""
#Percent of the price that should go to the server's account. (100 = 100 percent)
TAX_AMOUNT: 0
#Percent of the price that should go to the server's account when buying from an Admin Shop.
SERVER_TAX_AMOUNT: 0
#Amount of money player must pay to create a shop
SHOP_CREATION_PRICE: 0
#How much money do you get back when destroying a sign?
SHOP_REFUND_PRICE: 0
#How many decimal places are allowed at a maximum for prices?
PRICE_PRECISION: 2
#Should we block shops that sell things for more than they buy? (This prevents newbies from creating shops that would be exploited)
BLOCK_SHOPS_WITH_SELL_PRICE_HIGHER_THAN_BUY_PRICE: true
#Do you want to allow other players to build a shop on a block where there's one already?
ALLOW_MULTIPLE_SHOPS_AT_ONE_BLOCK: false
#Can shops be used even when the buyer/seller doesn't have enough items, space or money? (The price will be scaled adequately to the item amount)
ALLOW_PARTIAL_TRANSACTIONS: true
#Can '?' be put in place of item name in order for the sign to be auto-filled?
ALLOW_AUTO_ITEM_FILL: true
#Do you want to show "Out of stock" messages?
SHOW_MESSAGE_OUT_OF_STOCK: true
#Do you want to show "Full shop" messages?
SHOW_MESSAGE_FULL_SHOP: true
#Can players hide the "Out of stock" messages with /cstoggle?
CSTOGGLE_TOGGLES_OUT_OF_STOCK: false
#Can players hide the "Full shop" messages with /cstoggle?
CSTOGGLE_TOGGLES_FULL_SHOP: false
#Do you want to show "You bought/sold... " messages?
SHOW_TRANSACTION_INFORMATION_CLIENT: true
#Do you want to show "Somebody bought/sold... " messages?
SHOW_TRANSACTION_INFORMATION_OWNER: true
#If true, plugin will log transactions in its own file
LOG_TO_FILE: false
#Do you want ChestShop's messages to show up in console?
LOG_TO_CONSOLE: true
#Should all shop removals be logged to the console?
LOG_ALL_SHOP_REMOVALS: true
#Do you want to stack all items up to 64 item stacks?
STACK_TO_64: false
#Do you want to use built-in protection against chest destruction?
USE_BUILT_IN_PROTECTION: true
#Do you want to have shop signs "stick" to chests?
STICK_SIGNS_TO_CHESTS: false
#EXPERIMENTAL: Do you want to turn off the default protection when another plugin is protecting the block? (Will leave the chest visually open - CraftBukkit bug!)
TURN_OFF_DEFAULT_PROTECTION_WHEN_PROTECTED_EXTERNALLY: false
#Do you want to turn off the default sign protection? Warning! Other players will be able to destroy other people's shops!
TURN_OFF_SIGN_PROTECTION: false
#Do you want to disable the hopper protection, which prevents Hopper-Minecarts from taking items out of shops?
TURN_OFF_HOPPER_PROTECTION: false
#Do you want to protect shop chests with LWC?
PROTECT_CHEST_WITH_LWC: false
#Do you want to protect shop signs with LWC?
PROTECT_SIGN_WITH_LWC: false
#Should the chest's LWC protection be removed once the shop sign is destroyed?
REMOVE_LWC_PROTECTION_AUTOMATICALLY: true
#Do you want to only let people build inside regions?
WORLDGUARD_INTEGRATION: false
#Do you want to only let people build inside region flagged by doing /region regionName flag allow-shop allow?
WORLDGUARD_USE_FLAG: false
#Do you want ChestShop to respect WorldGuard's chest protection?
WORLDGUARD_USE_PROTECTION: false
#Do you want to deny shop access to unlogged users?
AUTHME_HOOK: true
#Do you want to allow shop access to unregistered users? (Example: registration is optional)
AUTHME_ALLOW_UNREGISTERED: false
#How much Heroes exp should people get for creating a ChestShop?
HEROES_EXP: 100.0
#Add icons and make item names hoverable in transaction messages when ShowItem is installed?
SHOWITEM_MESSAGE: true
OTHER PLUGINS IN USE:
If you use a different permissions plugin then you have to make sure that it is either respecting the default permissions of ChestShop or grant the permissions to them manually. Also I suggest to test the latest dev build of ChestShop as it might fix some issues that you might encounter.
Also please don't post the full config or logs in the future, use a paste service or directly create a ticket. You should also include your server version.
I created a shop successfully but when I click the sign nothing happened ,not even an error .plz help me,and thank you for the perfect plugin.I am not using essentials and have OP permissions.
problem resolved,
cause I tried to buy sth from the shop I created
[22:49:31] [Server thread/ERROR]: Could not pass event ProtectBlockEvent to ChestShop v3.10-SNAPSHOT (build 137)
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:520) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:505) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at com.Acrobot.ChestShop.ChestShop.callEvent(ChestShop.java:440) ~[?:?]
at com.Acrobot.ChestShop.Security.protect(Security.java:26) ~[?:?]
at com.Acrobot.ChestShop.Plugins.LightweightChestProtection.onShopCreation(LightweightChestProtection.java:39) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:520) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:505) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at com.Acrobot.ChestShop.ChestShop.callEvent(ChestShop.java:440) ~[?:?]
at com.Acrobot.ChestShop.Listeners.Block.SignCreate.onSignChange(SignCreate.java:46) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:520) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:505) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:2406) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.PacketPlayInUpdateSign.a(SourceFile:44) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.PacketPlayInUpdateSign.a(SourceFile:10) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:13) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:135) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:114) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:892) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:885) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(SourceFile:123) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:869) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:802) [spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
Caused by: java.lang.IllegalArgumentException: Cannot get ID of Modern Material
at org.apache.commons.lang.Validate.isTrue(Validate.java:136) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at org.bukkit.Material.getId(Material.java:3302) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
at com.Acrobot.ChestShop.Plugins.LightweightChestProtection.onBlockProtect(LightweightChestProtection.java:103) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[spigot-1.14.jar:git-Spigot-4d24e36-5193f76]
... 38 more
[22:49:31] [Craft Scheduler Thread - 1/INFO]: [ChestShop] JakeD777 created a shop - 1 Redstone - B 10:5 S - at [Survival] -335, 63, 41
So I can't have it working with LWC because it gives me this error everytime. and just says In chat "could not create protection" also lets other people open my shop chests when they don't have permission.
In reply to thenarddawg12:
I fixed the issue myself.. but now it won't let anyone buy from my shops. Has anyone else run into this issue? I am using 1.14. Thanks
In reply to thenarddawg12:
I wish there is a way to rate the plugin. The developer is not good at responding to requests or support. I just overall don't like this plugin id give it a 1 out of 5.
If you have issues then please open an issue on github or on the main resource page on SpigotMC.org which is basically the main source for Bukkit/Spigot plugins now. Also you are running an old version of the plugin, please update to the latest development
In reply to thenarddawg12:
You have to know the plugin is very popular and the dev goes through many comments and DMs every day, expecting immediate or even quick support is a little unfair. Additionally, 1.14 is slightly unstable, server-wise.
The plugin works fine for the rest of us and you shouldn't rate it by personal experience, you should have waited until you could find whether or not it's a personal problem or an actual issue. Additionally, this plugin is provided for free, you're not entitled to support or requests. Quite frankly, I'm glad you can't rate this as I'd daresay your rating would be unjustified.
still the best plugin ever, can u update it to 1.14.3? im using 3.10 snapshot, and every time i use a itemid on sign it says im using invalid item id, its so slower using item names