VirtualPack
VirtualPack
[ Configuration ] [ Commands & Permissions ] [ Download ] [ Source ]
With this plugin, players can buy and use a workbench, an enchantment table, chests, furnaces, brewing stands and a bunch of other tools. Completely virtually. Accessible by chat commands.
Required dependencies: Vault, WorldEdit.
Optional dependencies: ProtocolLib (see Configuration/Materializer)
Notice
According to the Bukkit rules, I have to make you aware of:
Quote:This plugin uses the Curse API to check for updates automatically.
To disable update checking, set 'check-update' to 'false' in 'plugins/VirtualPack/config.yml'.
Features
User-side features:
- Chat-based access to the features of those blocks:
- Workbench
- Anvil
- Enchantment Table
- Chest
- Furnace
- Brewing Stand
- Enderchest
- Workbench
- An Uncrafter (Opposite of Workbench)
- A Materializer (Convert item stacks into others)
- A Trash
- Sending items between players
- Statistics and info pages for everything
- Access via Signs
Admin-side (configurable) features:
- Multiverse support
- Completely configurable commands
- Cooldowns on commands
- Admin access to all users' packs (in full and read-only modes)
- Optional economy integration
- StackableItems support
- Update notification
- MySQL support (data is automatically converted when switching from file)
- Importing (converting) data from:
- AlphaChest
- Backpack
- ChestKeeper
- PlayerVaults
- VirtualChest
- AlphaChest
To Do
- Fix the lags
- Fix all the bugs
- Rewrite the whole plugin
- Cross-server functionality
- Custom smelt/brewing recipes/fuel
- Bind tools to blocks/items
Installation
- Download the VirtualPack.jar and place in in you plugins folder.
- Install Vault the same way.
- Install WorldEdit. If you don't want to install it as a plugin, simply place the jar in plugins/VirtualPack. (I need WorldEdit because of the utilities that are bundled with it, and I need those to register the commands.)
- Install a Vault-compatible permissions plugin (see the Vault project page).
- Now either install a Vault-compatible economy plugin or set the "economy" value in the VirtualPack config to "false".
- Install ProtocolLib if you need it.
- Start your server.
- Maybe read the configuration page.
- Have fun.
Importing other plugins' saves
Supported plugins:
- AlphaChest
- Backpack
- ChestKeeper
- PlayerVaults
- VirtualChest
[ Instructions ]
Dev Builds
Quote:Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk!
[ Dev Builds ]
Donation
Is of course always appreciated. :)
I also keep a list of all donations.
STOP STOP STOP STOP STOP STOP STOP
Alright people, it's too much. Do NOT ask me to:
- Change /v because it is used by vanish already. Change it yourself in the config.
- Update the plugin to a new Minecraft version. I'll do it as soon as possible anyway.
If you do one of the above, you don't deserve to talk to me and I won't do anything else than sending you this video.
@TanveerGT5
God, you people are impatient, but well, here you go.
I just uploaded v1.1.6, should be available in a few hours.
can you add an option to disable the plugin in certain worlds so owners dont have to do per world permissions.
@GodWar101
I'm sorry, but I think you neither understand how enderchests work nor how my plugin does, so let me explain:
Enderchests are loaded from the player's .dat file and stored as a variable on the player object.
Virtual chests are loaded from the vpack database (or file) and stored as variables on the virtualpack object.
So they way they are loaded and accessed is actually equivalent.
Now since a player can (depending on the config) have multiple chests, chests of a variable size and links between furnaces or brewingstands and chests, I can't use the enderchest object to store the data of virtual chests. Well, I could, but you couldn't use enderchests anymore then.
Now the part that really is different is the saving procedure.
The enderchests are saved when the world is saved, the virtual chests are saved when the server stops, if you call the save command or after a given time interval. Now the only thing that can really lag, is the saving procedure. If your server is stable enough, you can set "save-interval" to "0" in the config, then it won't auto-save. But when your server crashes, everything will be reset to the point when you restarted your server the last time.
So I suggest you set "save-interval" to 7200, then it will save every 2 hours.
The only other thing that could lag was the furnace & brewing stands tick that is called every second, but since you don't have any brewing stands or furnaces, that won't take more than a few milliseconds, but if that would lag, it would lag constantly. Does it so?
@Siguza
Yes, instead of doing a database to save all virtual chests, you should use enderchests as virtual chests for a better performance. This plugin is the laggiest one in my server and I am only using the virtual chests feature.
@GodWar101
Uhm... I guess I don't understand you.
Do you want to access your enderchest via chat command?
@nhadobas
Ok, I think I can include this in the next version.
@Siguza
You should use enderchests Minecraft feature as virtual chests doing them personal :)
You should add an option to disable the plugin in certain worlds so owners dont have to do per world permissions.
@GodWar101
I don't think I can change this in a useful way. I could make the chests load only when they're accessed, but then you'd have to wait a few seconds after every vpack command you enter, and I guess that's not what you want.
VirtualPack is taking a lot of time to be enabled, the more chests I have in the database, the more time it takes to run in the server startup.
Take a look at the server startup log: http://pastebin.com/92LRfKsR
Almost 1 minute to be "enabled", I hope you can fix this.
<<reply 988009="">>
I believe the new (MySQL test) v1.1.5 version you released is working fine. I haven't encountered any problems with it yet. Great work :)
I'll test it as soon as the build is downloadable. Thanks for the great work :) I was beginning to worry about the plugin going inactive, I guess not, I'm so glad :)
I just uploaded a version in which I changed the mysql saving procedure. Please test if it's better with that one.
Backup your data, I'm not able to really test my builds at the moment.
This is happening whenever the the plugin saves...Is it something that needs to be worried about?
After the restart all chest were cleared. No error in log
2012-10-01 08:00:55 [INFO] [VirtualPack] Disabling VirtualPack v1.1.5
2012-10-01 08:00:55 [INFO] Disabling VirtualPack 1.1.5...
2012-10-01 08:00:55 [WARNING] [VirtualPack] AN ERROR OCCURED! PLEASE SEND THE MESSAGE BELOW TO THE DEVELOPER!
2012-10-01 08:00:55 [SEVERE] com.mysql.jdbc.exceptions.jdbc4.CommunicationsException The last packet successfully received from the server was 49,740,691 milliseconds ago. The last packet sent successfully to the server was 49,740,741 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
2012-10-01 08:00:55 [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
2012-10-01 08:00:55 [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
2012-10-01 08:00:55 [SEVERE] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
2012-10-01 08:00:55 [SEVERE] at java.lang.reflect.Constructor.newInstance(Unknown Source)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3348)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1967)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)
2012-10-01 08:00:55 [SEVERE] at net.drgnome.virtualpack.VThreadSave.run(VThreadSave.java:72)
2012-10-01 08:00:55 [SEVERE] Caused by: java.net.SocketException Connection timed out
2012-10-01 08:00:55 [SEVERE] at java.net.SocketOutputStream.socketWrite0(Native Method)
2012-10-01 08:00:55 [SEVERE] at java.net.SocketOutputStream.socketWrite(Unknown Source)
2012-10-01 08:00:55 [SEVERE] at java.net.SocketOutputStream.write(Unknown Source)
2012-10-01 08:00:55 [SEVERE] at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
2012-10-01 08:00:55 [SEVERE] at java.io.BufferedOutputStream.flush(Unknown Source)
2012-10-01 08:00:55 [SEVERE] at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3329)
2012-10-01 08:00:55 [SEVERE] ... 6 more
2012-10-01 08:00:55 [INFO] VirtualPack 1.1.5 disabled
BTW, removing the permissions for InvGuard did mitigate the issue. Not a big deal since I rarely die and when I do, it's because InvGuard takes away all my amour, thus allowing me to die quicker. :P
Saving problem still persists. I don't think there's any errors occurring on the log. It's simply not saving.
@Siguza
Siguza, I think he was booted from the server, but I'm not 100% sure. He doesn't play on my private server anymore (it's a server setup mostly for myself and two others and they've moved on to other games) so, I'm not sure if/when I get him to verify. At the time, I blamed the disconnects on his poor internet connection and his slowish machine, but thinking back, he seemed to disappear every time I asked him to open his virtual chest. And he didn't always get booted instantly, but after a period of time of him not doing anything, the server boots him from I'm assuming is a client timeout. Until I can verify with him what causes his disconnects/crashes, I wouldn't worry about this tidbit since this may be coincidental.
invguard is certainly nice, so if you're able to debug what's causing deathevent to be called prematurely (sounds like this is the issue you're describing, correct me if I'm wrong), I would certainly be grateful! Again, I don't die, I just lose everything in my inventory until I bring up my virtual chest.
@xelnaga15
Uhm... it's not meant to work cross-server. I could get it to work like this, but it would be slow as fuck.
Thanks so much for the 1.2.5 update! my servers dont crash upon closing the chest. I have 2 of my servers setup with the same SQL server with the save interval set to 5 and when i place something into the chest it updates the SQL server. but when i log into the other server it shows the virtual chest as empty and when I place something into the chest it overwrites the SQL data and the other chest never loads this information. am I missing a setting?