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
/market
to 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 send
if 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!
@xdasfaust
I'm fine with the hopper disabled in the meantime as this is only the cause of dupe while listing items to the market.
@Adurath
You need to have ProtocolLib installed to get the hopper. I would assume if you remove it. It would removed the hopper. I think the hopper is already disabled in the latest dev build. GlobalMarket-1.3.0-SNAPSHOT-b26.jar
Edit: The hopper code is still there and hopper is semi working in latest 1.3.0-b26. I would advice not to use it because of dupe bug at the moment.
@madtomic
With "GlobalMarket-1.3.0-SNAPSHOT-b26.jar" the problem isn`t resolved. Can i remove this hopper system?
are unwritten book is bad pls make it a written book because the booktitel not shown and by /market mail on Transaction Log dont shown money on it!
NICEEEEEEEEEEEEEEEEEEE!
Sorry all, holidays have been busier than usual for me this year.
@madtomic
I'd be really interested in seeing what you've done. I resolved my issue but come across another. The block change packet's block field is IBlockData, and
packet.getBlocks().write(0, Material.SIGN_POST)
throws an exception. I spent a good while trying to figure that out this morning and but haven't really gotten anywhere. If I set it via reflection I get a "Can't find sign at x,y,z" chat message with the sign update packet. So until that is worked out I have just disabled the hopper in 1.8 altogether in the latest build, to prevent the dupe.@GrimmVoid
You probably need quotes around the database name, like
mysql_database: 'server-market'
@Adurath
xdasfaust is working on the fix of the hopper I think. We'll have to wait for him to update.
When I set "Type: mysql"
I get this error: http://pastebin.com/mRqbjGRR
I'm using your latest dev build.
@madtomic
One example: Player put 2 diamonds into the marketplace and become 4 diamods with the bug. :/ How can i fix this bug?
@Adurath
This is a know bug. I think it has to do with the stack check that was put in hopper. This sometimes give the item back after you listed it. Well, at least it looks like so.
@mgone2010
Not always. You pull the item on the hopper, sometimes the item is set and it still has it in the inventory. :/
@Adurath double? how that
@Ergail tu a remarqué ce bug la seulement avec la version b21 ou avec les versions précédentes aussi?
@xdasfaust Mojang replaced almost all instances of x, y, and z coordinates with BlockPositions (wrappers for x, y, and z coordinates). These BlockPosition objects can be accessed with packet.getBlockPositions()
good news , PacketWrapper its updated also https://github.com/dmulloy2/PacketWrapper/tree/master/PacketWrapper/src/main/java/com/comphenix/packetwrapper
i have updated a part of code and its seem work, will send you a pull if i have a time
BlockPosition blc = new BlockPosition(loc.getBlockX(), y , loc.getBlockZ());
packet.getBlockPositionModifier().write(0, blc);
........
Hi, with the new version "GlobalMarket-1.3.0-SNAPSHOT-b21.jar" it is possible to double items.
Hi ! GlobalMarket bug in my server in 1.8 version, 1.3.0 Snapshot.b21 ... When players stacks their items in listings and when use in mailbox to removed, items stay in listings and don't possible to remove to listings ... Or when players remove items in listings they can remove after in mailbox, duplicate ...
I'm sorry for my englist, a french administrator !
@xdasfaust
Very nice plugin and I am glad to see you are working on improving this awesome plugin! Thanks!
drone.io is having troubles, for now get the most recent build from here.
@mgone2010
I'm having trouble updating ProtocolLib integration to the changes in 1.8. Pretty sure there's a bug in 3.6.3. I'll see what I can do, but it might have to wait for 2.0.0. As for NBT, it's all saved through Bukkit's serialization. Bukkit's serialization strips any non-vanilla values though, so if you use Cauldron I have a Forge mod available that fixes the issue, check the description.
@MisterSanglad
Fixed in the latest build.
@jpell1221
It's still there.
stall_radius
andmailbox_radius
in config.yml@xdasfaust
What happened do the config setting: a player must be <# number of blocks> close to the market?
404 page not found https://drone.io/github.com/Dasfaust/GlobalMarket/files/target/GlobalMarket-1.3.0-SNAPSHOT-b20.jar
@xdasfaust http://youtu.be/Pc8mZ3oYSAE?t=6m13s (6:13)
Also i have suggestion,make the saves as NBT, this plugin using that to give you an idea http://dev.bukkit.org/bukkit-plugins/ender-chest/
thank you :)
Hello
this bug is in build 19 when someone try to sell sonting in the hooper
https://note.gnaxi.dk/?f4060d5c01802f62#V4/Id5tOhn9dyKLw8z3K+Sop6OhSHt4fc1brcRCK1pQ=
think this come form ProtocolLib , i'am using this one http://www.spigotmc.org/resources/protocollib.1997/