WebAuctionPlus

WebAuctionPlus 1.1.3

WebAuctionPlus - eBay for Minecraft!

A minecraft/bukkit shop plugin for your website! This is a rewrite of the original WebAuction with many new features and improvements. I've made to many improvements to the code to list on one page. Many of my plans require big changes and a lot of new code. As with any new code, bugs are to be expected, so please bare with me and report any bugs you come across.

Note: It is strongly recommended you backup your database before using or updating this plugin. Some of the bug fixes and performance improvements I'm making require big changes to the database. The WebAuctionPlus plugin will convert and update the database automatically the first time it's run.

Performance increase: I noticed a lot of people reporting lag with the original web auction, especially when using a remote database. These problems should all be fixed now. WebAuctionPlus has all new database connection code to do a "pool of connections". New connections are only made if all existing ones are in use. The entire web interface is also being rewritten to greatly improve performance with MUCH fewer queries to the database. Most tasks are now fully multi-threaded, so login lag coming from this plugin is non-existent.

Further improved performance: Starting with 1.0.9, when a player logs in, the code that runs for that player has been moved to a 2 second multi-threaded delay. Permissions are updated, and alerts the player of new sales and items in their mailbox. This should fix the problem some servers were having where that small bit of code running in the main server thread would cause just a small lag spike. Other things, like item depositing and withdraw may still cause a small bit of lag. This and other things will be multi-threaded once I figure out how to do it without causing any issues.

New virtual inventory MailBox has been added with the update of Minecraft 1.3 and WebAuctionPlus 1.1. When a player right clicks on a MailBox sign, it opens up their virtual mailbox inventory and locks their website account to prevent item dups. When they close their mailbox, it updates their inventory and unlocks their website account. NOTE: This feature is new and running single threaded. If you experience lag related to this, I can see what I can do to make it multi-threaded.

Requires: Vault - http://dev.bukkit.org/server-mods/vault/

Requires: Web server with PHP and MySQL

Optional: SignLink - http://dev.bukkit.org/server-mods/signlink/

I can host your website! This plugin does require a web server with php support. It doesn't have a built in web server, and there are currently no solid plans to add this. WebPortal is similar to this plugin, and does have a built in web server, but it doesn't share much common code with this plugin and doesn't have the same features. That said, I'll make you an offer to help you out. Make a donation with the button below and send me a pm and I'll host your website for you on my web server. The server is hosted in a datacenter on the US east coast. It has cpanel, ftp, mysql, all the bells and whistles. I'll even set up the WebAuctionPlus website for you and update it when you'd like. If you have your own domain, you're welcome to use it, or I can give you a subdomain of webauctionplus.com . If you have access to the dns records of your domain, I can help you set up a subdomain to point to my server, like shop.myminecraftserver.com . However you'd like it set up.

PayPal - The safer, easier way to pay online!

My plans

Sales will be logged to the database starting with version 1.1.3, but a website page wont be added for it just yet. The data will be retained in there for the following update which should include the page. Market prices and recent signs should also be working in one of these next updates.

I'm also starting on a json data connection between the website and the plugin which will be used to get the players balance with any vault supported economy, and finally removing those pesky money deposit/withdraw signs.

A few improvements so far

  • new ajax listing code (fast!)
  • new virtual inventory mailbox
  • all new web interface
  • all new item deposit/withdraw code
  • database connections are handled better
  • connection pool limits can be set in config
  • task update times are now configured in seconds
  • tasks can be disabled by setting the update frequency to -1
  • new announcement system
  • added "/wa reload" and "/wa save" commands
  • accounts can be created or passwords changed from the console
  • multi-language support

To do

  • sign shops
  • server shops (unlimited stock improved)
  • bank accounts
  • better support for vault economies
  • better support for votifier
  • custom description for items being sold
  • website will obey banned-ips.txt
  • wish list / auto sales
  • track all wa signs to prevent unauthorized signs

See it in action!

If you'd like to test drive the plugin before setting it up on your own server, you're welcome to try out my server. You can view this website link without logging in, but you'll have to log onto my server and create a web auction account first to do anything on the website.

Youtube Videos

metrics.poixson.com

PayPal - The safer, easier way to pay online!

Languages

Currently supported languages

If you'd like this plugin translated to another language, feel free to download the en.yml file from the link above, translate it to your own language, and send it to me.

Signs

WebAuctionPlus signs can be created by placing a sign with [WebAuction], [WebAuction+], or [wa] on the first line. Case doesn't matter, the plugin will fix it for you.

Note: you cannot use the deposit mailbox sign while in creative mode. this shouldn't ever be needed in the normal operation of the plugin, so as a general protection, it's always denied.

Note: withdraw mailbox signs can now have a quantity of stacks on the last line, or leave it blank for all mail.

WebAuctionPlus Signs

  • %waTitle - items name
  • %waPrice - price each
  • %waSeller - sellers name
  • %waType - Buy Now or Auction

Source Code

Google Code (svn main repo)

GitHub (git mirror)

Commands

  • /wa password <apassword> - Changes your Web Auction Plus account password, or creates an account if you don't have one. This command can also be used from console in the format: wa password <playername> <apassword> and short-hand aliases "pass" or "pw" can be used in place of "password". For example, /wa pw mypassword123
  • /wa reload - This feature is currently broken and disabled. It will be working again soon.
  • /wa update - Forces recent signs to update. Also updates SignLink signs.
  • /wa version - Displays the current running version of Web Auction Plus.

Permission nodes

note: these may change at some point

  • wa.use.mailbox (use mailbox sign)
  • wa.use.deposit.money (use money deposit sign)
  • wa.use.withdraw.money (use money withdraw sign)
  • wa.announcer.receive (can see auto announcements)
  • wa.password.create (can create a new account)
  • wa.password.change (can change their password for an existing account)
  • wa.canbuy (can buy from web auction)
  • wa.cansell (can sell with web auction)
  • wa.create.sign.mailbox (create mailbox sign)
  • wa.create.sign.deposit (create money deposit sign)
  • wa.create.sign.withdraw (create money withdraw sign)
  • wa.create.sign.shout (create a new auction shout sign)
  • wa.create.sign.recent (create a recent auction sign)
  • wa.webadmin (user account is admin on the website)
  • wa.remove (remove WA signs)
  • wa.reload (reloads the WebAuctionPlus config)

Note: There are major changes being made to the database in Plus. (as of version 1.0.3) When the plugin jar loads for the first time, it will update and convert your database, so be sure to have a backup. As of 1.1, the way enchantments are stored in the database has been changed again to simplify code and further improve stability. When the latest plugin jar is loaded, the database will be updated and the enchantments converted.

How to Install

Join us and chat some time on our irc channel. #webauctionplus on esper.net webchat.esper.net

2013-04 State of the plugin

As I've stated in comments, I'm not adding features to 1.1 anymore. I'll continue fixing bugs if any are found, but my focus is on a new version of the plugin. if anyone would like to take over working on the 1.1 version, send me a pm. I'll gladly help you get started. I'll still want to look over code to be sure high standards are met. it must be reliable and well written code, but credit will always be given where it's due.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of LiLChris06 LiLChris06 May 18, 2013 at 16:04 UTC - 0 likes

    @ShadowKillerx: Go

    It works, been using it on my server for a long time.

    600+ auctions on it right now, http://www.lilcraft.net/auctions/

  • Avatar of ShadowKillerx ShadowKillerx May 16, 2013 at 13:21 UTC - 0 likes

    So how it works on 1.5.2?
    Btw. It still works or not?

    Last edited May 16, 2013 by ShadowKillerx

    XpirationCraft

    IP: mc.xpirationcraft.pl

  • Avatar of peti446 peti446 May 14, 2013 at 18:55 UTC - 0 likes

    i need the item pack for 1.5.2

  • Avatar of JeterLP JeterLP May 08, 2013 at 20:09 UTC - 0 likes

    Please update!

    http://mcstats.org/signature/CensorNizer.png

    http://mag.racked.eu/cimage/5625drk/JeterLP%21/Coded+6+Plugins%21/mca.png

  • Avatar of DasMAXimumHD DasMAXimumHD Apr 30, 2013 at 19:27 UTC - 0 likes

    I get this error around 200 times per second with new version of BKCommonLib an SignLink:

    2013-04-30 21:23:11 [SEVERE] [SignLink] An error occured while updating the signs: 2013-04-30 21:23:11 [SEVERE] java.lang.StringIndexOutOfBoundsException: String index out of range: 0 2013-04-30 21:23:11 [SEVERE] at java.lang.String.charAt(String.java:658) 2013-04-30 21:23:11 [SEVERE] at com.bergerkiller.bukkit.sl.LinkedSign.setText(LinkedSign.java:88) 2013-04-30 21:23:11 [SEVERE] at com.bergerkiller.bukkit.sl.API.Variable.update(Variable.java:199) 2013-04-30 21:23:11 [SEVERE] at com.bergerkiller.bukkit.sl.API.Variable.updateAll(Variable.java:223) 2013-04-30 21:23:11 [SEVERE] at com.bergerkiller.bukkit.sl.API.Variable.updateTickers(Variable.java:240) 2013-04-30 21:23:11 [SEVERE] at com.bergerkiller.bukkit.sl.API.Variables.updateTickers(Variables.java:32) 2013-04-30 21:23:11 [SEVERE] at com.bergerkiller.bukkit.sl.SignLink$2.run(SignLink.java:127) 2013-04-30 21:23:11 [SEVERE] at org.bukkit.craftbukkit.v1_5_R2.scheduler.CraftTask.run(CraftTask.java:58) 2013-04-30 21:23:11 [SEVERE] at org.bukkit.craftbukkit.v1_5_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:344) 2013-04-30 21:23:11 [SEVERE] ...5 more

    Is there an solution?

    EDIT: Ok, just ignore my comment. It's a bug between BKCommonLib and SignLink.

    Last edited Apr 30, 2013 by DasMAXimumHD
  • Avatar of Markob007 Markob007 Apr 30, 2013 at 17:49 UTC - 0 likes

    2013-04-29 22:06:07 [INFO] [WebAuctionPlus] Enabling WebAuctionPlus v1.1.9 2013-04-29 22:06:07 [INFO] [WebAuction+] MySQL Initializing. 2013-04-29 22:07:11 [SEVERE] [WebAuction+] SQL Error! 2013-04-29 22:07:11 [SEVERE] com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 2013-04-29 22:07:11 [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-04-29 22:07:11 [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 2013-04-29 22:07:11 [SEVERE] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 2013-04-29 22:07:11 [SEVERE] at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2334) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 2013-04-29 22:07:11 [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-04-29 22:07:11 [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 2013-04-29 22:07:11 [SEVERE] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 2013-04-29 22:07:11 [SEVERE] at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) 2013-04-29 22:07:11 [SEVERE] at java.sql.DriverManager.getConnection(DriverManager.java:579) 2013-04-29 22:07:11 [SEVERE] at java.sql.DriverManager.getConnection(DriverManager.java:221) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLConnPool.getConnection(MySQLConnPool.java:63) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLConnPool.tableExists(MySQLConnPool.java:168) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLConnPool.setTableExists(MySQLConnPool.java:187) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLTables.setTableExists(MySQLTables.java:529) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLTables.sqlTables(MySQLTables.java:83) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLTables.sqlTables(MySQLTables.java:65) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLTables.<init>(MySQLTables.java:27) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.WebAuctionPlus.ConnectDB(WebAuctionPlus.java:319) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.WebAuctionPlus.onLoadConfig(WebAuctionPlus.java:180) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.WebAuctionPlus.onEnable(WebAuctionPlus.java:119) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.craftbukkit.v1_5_R2.CraftServer.loadPlugin(CraftServer.java:282) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.craftbukkit.v1_5_R2.CraftServer.enablePlugins(CraftServer.java:264) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.MinecraftServer.j(MinecraftServer.java:303) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.MinecraftServer.e(MinecraftServer.java:282) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.MinecraftServer.a(MinecraftServer.java:242) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.DedicatedServer.init(DedicatedServer.java:150) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:381) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573) 2013-04-29 22:07:11 [SEVERE] Caused by: java.net.ConnectException: Connection timed out 2013-04-29 22:07:11 [SEVERE] at java.net.PlainSocketImpl.socketConnect(Native Method) 2013-04-29 22:07:11 [SEVERE] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 2013-04-29 22:07:11 [SEVERE] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 2013-04-29 22:07:11 [SEVERE] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 2013-04-29 22:07:11 [SEVERE] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) 2013-04-29 22:07:11 [SEVERE] at java.net.Socket.connect(Socket.java:579) 2013-04-29 22:07:11 [SEVERE] at java.net.Socket.connect(Socket.java:528) 2013-04-29 22:07:11 [SEVERE] at java.net.Socket.<init>(Socket.java:425) 2013-04-29 22:07:11 [SEVERE] at java.net.Socket.<init>(Socket.java:241) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:254) 2013-04-29 22:07:11 [SEVERE] at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:292) 2013-04-29 22:07:11 [SEVERE] ... 35 more 2013-04-29 22:07:11 [SEVERE] [WebAuction+] Exception getting MySQL Connection 2013-04-29 22:07:11 [SEVERE] java.lang.NullPointerException 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLConnPool.tableExists(MySQLConnPool.java:172) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLConnPool.setTableExists(MySQLConnPool.java:187) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLTables.setTableExists(MySQLTables.java:529) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLTables.sqlTables(MySQLTables.java:83) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLTables.sqlTables(MySQLTables.java:65) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.mysql.MySQLTables.<init>(MySQLTables.java:27) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.WebAuctionPlus.ConnectDB(WebAuctionPlus.java:319) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.WebAuctionPlus.onLoadConfig(WebAuctionPlus.java:180) 2013-04-29 22:07:11 [SEVERE] at me.lorenzop.webauctionplus.WebAuctionPlus.onEnable(WebAuctionPlus.java:119) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.craftbukkit.v1_5_R2.CraftServer.loadPlugin(CraftServer.java:282) 2013-04-29 22:07:11 [SEVERE] at org.bukkit.craftbukkit.v1_5_R2.CraftServer.enablePlugins(CraftServer.java:264) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.MinecraftServer.j(MinecraftServer.java:303) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.MinecraftServer.e(MinecraftServer.java:282) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.MinecraftServer.a(MinecraftServer.java:242) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.DedicatedServer.init(DedicatedServer.java:150) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:381) 2013-04-29 22:07:11 [SEVERE] at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573) 2013-04-29 22:07:11 [SEVERE] [WebAuction+] * Failed to load WebAuctionPlus. Please check your config. 2013-04-29 22:07:11 [INFO] [WebAuction+] Disabled, bye for now :-) 2013-04-29 22:07:11 [INFO] [WebAuction+] Disabled, bye for now :-)

    help

  • Avatar of LiLChris06 LiLChris06 Apr 28, 2013 at 23:23 UTC - 0 likes

    So how is 2.0 coming out? :)

  • Avatar of Darlinkster Darlinkster Apr 28, 2013 at 18:16 UTC - 0 likes

    Please update to 1.5.1

  • Avatar of Markob007 Markob007 Apr 27, 2013 at 08:34 UTC - 0 likes

    Failed to load settings from the database! The plugin may not have been loaded for the first time yet.

    help

    aukcija.world-gaming.com.hr and ing say plugin isnt load

    Last edited Apr 27, 2013 by Markob007
  • Avatar of lorenzo_p lorenzo_p Apr 25, 2013 at 12:18 UTC - 1 like

    @NotYetRated: Go

    yea, the original web auction had taxes and storage fees. I had "temporarily" removed it until I could get around to readding it and making some needed improvements. I didn't like that it would charge you fees and the player had no way of knowing how much. if you know php and/or java, it can be added. I don't have as much time as I'd like to finish everything I'd like. if I can get some help, I'll put more time into 1.1

    the multi-server question, an example, are you talking about preventing withdrawing buildcraft items in a bukkit server? or do you mean something configurable, like preventing withdrawing diamonds on a server?

    @hice3000: Go

    sure, you're welcome to use it. don't forget to give credit and link back, and also keep updated between versions. if you're using svn for the repo, you could use an svn external to link right to the repo, so it'll auto update for you. I am working on a new version of the item information in xml format. I'd like to have a mod that generates the data files and item icons, but looking for some help with that.

Which major feature should be added first? (repoll)

  1. Choice:

  1. Results
  2. 14 comments

Facts

Date created
Apr 08, 2012
Categories
Last update
Feb 25, 2013
Development stage
Beta
Language
  • deDE
  • enUS
  • esES
  • frFR
  • ptBR
License
GNU General Public License version 3 (GPLv3)
Curse link
WebAuctionPlus
Downloads
21,081
Recent files

Authors