BetterShop
BetterShop - The "Better" Global Shop
Version: 2.1.6.4
Global command-based shop. At a glance: buy/sell, vault-compatible, configurable stocking options, MySQL compatible, configurable item aliases, multiple shop custom interfaces (signs, chests, spout), enable/disable by regions, buy/sell by custom categories, can buy configurable kits of items, configurable item sorting, optional discount groups, can optionally buy items stacked to 64, not just at default stack, and more!
this plugin was originally created by jjfs85, but has since quit development
Features:
- any item can be bought / sold
- can define kits (with custom amounts) (can't sell)
- can define item categories (buy/sell)
- entities (animals, monsters, etc) can also be bought (can't sell)
- Spout-Compatible
- shop listing can be viewed on a popup screen
- configurable access keys, default is 'B'
- can be disabled in regions
- defined using WorldEdit selections with "/shop region define [name]"
- option in config to reverse regions, so regions are only ares where shop is enabled
- multiple interfaces available
- commands
- signs
- chests
- spout
in more detail:
Plugin Support
for economy, currently dependent on one of:
- iConomy
- BOSeconomy
- Essentials
- MultiCurrency
- (or Vault)
also supports:
- Permissions
- SuperPerms
- Spout
- Help
configurable
- Fully configurable colors and message text in config.yml file
- shoplist can have text alignment (read config for more info): <item> <l(eft-aligned)> <buy and sell info>
- uses minecraft font character spacing, so is very close to perfectly aligned in chat
- shoplist can optionally not show listing tail (or head, but recommended to leave <page> of <pages>)
- Items can be colored in the new itemsdb.yml file
- items can also be assigned custom names & aliases
- also in itemsdb.yml: kits!
- define your own kits that the shop can sell
- three examples provided, edit and add to your liking
- Configurable Options:
- max pagesize when printing shoplist
- whether to broadcast all transactions publicly
- name of the pricelist file/table
- customsort: a custom sorting order, so you can have items at the top of the shop list
- allowbuyillegal: if someone without BetterShop.admin.illegal can buy illegal items
- whether maxstack should be honored
- if used tools can be bought back
- default color for items
- and more!
shop flexibility
- shopcheck will run a name comparison check, and return all matching items
- Item sub-type support for dye colors, cloth colors, etc: magentacloth = 35:2 = cloth:magenta
- "all" is a valid amount when buying or selling: "/sell cobblestone all" or "/sell all cobblestone"
- damaged tools can be resold for an adjusted value of sellprice*(1-(damage/maxdamage))
- buystack can be given multiple items, or number of stacks: "/buystack wool 5" or "/buystack wool blackdye reddye"
- shopsellall can be given multiple items (/sell all cobble gravel flint dirt)
- plural-insensitive items: if not found, will check if plural & remove "s"
- not just items can be bought anymore: can now buy LivingEntities, like dogs (wolf)
- signs can be used for buying & selling
- first line: [BetterShop] (not case-sensitive)
- second line: action: buy [amt], buyall, buystack, sell [amt], sellall, sellstack
- third line: item (name, id, etc)
- fourth line: can define a custom price (if amount = "all", per-unit, else for total cost)
- to activate, someone with BetterShop.admin.makesign must click the sign.. the first line will change color when active
- left-click for price check, right-click to buy/sell
- if a unauthorized player destroys a block a sign is on, is canceled
- item categories
- can search for items by category (in shoplist)
- players using Spout (if installed & enabled) can use a GUI Menu for buying & selling
- default button is 'b'
- displays items in shop in top half
- item detail below with # in stock, buy/sell price, & buttons to buy & sell
- amount to buy/sell can be set in text box or with up/down buttons
administration
- Every item and subtype can be priced differently
- Disable buying or selling of an item by giving it a price of -1 (0 makes it free)
- command aliases to stop carpal tunnel
- many commands have sub-aliases.. eg. shoplist kits will run shoplistkits
- MySQL pricelist support
- MySQL pricelist can be cached for a given timespan (decreases table selects) (flatfile is cached until manually updated)
- Transaction records (MySQL or flatfile as .csv)
- Downloads mysql-bin.jar dependency automatically
- buy/sell cap in program set to 999,999,999 (not that you'd be using that much, but the cap is to prevent other errors)
- can backup the current pricelist: /shop backup
- can restore from backup: /shop restore <file>
- can import new prices in a batch from a csv (or old yml format) : /shop import <file>
- on start, can check the download page to see if there is an update available
- shop can be given a finite stock from which to buy & sell
- /shop ver[sion] to check the current version & see if there's an update
- /shop update to manually download & install the most recent version
- checks for missing & unused configuration nodes
- strings have default values if missing
- help main page integration can be disabled
- global shop can be disabled & only allow signs to be used
- can use permissions to define discounts for certain users
- uses nodes in "BetterShop.discount.xxxx"
- nodes defined in config under discountGroups
- ex: discountGroups:
- VIP: 10 # gives 10% discount to players with BetterShop.discount.VIP
- support for bukkit permissions
- built-in support for "BetterShop.(user|admin).*" nodes, so you don't have to add all of the other nodes
- plugin tracking - please keep enabled so i can see how many actually use this and if it's even worth maintaining
Commands
- /shop <command>
- for those used to a plugin having one command, this is another way to get to the following (also used for some admin commands)
- /shop ver[sion]
- shows version # and if is up-to-date
- /shop backup
- backup the database to a csv file
- /shop import <file>
- insert values from file in plugin folder
- /shop restore <file>
- clear shop & load from saved backup file
- /shop restock
- manually update stock (if enabled)
- /shop update
- OP-only command that forces update & restarts server plugins
- /shop region define <name>
- uses the player's WorldEdit selection to define a shop region
- /shop region remove <name>
- remove a region definition
- /shop region list [page]
- list current regions
- /shop chest define
- set the chest in the crosshairs to a shop chest
- /shop chest edit
- open the shop chest for editing
- /shop chest remove
- remove the chest shop status
- /shophelp (shelp) [command]
- shows you all the commands you can use, or more help on [command]
- /shoplist (sl,slist) [pagenum]
- shows a listing of items for sale (if -1, all, or full given, will show full list. (for console use))
- /shopitems (sitems)
- show full listing of items in shop, without prices
- /shopcheck (sc,scheck) <item> [amount]
- lookup a specific item so you don't have to read through pages of prices
- /shopbuy (buy,sbuy) <item> [amount]
- buy an item for the price in the shopshop ("all" is accepted as an amount)
- /shopbuyall (buyall,sbuyall) <item>
- buy all of an item that you can hold
- /shopsell (sell,ssell) <item> [amount]
- sell an item for the price in the shop
- /shopadd (sadd): <item> <buy> [sell]
- add an item to or update an item in the price list
- /shopremove (sremove) <item>
- remove an item from the price list
- /shopload (sload)
- reload prices from pricelist database
- /shopsellall (sellall) [inv] [item [...]]
- Sell all of item from your inventory (alias to command /shop sell all) (inv will not search lower 9 slots)
- /shopbuystack (buystack) <item> [item | amount]
- buy a stack of an item (usually 64)
- /shopsellstack (sellstack) <item> [item | amount]
- sell a stack of an item (usually 64)
- /shopbuyagain (buyagain,sba)
- repeat last buy action
- /shopsellagain (sellagain,ssa)
- repeat last sell action
- /shopkits (skits)
- show a listing of available kits (will be elaborated later)
- /shop alias <item>
- show the itemname, with a list of aliases
Permissions
- BetterShop.user.*
- Allows the user to use the list, sell, buy, and help commands
- BetterShop.admin.*
- Allows the user to use the add, remove, and load commands
There are other nodes that allow only more specific permissions, but I recommend using the above.
- BetterShop.user.list
- look through shop listing of prices
- BetterShop.user.check
- check the price of item(s)
- BetterShop.user.help
- view ingame help menu
- BetterShop.user.buy
- buy items from the shop
- BetterShop.user.sell
- sell items to the shop
- BetterShop.user.spout
- for spout screen access
- BetterShop.admin.add
- add/edit items to/in the shop
- BetterShop.admin.remove
- remove items from the shop
- BetterShop.admin.load
- reload configuration & pricelist
- BetterShop.admin.info
- show shop stats (only version number right now)
- BetterShop.admin.illegal
- gives the ability to purchase 'illegal' items
- BetterShop.admin.backup
- backing up and restoring the pricelist
- BetterShop.admin.restock
- manually restock (if item stock is enabled)
- BetterShop.admin.makesign
- make/remove a bettershop sign
- BetterShop.admin.region
- define/remove shop regions
- BetterShop.admin.chests
- define/remove chest shops
doesnt work on 1.12 fix your shit
hi there,
well if i want to add an item to the shop with {example} /shop add stone 5 2.5 it keeps saying an error occured while adding!
am i doing something wrong? or did i forget anything? could you help me please.
thanks
Hi there. Is there a way to setup so players can buy a permission? Like if I wanted them to purchase the permission that allows them to spawn a guard villager from another plugin? Thank you
/shop chest define
gives me this: [18:12:54 ERROR]: [BetterShop] Error executing a command
java.lang.NullPointerException
at me.jascotty2.bettershop.commands.ChestCommands$Commands.define(ChestCommands.java:54) ~[BetterShop.jar]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79]
at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
at me.jascotty2.lib.bukkit.commands.CommandManager.executeMethod(CommandManager.java:364) ~[BetterShop.jar]
at me.jascotty2.lib.bukkit.commands.CommandManager.executeMethod(CommandManager.java:342) ~[BetterShop.jar]
at me.jascotty2.lib.bukkit.commands.CommandManager.executeMethod(CommandManager.java:342) ~[BetterShop.jar]
at me.jascotty2.lib.bukkit.commands.CommandManager.execute(CommandManager.java:270) ~[BetterShop.jar]
at me.jascotty2.bettershop.BetterShop.onCommand(BetterShop.java:225) [BetterShop.jar]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:740) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.PlayerConnection.handleCommand(PlayerConnection.java:957) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:818) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-13-gf6dffcf-b3102jnks]
Help,how I create a signal shop ? ON 1.8.
Hi, I am new to this plugin and was wondering why this error keeps coming up and stopping me from using any commands. 13.08 22:45:13 [Server] ERROR Error occurred while enabling BetterShop v2.1.6.4 (Is it up to date?) 13.08 22:45:13 [Server] INFO BetterShopItemStock.csv loaded.
I am using iconomy with this plugin. Anyhelp please.
Hi, is there a way to change the sign format for example change [bettershop] (on the sign) to [ServernameShop] ? Thanks for listening
@BtheDestroyer
Yeah, but you can't add items newer than 1.6.1, like the new Trees and stuff like that. Also, there ARE some Bugs, if you haven't seen them, good for you, but it does need to Update, unfortunately, as Chaz said:
@Chaznuts
Hey, first off I am new here and I hope this is the right place to post this. I looked for something on the rules but I didn't see anything to do what I am looking for with the comments section. Go easy on me. But my problem is I need help, I would like it if somebody directed me to a pre-made BetterShop.csv. I found an example last night on a forum post, but a Diamond Pickaxe costs about $5.00 and 1 dirt sells for $1.00 . I want a little bit of a better price for diamond tools like that, because I don't want somebody coming on my server, dig up 500 dirt, and sell it for diamonds. If anybody has a pre-made price list they could share me or direct me to, that would be great! ^_^
hello everyone, do I have to enter each item manually??? My items lists are blank... thanks.
First of all, it works fine on 1.7.2 so stop complaining. I'm using it now and it's working great. Secondly, does anyone know how to make a chest shop? I've tried a few times but it doesn't work the way it used to.
!PLEASE UPDATE!**
Please update to 1.7.2
Probably not going to be an update unless someone sponsors jascotty2 to do so. He's busy with his job and has been out of the MC scene for a long time already. Only reason an update was released back in July was because he was sponsored to do so. Sorry guys! RIP BetterShop...
Please update this i need it so much!!
@CptProphets
My server is doing the same now after an update to a 1.7.2 build. I believe we just have to wait out an update. Then we will have the new items of minecraft in the shop as well.
Please help me ! Whenever I try buying something for /shop buy <item > , it keeps saying ' You tried to buy 1 too many.. you can only have 0 <item> more ' Please help me!
@PatiV8
Oh, it works perfectly. Just ignore the message.
please update to bukkit 1.6.4 PLEASE ineed this my server
Report
12:51:33 [SEVERE] Error occurred while enabling BetterShop v2.1.6.4 (Is it up to date?)
12:51:33 java.lang.NoClassDefFoundError net/minecraft/server/v1_6_R1/IInventory
12:51:33 at me.jascotty2.bettershop.BetterShop.onEnable(BetterShop.java:122)
12:51:33 at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
12:51:33 at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
12:51:33 at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
12:51:33 at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:284)
12:51:33 at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:266)
12:51:33 at net.minecraft.server.v1_6_R3.MinecraftServer.l(MinecraftServer.java:315)
12:51:33 at net.minecraft.server.v1_6_R3.MinecraftServer.f(MinecraftServer.java:292)
12:51:33 at net.minecraft.server.v1_6_R3.MinecraftServer.a(MinecraftServer.java:252)
12:51:33 at net.minecraft.server.v1_6_R3.DedicatedServer.init(DedicatedServer.java:152)
12:51:33 at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:393)
12:51:33 at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
12:51:33 Caused by: java.lang.ClassNotFoundException net.minecraft.server.v1_6_R1.IInventory
12:51:33 at org.bukkit.plugin.java.PluginClassLoader.findClass0(PluginClassLoader.java:70)
12:51:33 at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:53)
12:51:33 at java.lang.ClassLoader.loadClass(Unknown Source)
12:51:33 at java.lang.ClassLoader.loadClass(Unknown Source)
there is a bug buying golden apples and god apples if you use /buy 322:1 it will give you a regular one