GlobalMarket
GlobalMarket is a global market system. It allows players to buy and sell items via a convenient in-game interface. It's similar WoW's Auction House or Runescape's Grand Exchange. I created this plugin awhile ago (back in the days of WebAuction, it's what inspired me) for private use, but I've decided to release it to the public. This plugin requires Vault and ProtocolLib, other than that, just drop it in plugins (make sure you have Vault plus a supported economy plugin installed) and start trading!
Features
- Players can put any item up for sale using a dead simple in-game GUI system (see below)
- Uses ProtocolLib for proper item serialization that supports Bukkit, Spigot, and Cauldron
- Real time interface, all trades show up immediately without having to 'refresh' or close the GUI
- No maintenance or admin interaction required
Mailbox system that allows you to set up market areas or auction houses(not currently in 2.0.0)A built in price guide that compiles average prices from previous transactions(not currently in 2.0.0)
Latest Dev Build
Development builds of this project can be acquired at the following continuous integration server.
These builds have not been approved by the BukkitDev staff. Use them at your own risk.
http://build.survivorserver.com/job/GlobalMarket%202.0.0/
Changelog
Usage
- The Interface
- This is a display of all current listings, you click an item to buy it. You can shift+click to remove a listing if you own it, or if you have the "globalmarket.listingsadmin" permission. Listings automatically expire after 1 week (configurable). You can use
/marketto access the menu.

- Stock
- When you purchase an item it will be sent to your stock. Stock is an entirely optional system but is suggested to be enabled, as disabling it will disable certain other features like
/market send. The stock system can hold a configurable amount of stacks of items in a configurable amount of slots. Once you place an item in your stock, you can list it to be sold to other players. Players can also send items to other players' stock via/market sendif they have the "globalmarket.command.send" permission.

- Server Listings
- You can create 'infinite listings' that do not expire and can't be bought out. Create them with
/market createinf <price> <[amount]>. There's a dedicated section to server listings in the Market menu. You'll need the "globalmarket.command.createserverlisting" permission to do this. Or you can disable this system all-together in the config.
Commands
| Command | Description | Permission |
|---|---|---|
| /market | Opens the Market menu. | globalmarket.use |
| /market ? | Shows command help. | <no permission> |
| /market send <player> <[amount]> | Sends the item you're holding to <player>'s stock. Amount is optional. | globalmarket.command.send |
| /market createinf <price> <[amount]> | Creates a server listing. Amount is optional. | globalmarket.command.createserverlisting |
| /market reload | Reloads config.yml | globalmarket.command.reload |
Permissions
- globalmarket.use - base permission, required to use /market
- globalmarket.listingsadmin - ability to remove all listings
- globalmarket.command.send - ability to use /market send
- globalmarket.command.createserverlisting - ability to use /market createinf
- globalmarket.command.reload - ability to use /market reload
Config
All config values have comments that explain what they do in config.yml, how convenient for me!
If you wish to blacklist items from being used on the Market, there is blacklist.json. You can add material values with meta values:
- APPLE:0 - blacklist apples
- INK_SAC:-1 - blacklist all dies
If you're running Cauldron, you can do things like:
- oredict:ingotSteel - blacklist any item with an OreDictionary value matching ingotSteel
- extracells:storage.component:-1 - blacklist all ExtraCells storage cells
Locale
Virtually every string in the plugin is editable via the "en_US.json" file, inside the plugin's JAR. It's pretty straightforward to edit. Don't replace or edit the %s or %1$s's, these are variables. For example, "Item sold: %s" would appear as "Item sold: Cobblestone" in-game. You can add/edit colors by typing & plus a color code. So light green (the color code is a) would be &a. You can find color codes here: http://ess.khhq.net/mc/
You can also create an entirely different language set, name it something like ch_CN.json, stick it in the server's JAR, and change the appropriate config value in config.yml to use it.
Source
https://github.com/Dasfaust/GlobalMarket
That's all for now. Sorry if things are unclear, I'll be updating this page with more information periodically. If you're stuck just add a reply and I'll do my best to help!
-
View User Profile
-
Send Message
Posted Feb 25, 2014Erro log of version 1.3: http://pastebin.com/t7J33eTT
-
View User Profile
-
Send Message
Posted Feb 25, 2014Where are the new permissions located?
-
View User Profile
-
Send Message
Posted Feb 24, 2014@Grant1204
Hmm I wouldn't know why. Is there anything specific I can do to reproduce it?
@mal67
Yeah, it's "globalmarket.seeannounce"
-
View User Profile
-
Send Message
Posted Feb 23, 2014is there a permission required for users to see the market announcements on new creation?
-
View User Profile
-
Send Message
Posted Feb 20, 2014@xdasfaust
No, there were no errors.
-
View User Profile
-
Send Message
Posted Feb 20, 2014@kiracookie
What's not working?
@Grant1204
There's probably a max lore limit. I'll do some tests and fix it. As for mail not saving in 1.2.2 were there any errors at all? Maybe on startup/shutdown, exception in task, etc.
-
View User Profile
-
Send Message
Posted Feb 20, 2014I hope this gets fixed soon; I used it on a 1.6.4 server and i really love the GUI of it all. It looks like one of the best market plugins I've both seen, and used.
-
View User Profile
-
Send Message
Posted Feb 19, 2014If you add items with excessive lore/potion effects, the notification that says something was added to the market (Tested with Dev Build #126 and #125) and crashes the client when you hover over the added item tag.
Item Tested: https://www.dropbox.com/s/ld3vl75dxdriy80/Special%20Item.png
I had to update to #126 because in GlobalMarket v1.2.2, when the server restarts it sometimes re-add items that were removed from mail, effectively duping any item. I hope this is still not present in #126
-
View User Profile
-
Send Message
Posted Feb 19, 2014@xdasfaust
Thanks fix bug
is work :D
-
View User Profile
-
Send Message
Posted Feb 19, 2014@ircopdd
Thanks, should be fixed in build #126.
-
View User Profile
-
Send Message
Posted Feb 19, 2014big bug
please fast fix
my bank money is $1
Left-click $100 item and key num 1 or any number
can be get free item
and Bank money Negative number $-100
-
View User Profile
-
Send Message
Posted Feb 17, 2014@S4BRE
Well if you're using older than build #94 or so you may need to delete the DB before upgrading, due to a schema change. But try upgrading, if there is an error during loading try resetting the DB. This only affects SQLite. The "couldn't find item" bug was fixed awhile back.
-
View User Profile
-
Send Message
Posted Feb 17, 2014i assume an older one, is it possible to get the data from the old db?
-
View User Profile
-
Send Message
Posted Feb 17, 2014@S4BRE
Well, are you using the latest build or is it older?
-
View User Profile
-
Send Message
Posted Feb 17, 2014@xdasfaust
GlobalMarket-1.3.0-SNAPSHOT.jar
how do you want me to send the db?
-
View User Profile
-
Send Message
Posted Feb 17, 2014@hawkfalcon
The dev builds do something very similar, items from the same seller that have the same price get stacked into one slot.
@S4BRE
What build are you using? Can you send me a copy of your data.db?
-
View User Profile
-
Send Message
Posted Feb 17, 2014i have had this issue before and it started again. where i get internal errors, i was able to catch the error this time. http://pastebin.com/WTasVPeH
-
View User Profile
-
Send Message
Posted Feb 16, 2014There are a lot of the same item in the market. I think a good solution to that would be to show the one item and when you click on it, it brings up all of the different ones there, there will be a back button to go back to the main page etc. It will be a lot more cleaner and easier to find what you need. If there aren't any of that item available, simply don't show it in the market "hub" (for lack of a better name). When you hover over it, it could say:
"Diamond 45 available ≥$250" (≥$250 meaning $250 is the cheapest one available)
and clicking on it will simply automatically use the same feature you already have implemented, the search feature, and bring up all the diamonds available :p
-
View User Profile
-
Send Message
Posted Feb 15, 2014@elving1
Try the dev builds.
@Shooty_
Already been added in the dev builds, check out the updated config docs.
@Octyenoch
Are your players using the 1.7.2 client? As the PSA states, 1.7.2 and below have a bug that doesn't allow the server to update the client's cursor and it causes all kinds of weird things to happen. But even with 1.7.2 I can't dupe items, even written books. Are you using a plugin for the books?
@xxxtrigger50xxx
Even if we make it so you can't buy listings or receive items with a full mailbox, a player might have listings that expire when their mailbox is full, and that item would have nowhere to go. So it gets a bit tricky. Even if I stuck the excess items somewhere and put them in the owner's mailbox when it has room, I can see people filling their mailbox with a "filler" item, creating listings, then cancelling them. That's a whole other level of storage. So a mailbox limit doesn't solve too much. Setting a high queue time doesn't deter people? How about an hour? If it's high enough I'm sure people will stop abusing it.
@MERCHANToDEATH
Have you opened data.db in an editor? That error means there is more than one connection to the database, SQLite can only support a single connection. If it's not that, try setting "enable_history" to false in config.yml and restart.
-
View User Profile
-
Send Message
Posted Feb 15, 2014Can you help me fix this error that is lagging my server?
[16:21:52 INFO]: [GlobalMarket] An exception occurred while executing an SQL statement: [16:21:52 WARN]: java.sql.SQLException: [SQLITE_BUSY] The database file is locked (database is locked) [16:21:52 WARN]: at org.sqlite.DB.newSQLException(DB.java:383) [16:21:52 WARN]: at org.sqlite.DB.newSQLException(DB.java:387) [16:21:52 WARN]: at org.sqlite.DB.execute(DB.java:339) [16:21:52 WARN]: at org.sqlite.DB.executeUpdate(DB.java:363) [16:21:52 WARN]: at org.sqlite.PrepStmt.executeUpdate(PrepStmt.java:85) [16:21:52 WARN]: at com.survivorserver.GlobalMarket.SQL.MarketStatement.execute(MarketStatement.java:96) [16:21:52 WARN]: at com.survivorserver.GlobalMarket.SQL.AsyncDatabase.processQueue(AsyncDatabase.java:64) [16:21:52 WARN]: at com.survivorserver.GlobalMarket.SQL.AsyncDatabase$1.run(AsyncDatabase.java:37) [16:21:52 WARN]: at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftTask.run(CraftTask.java:58) [16:21:52 WARN]: at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53) [16:21:52 WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [16:21:52 WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [16:21:52 WARN]: at java.lang.Thread.run(Thread.java:744)