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 Jan 11, 2014It would be nice to have an optional alias for '/market' ('/m'). I'd also like to see the listings command '/market buy <search terms> #<amount>' So that when you search, it divides all the listings into the given amount and divides the price of each. This is extremely useful considering people may sell things in stacks of 64, but you might only need 2. In one case, you would type '/market buy apple #2'.
-
View User Profile
-
Send Message
Posted Jan 9, 2014My infinite listings are dropping from the market after 7 day's like normal player's listings.
After the 3rd time (lol) I finally realized this is what's happening.
-
View User Profile
-
Send Message
Posted Jan 9, 2014@xdasfaust
So when we can wait a fix? It`s critical bug :c
-
View User Profile
-
Send Message
Posted Jan 8, 2014@xdasfaust
No, you're correct that we're using the latest dev build actually. We went to that after trying to get a handle on a few users successfully duping items (I have no idea how) in the latest recommended build here (1.2.2). Even with the ghosting of items, they still managed to be able to use the items, not sure how. The dev build seemed to fix that, but create the other issue. Sorry for not being clear!
-
View User Profile
-
Send Message
Posted Jan 8, 2014trying to use bossshops to have a player run the market listings command. but it opens a blank chest inventory named Global Market (world), but no search or sort buttons, and no items either. is there any way that i can get it to work? im not sure if its something on global market's end, ive tried sudo'ing the player, and having boss shops force the player to run it themselves through it's own means.
using 1.7.2 latest recommended build.
-
View User Profile
-
Send Message
Posted Jan 8, 2014@Bodyash
The pricecheck system is a large WIP in the latest builds, it has some issues. There's also a bug with saving in the latest build, I should have a fix out soon. I still have to add locale support for the newer stuff like sorting. Thanks for the info :)
@Gametista
Oh I assumed you were using the dev builds. There is a bug with syncing the save in the latest build. But I don't know of any problems with the current release. Hmm, could it be that the server doesn't have write permissions to the GlobalMarket folder? Is there anything specific I can do to reproduce the bug?
-
View User Profile
-
Send Message
Posted Jan 8, 2014Hi, When i`m stop server </stop> (for server update (plugins, etc)) - and start again, players take all items back to mail (items that had bought 1 day ago) and take them again. Smth like a dupe. So when i restart server again - they can take this items 1 more time! And again. and again....
Using latest dev. build.
And there is no translate node for sorting button in /market listing
I`m your tester :3
-
View User Profile
-
Send Message
Posted Jan 7, 2014@xdasfaust
Would moving from a flatfile to mySQL storage alleviate this issue do you think? Or is it a syncing issue across the board?
Thanks for the heads up, really appreciate it! :D
-
View User Profile
-
Send Message
Posted Jan 6, 2014http://paste.ubuntu.com/6706582/
Yet another bug
-
View User Profile
-
Send Message
Posted Jan 6, 2014yea, after editing locale file - it`s works
-
View User Profile
-
Send Message
Posted Jan 6, 2014@xdasfaust
this bug dissapear only afted delete data.db o_O
And when players put some items (5-10 min in 60-70 online) - all players take this bug...
I will try regenerate locale.yml (i`m translated it to russian C:)
-
View User Profile
-
Send Message
Posted Jan 6, 2014@Bodyash
Delete locale.yml and let the plugin regenerate it.
@KeithSt0ne
Hmm how can I reproduce the stacking issue? The stacking is a bit wonky sometimes, I have fixed a few things with it but not committed the changes yet.
The searching can be weird too, I pull item names from the Vault Items API since Bukkit's internal item names are very different from what you see when you hover over an item. The Items API isn't 100% accurate, so in certain instances searching for "spruce" won't return the right thing. Just an example. I may make my own library for item names.
@MERCHANToDEATH
Unfortunately even with MySQL support GM currently won't work with multiple servers. There's more on why here. I may look into Bungeecord for a solution, not sure when though.
@ayeelanaa
I've noticed some issues with syncing changes to the DB in 1.3. Currently working on identifying and fixing them.
-
View User Profile
-
Send Message
Posted Jan 6, 2014[17:24:14] [Server thread/INFO]: domi911 issued server command: /market listing [17:24:14] [Server thread/ERROR]: null org.bukkit.command.CommandException: Unhandled exception executing command 'market' in plugin GlobalMarket v1.3.0-SNAPSHOT at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) [bukkit.jar:git-Spigot-1228] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196) [bukkit.jar:git-Spigot-1228] at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:546) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:960) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:815) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:65) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:147) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:657) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:273) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:540) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:446) [bukkit.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [bukkit.jar:git-Spigot-1228] Caused by: java.util.UnknownFormatConversionException: Conversion = '1' at java.util.Formatter.checkText(Unknown Source) [?:1.7.0_25] at java.util.Formatter.parse(Unknown Source) [?:1.7.0_25] at java.util.Formatter.format(Unknown Source) [?:1.7.0_25] at java.util.Formatter.format(Unknown Source) [?:1.7.0_25] at java.lang.String.format(Unknown Source) [?:1.7.0_25] at com.survivorserver.GlobalMarket.LocaleHandler.get(LocaleHandler.java:23) [?:?] at com.survivorserver.GlobalMarket.ListingsInterface.prepareItem(ListingsInterface.java:115) [?:?] at com.survivorserver.GlobalMarket.InterfaceHandler.refreshInterface(InterfaceHandler.java:184) [?:?] at com.survivorserver.GlobalMarket.InterfaceHandler.openInterface(InterfaceHandler.java:112) [?:?] at com.survivorserver.GlobalMarket.Command.ListingsCommand.onCommand(ListingsCommand.java:58) [?:?] at com.survivorserver.GlobalMarket.Command.MarketCommand.onCommand(MarketCommand.java:51) [?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [bukkit.jar:git-Spigot-1228] ... 13 more
-
View User Profile
-
Send Message
Posted Jan 4, 2014A player has listed 4-5 stacks of 1 item (for multiple different items) and after a restart it changes to 1 stack total per item.
The first time we figured it was just a glitch or player error, but then it did it again, so there's obviously a problem.
We've figured out a work around to prevent this by changing the cost amount by 1 per stack so it doesn't lump it all into one listing.
-
View User Profile
-
Send Message
Posted Jan 4, 2014@MERCHANToDEATH
the latest dev build has mysql support...
-
View User Profile
-
Send Message
Posted Jan 4, 2014Just a heads up, not sure what's causing it or how to exactly reproduce it, but when we restart/shut down, occasionally people will receive the items and money they got previously.
Not related to the 1.7.2 thing as far as I can see, but it is duping things.
Any thoughts on that?
Thanks! :)
-
View User Profile
-
Send Message
Posted Jan 4, 2014I'm interested in running this plugin across multiple servers on a bungeecord network. Would you consider adding mysql support to your plugin so I could make this a reality?
-
View User Profile
-
Send Message
Posted Jan 3, 2014I have an issue with the 1.3 Dev build, whenever i restart my server ie: daily restart the items in mail boxes dupe. Not sure if this happens on other servers but it happens on mine.
-
View User Profile
-
Send Message
Posted Jan 2, 2014@UltrafaceGuy
make sure the 4th line on your sign is blank, it will try to search whatever is on that line.
Can someone tell me how the multiworld works?
In the config it shows something link
Links: - world -world 1
How would I add the 2nd group? Do i add "Links" again or make a new name?
-
View User Profile
-
Send Message
Posted Jan 2, 2014I'm getting an odd issue in both the 1.2 and 1.3 dev builds - Using the stall sign to open up with listings opens up to a search for ========= which yields no results of course, rather than a bunch of stuff for sale.
While this isn't too annoying (you need only click the paper to cancel the search) new players, and players with low patience become very confused. Is there a way to get it to open right up to a bunch of listings?