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 Jan 7, 2012Hi,
Ok so I noticed this issue. What happens is that it creates an inventory file for EVERYONE that joins the server. The issue with this, is that it uses up lots of file descriptors on Linux and can eventually cause errors and crashes.
I was just wondering if there was a way to make it so that the only people that have an inventory made with this plugin for them, is the people with the power to go to the other creative world? That would mean everyone that is in the normal world would not have an inventory created for them with this plugin. Instead the only people that have it made, are the people that can actually visit the creative world.
Or is that just how the plugin works?
Thanks
-
View User Profile
-
Send Message
Posted Jan 7, 2012@sylphio
Thanks very much! dogbig turned this in to a pull request and so implementing it only involved pressing a button :) It's implemented in build #60, I'd appreciate you trying it and letting me know if it works. http://ci.crafte.rs/job/WorldInventories/60/
-
View User Profile
-
Send Message
Posted Jan 7, 2012Thanks to sylphio and dogbig, there appears to be a durability fix! Please try build #60 and report back to me as to whether it works or not. As soon as I have multiple confirmations I'll make 1.0.2 recommended :) http://ci.crafte.rs/job/WorldInventories/60/
-
View User Profile
-
Send Message
Posted Jan 7, 2012Hello, i fixed the issue as described bu sylphio (thanks) in my fork of this great plugin. I had pulled the fix for the dev branch.
Temp (dev testing) download of 1.0.1a with durability fix: https://github.com/downloads/dogbig/WorldInventories/WorldInventories-dev-1-0-1a.zip
-
View User Profile
-
Send Message
Posted Jan 6, 2012@Drayshak Are there any commands ingame?
-
View User Profile
-
Send Message
Posted Jan 5, 2012@Drayshak
I was still having the damage bug (build #59) with the diamond tools so i made some search yesterday. I tested a local fix and the problem seem solved for me.
From my current understanding, the problem is that the durability (16bit) is override by tdata (8bit) so it all tool with durability greater that 255 are repaired when the inventory is restored. (Constructor of ItemStack with non-null Byte value) (it may also explain the potions problem)
Bukkit Material class look broken in my point of view because it is not possible right now to differentiate a material where the materialData is used or not because all bukkit material will return a MaterialData class type.
I my case, my test fix look like that: (by memory...)
WIItemStack : constructor
if (tdata != null)
{
Material tMat = Material.getMaterial(ttype);
if (tMat == null)
this.data = new WIMaterialData(ttype, tdata);
else
{
if (tMat.getMaxDurability() > 0)
this.data = null;
else
{
final MaterialData mdata = tMat.getNewData(tdata);
this.data = new WIMaterialData(mdata.getItemTypeId(), mdata.getData());
}
}
if (this.data != null)
this.durability = tdata;
}
Hope it help you a little bit and thank you for the great plugin.
-
View User Profile
-
Send Message
Posted Jan 5, 2012Have the durability bugs been fixed or are planned to be fixed? This is my only problem with this plugin, otherwise, it's great!
-
View User Profile
-
Send Message
Posted Jan 4, 2012Theres still a few MultiInv conversion bugs.
-
View User Profile
-
Send Message
Posted Jan 4, 2012Nice very helpful :D
-
View User Profile
-
Send Message
Posted Jan 3, 2012Definitely working a lot better thanks again Drayshak.
-
View User Profile
-
Send Message
Posted Jan 3, 2012@CarrotCodes
Aw GREAT! Thanks! I'll try it RIGHT NOW! :)
Edit.: Will already bugged items still bug? Because the diamond sword I had crafted when the bug was still there still doesn't get any damage. Maybe you fixed that damage gets reset, but not that items don't get damage at all sometimes?
-
View User Profile
-
Send Message
Posted Jan 3, 2012@Entangle
I am considering moving to Bukkit's inbuilt serialization functionality for ItemStacks - if this is the case then it will be editable. If I decide not to, I'll make something to edit player inventories in a week or so :)
-
View User Profile
-
Send Message
Posted Jan 2, 2012Is it possible to be able to see player's inventories?
I understand the .inventory file is unreadable as of yet, but I was wondering if it's possible to implement a command to see what is in each player's inventory, preferably through the console, or by opening the file with another program itself?
-
View User Profile
-
Send Message
Posted Jan 2, 2012Could you perhaps make it so that it defaults to making all worlds have separate inventories unless you edit it in the configuration file?
Perhaps have it so that each world cluster (world, world_nether, world_the_end) is automatically added to the config under its own group which is named after the worlds name when it is noticed by this plugin for the first time (and the world isn't found in the current config). So going to world2 for the first time, with nothing having been added to the config about this world prior, would result in the following being added to the config:
So either the admin can set up the world to share an inventory with another world when they are creating it or it would default to its own inventory.
-
View User Profile
-
Send Message
Posted Jan 1, 2012@Sayshal
yes :)
@CarrotCodes
thanks sooooooo much !
-
View User Profile
-
Send Message
Posted Dec 31, 2011@efstajas
Lots of excuses but I've been pretty busy lately with family :)
I am still actively developing this. I'm trying to figure out why item durabilities are borked but it's proving a little trickier than I expected - I'll gladly accept help with it from coders who can help!
Edit: Good news! I think I've pinned down the bug. It seems that some items might have been spawned as 'infinitely durable' from a previous bug that was already fixed. Anybody who has the durability bug, please try build #58 and let me know :) http://ci.crafte.rs/job/WorldInventories/58/
-
View User Profile
-
Send Message
Posted Dec 31, 2011@Shooty_
I ended up with this:
Is this the same thing? =]
-
View User Profile
-
Send Message
Posted Dec 31, 2011HI. i got your plugin for my server and cant figure out config :( i have two worlds and would like them NOT to share anyone know how to set up the config file?
thanks, zbiskupiak
-
View User Profile
-
Send Message
Posted Dec 31, 2011@Sayshal
Try that :
-
View User Profile
-
Send Message
Posted Dec 30, 2011