WorldInventories
WorldInventories
Discontinued
As of 11/05/2013 I'm no longer working on this project. I haven't played vanilla/Bukkit in a very long time, updates are becoming tedious and break often requiring rewrites, and I'm not enjoying development any more. The last uploaded version for 1.5.1 works fine (aside from the importing), and there's a chance it will also work across updates, but moving to another plugin, such as MultiInv, is highly recommended - you should also be able to import settings in to it.
Description
Switch any of the following player information when teleporting between groups of worlds:
- Inventory,
- Armour,
- Ender Chest contents,
- Potion effects,
- Health,
- Hunger,
- Experience,
- Game mode.
Player information is separated in to small YAML files (that you can edit) based on groups. Designed to be fast, simple and easy to use.
Want to keep existing player information? Use the vanilla import option as outlined in the configuration example. Players will get a blank inventory by default if you don't import data first!
Need to chat, notify me of a bug, suggest a feature or try and get some help? Go to the IRC channel! (information down in Links)
How to use
Simply put WorldInventories in the Bukkit plugins folder, run it once, edit the config file it creates. An example is included below (with an explanation of each configuration option).
Any worlds not included in groups share a "default" group.
Changes in 1.7.0
Importing support for files previous to v5 has been dropped. This was necessary to clean the project up (just look at the GitHub page if you want proof!) and make it easier to maintain. If you need to import previous to this, use 1.6 as a go-between. Vanilla importing still works fine.
Other changes and additions:
- Added message hiding granularity (hide specific message types, on login for example),
- Added language support,
- Massive code cleanup,
- Event priorities changed a bit, should improve compatibility with other mods,
- Built against 1.5.1,
- Added API - tell me if you would like something added to it!
A note about the dev builds: All importing is currently broken. I'm fixing vanilla importing, it will involve using the OpenInv plugin to load offline player inventories. OpenInv is optional and only required when doing the vanilla import.
Language support
As of 1.7.0 a new file, langs.yml, will be created on the first plugin run. A new configuration option, "language: en_GB" will also be generated.
To add a new language:
- Run the new version once, it'll generate lang.yml in the same place as config.yml, and add "language: en_GB" to the config as a default,
- Open lang.yml, copy one of the sections and call it something (preferably the country code),
- Set "language" to whatever you called it, save,
- Either do "/wireload language" or restart the server, check the console to see if there were any errors when trying to load your new language.
If you add a different language please let me know, I can add it to the defaults!
Why no SQL support?
For a plugin like this, it isn't necessary. Files are very, very small (you'd probably hit 10kb for a player with a completely full inventory), load extremely quickly and are fast to copy and backup as they are.
If you disagree with me, provide a performance report to me on IRC (there are lots of plugins to profile performance) and I'll think about it again.
Configuration example (with explanations)
Version 1.7.0
# A "group" is a collection of worlds which will share an inventory. # In this example there are two groups, a creative and a survival group # Each group has an overworld and a nether, which will share an inventory # Inventory switching examples # Scenarios when the inventory will not switch: # creative_overworld to creative_nether # survival_nether to survival_overworld # survival_end to survival_overworld # Scenarios when the inventory will switch: # creative_overworld to survival_end # survival_nether to creative_nether groups: creativegroup: - creative_overworld - creative_nether survivalgroup: - survival_overworld - survival_nether - survival_end # Add a player to the "exempt" collection to make this plugin ignore them completely # No saves, loads or anything else done by this plugin will apply to them until you remove them from the list exempt: - exampleplayer - exampleplayer2 # This is deprecated as of 1.7.0 - use message-hidden at the bottom instead! # donotifications: true # Set this to true to make WorldInventories attempt to import MultiInv data # Automatically sets itself to false when an attempt is made domiimport: false # Set "miimportmode" to the integer identifier of the mode WI should import from (eg, 0 for MI survival) miimportmode: 0 # Set to true to make hearts, food level, experience and such track with inventory dostats: true # If a save interval is specified below, set this to false to stop it from outputting to the console outputtimertoconsole: true # Set to anything above 30 to make inventories/stats save automatically every x seconds saveinterval: 0 # Set "do78import" to true to force a conversion of the pre build 78 files for use in newer versions # Automatically resets itself to false on an attempt do78import: false # Set "do141import" to true to force a conversion of the pre version 1.4.1 files for use in newer versions # Automatically resets itself to false on an attempt do141import: false # Set "dovanillaimport" to true to attempt an import of the items and stats stored in players player.dat file # Set "vanillatogroup" to the group you want to import to. If blank it will use the default group. dovanillaimport: false # When this plugin loads it will automatically try to convert pre build 78 files and add "auto78updated: true" to this file if successful # When this plugin loads it will automatically try to convert pre version 1.4.1 files and add "auto141updated: true" to this file if successful # Set "dogamemodeswitch" to true and add groups to gamemodes as per the example to enforce gamemodes # SURVIVAL, CREATIVE or HARDCORE at the time of writing (follows Bukkit's names) gamemodes: default: SURVIVAL creativegroup: CREATIVE survivalgroup: SURVIVAL dogamemodeswitch: false # Below are 1.7.0 and above # Set language to something stored in lang.yml language: en_GB # To hide a particular message type, set any of these to true message-hidden: died-message: false changed-message: false nochange-message: false loaded-message: false
Commands & Permissions
There are two commands as of 1.5.7:
- /wireload: Reloads the configuration,
- /wiexempt [add/remove] [player]: Add or remove the player from the exemptions list (whether the plugin does anything to their information specifically, e.g. when they switch a world).
In 1.7.0 the reload command changed slightly:
- /wireload [all/language]: Reloads the entire configuration or just the language.
There are also two permissions:
- worldinventories.reload: Allows the use of the /wireload command,
- worldinventories.exempt: Allows the use of the /wiexempt command.
Licenses
This work is distributed under the BSD 2-Clause license. Read the license
This plugin also uses XStream. Read the XStream license
Links / Download
Bukkit require me to include this notice when linking Jenkins builds, like the one below.
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.
Source code
Available in the BukkitDev downloads!
No beta builds.
Issues / known bugs
IRC - EsperNet #worldinventories
Donate
Use IRC for new build notifications, telling me about issues and getting faster help!
(Only shows stats for version 1.4.1 and above)

-
View User Profile
-
Send Message
Posted Aug 3, 2012@CarrotCodes
Gotcha, thanks for the response. I should be implementing this by Monday so I'll report anything funny I see then.
-
View User Profile
-
Send Message
Posted Aug 3, 2012<<reply 846407="">>
i get the
12:45:32 [INFO] [WorldInventories] Saving player information...
12:45:32 [INFO] [WorldInventories] Done.
12:45:41 [INFO] Read timed out
12:46:02 [INFO] [WorldInventories] Saving player information...
12:46:02 [INFO] [WorldInventories] Done.
12:46:32 [INFO] [WorldInventories] Saving player information...
12:46:32 [INFO] [WorldInventories] Done.
12:47:02 [INFO] [WorldInventories] Saving player information...
12:47:02 [INFO] [WorldInventories] Done.
on server stop
-
View User Profile
-
Send Message
Posted Aug 3, 2012@Hangar
It will save on a clean server stop, and automatically saves per-player when something happens that means their inventory should change. An example where inventory might be lost is if there was no save whilst they were working in one world. Something seems wrong with the world save event (it gets spammed, hence the console spam in the last version) so I thought it best to remove it.
I don't see any problems with the default save interval of 30 seconds, but it depends on how big your server is. Think about what would be acceptable to users as a length of time for a possible (albeit unlikely) inventory rollback.
-
View User Profile
-
Send Message
Posted Aug 3, 2012@CarrotCodes
Ah, ok. Well thanks for coming back to help us. I was getting nervous :)
So I have questions about this:
"Removed saving on a world save. This is important! I highly recommend you enable the save interval feature just to be safe!"
What kind of interval would you recommend? What can go wrong with this? Normally I save-all and then stop the server if I need to reboot. Does this mean that WI data might somehow not be saved at that point if it's still waiting for its own internal save process? I mean what if people are moving between worlds right before I do that and WI hasn't yet hit its next interval?
(Also, your logo image up top there seems to be broken.)
-
View User Profile
-
Send Message
Posted Aug 3, 2012Hi guys,
I held off updating to 1.3.1 until the dev builds were marginally stable, which they are now. HOWEVER, they're still dev builds for a reason. Do not use Bukkit for 1.3.1 servers unless you're testing - this should be taken for granted and is stated very clearly when they release a build for a new version of Minecraft.
Having said that, if you do want to test this plugin, there's a new dev build available: http://ci.drayshak.co.uk/job/WorldInventories/71/ Please read the changelog on that page - it's extremely important!
I used Bukkit build #2281 and can't see any immediate problems. If you're getting lag, it's not because of this. I've had several people contact me about this in particular - you're running a very buggy version of Bukkit - wait for the next recommended build.
I'm not quite sure what to do about Ender Chests. The thing that would make the most sense is to blacklist them for now if you require world separation. I'm guessing there will be another plugin soon (made by somebody else) that links ender chests to specific worlds - if this happens I'll take a look and see if this is something I can integrate (with attribution). No promises!
-
View User Profile
-
Send Message
Posted Aug 3, 2012Same here, bugging like crazy on 1.3
-
View User Profile
-
Send Message
Posted Aug 3, 2012Reported as bug: https://github.com/Drayshak/WorldInventories/issues/37
-
View User Profile
-
Send Message
Posted Aug 3, 2012i am getting major lag from this plugin but there is no way I can switch to something else because then everyone will get creative or such inventorys in the main world, please update asap
-
View User Profile
-
Send Message
Posted Aug 3, 2012@Viper150
it seems to be bug.. because we have lot of lags when this is doone
-
View User Profile
-
Send Message
Posted Aug 2, 2012Seems like this is probably the best plugin to deal with ender chests. Probably just going to blacklist it until some way of handling it is found.
-
View User Profile
-
Send Message
Posted Aug 2, 2012Big problem with Minecraft 1.3
Place an enderchest in one world (possibly a creative world)
Goto a different world that has separate inventory, place an enderchest there.
You can get items form one world to the next.
UUUGH!
-
View User Profile
-
Send Message
Posted Aug 2, 2012@dogbig
It's working for me. However it says "Saving Player Inventories... Done" like 10 time periodically. Not sure if that's a problem or not.
-
View User Profile
-
Send Message
Posted Aug 2, 2012is that fully compatible with 1.3.1?
-
View User Profile
-
Send Message
Posted Jul 24, 2012@AkiraShirou
Yeah I can't access a Jenkins there at all. He was talking about stopping development to work on Multiverse-Inventories a while back. I wonder if he went AWOL on us ><
-
View User Profile
-
Send Message
Posted Jul 23, 2012is it me, or does Jenkins link have a 404 error?
-
View User Profile
-
Send Message
Posted Jun 9, 2012I'd like to make the inventory non-persistent on some of my worlds, please add an ignore possibility to the configuration.
-
View User Profile
-
Send Message
Posted May 26, 2012Ya same with samuelvisser, plugin isnt making a config folder
-
View User Profile
-
Send Message
Posted May 25, 2012Awesome plugin! But I get this start-up error and the whole plugin is not working:
[SEVERE] Could not load 'plugins/LoginMessage.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: de/xzise/wrappers/permissions/Permission at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:150) at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305) at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:230) at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:207) at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:183) at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:53) at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:156) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:422) at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) Caused by: java.lang.NoClassDefFoundError: de/xzise/wrappers/permissions/Permission at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:139) ... 8 more Caused by: java.lang.ClassNotFoundException: de.xzise.wrappers.permissions.Permission at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41) at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) ... 11 more
Can you please help me?
-
View User Profile
-
Send Message
Posted May 19, 2012@Dinastya
https://github.com/Drayshak/WorldInventories/issues/26
5 month old bug.
-
View User Profile
-
Send Message
Posted May 13, 2012I don't have much bukkit/java/maven skills, but try this one: http://dl.dropbox.com/u/18208878/Worldinventories.jar I recompiled it (though the file contains several source files too, cause I did some things wrong before it worked. The only problem could be that it doesn't auto generate a config file.