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)
Seriously it's REALLY annoying plz fix bug...i'v more than 3000 players files and they loose stuff, enchant, xp don't separated per world etc...
@Drayshak
@CarrotCodes
Plz update your plugin it's really annoying, Fix XP per world & enchant :D
Is it working for craftbukkit-1.0.0?? I tested it and it told me that my players were unable to go to another group?!
@Liger_XT5
please update your plugins :(
1) I'm also getting the NPE on attempted MultiInv import. The only thing that I can think of based on my setup is it doesn't like a world name that is a number, but I'm not certain that's the cause. Error below.
2) When you first load the server with a new group defined that contains worlds that have never been seen by this plugin, which world's inventory gets written to the .inventory files in the plugin/group subfolder, the first world listed in the group?
3) Would I have issues if I want to remove (permanently) the first world in a group list with the server off (assuming I'm all setup and everything was already working)? Would the groups inventory still be ok?
4) I'm a little unsure where exactly players' inventories get saved to or read from (and when) when using a plugin like this. Are the .dat files in each world's players folder still written to when using this plugin like they would be in a non-multiworld scenario? When do they come into play vs. the .inventory files in the plugin folder. I never quite understood this about MultiInv either.
Sorry for all the questions. I'm just trying to understand how exactly it works so I know how to fix problems should they occur. I wound up in a jam with MultiInv and the author never really answered these questions for me (or not in a way I understood). Thanks :)
Thought I'd mention I just had an incident where I lost 10 levels of exp when I went from my normal survival world to a creative then back. Both set with different group names, for obvious reasons, lol.
Your plugins don't works for me i can't import from multiInv :( I try to import MultiInv but it doesn't works
2011-11-21 08:44:31 [INFO] [WorldInventories] Initialising... 2011-11-21 08:44:31 [INFO] [WorldInventories] Loading configuration... 2011-11-21 08:44:31 [INFO] [WorldInventories] Loaded configuration successfully 2011-11-21 08:44:31 [SEVERE] Error occurred while enabling WorldInventories v0.0.12 (Is it up to date?): null java.lang.NullPointerException at me.drayshak.WorldInventories.MultiInvImportHelper.playerInventoryFromMIString(MultiInvImportHelper.java:21) at me.drayshak.WorldInventories.WorldInventories.importMultiInvData(WorldInventories.java:344) at me.drayshak.WorldInventories.WorldInventories.onEnable(WorldInventories.java:495) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:174) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:957) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:280) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:171) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:154) at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:413) at org.bukkit.Bukkit.reload(Bukkit.java:182)
@th3controller
MySQL support? You mean for storing the inventory? I hadn't considered this, might be interesting to add as extra functionality (disabled by default).
@NiNjAiKoToBa
With regard to compatibility with other plugins - unless there are many many users I'm not willing to write plugin support in to this so I have to build against other things. The best way to know is to try it and see - do let me know if you have problems and I might be able to find a way around it.
@Shooty_
This is because WorldInventories doesn't switch your inventory when you rejoin. There was a good reason for this but I've forgotten why so I'll do some testing with it again - if I can't find a good reason not to switch I'll do an update.
@Liger_XT5
Interesting thought, I hadn't considered enchantments.
I use it on my personal multiplayer server and enchantments seem to work fine so I think it's ok.
@nicquehen
Same 'issue' here :) i'm glad if author can found a solution !
Add MySQL support and this plugin will be so perfect :D
Is this plusin compatibe with Pathogen Player Lives because multiInv wasnt
Switched over.. I already prefer this over MultiInv.
I quite enjoy the notifications of which inventory group you're in.
And I also like that inventories aren't stored in plain text, that kind of annoying me with MultiInv. It would be nice to have something that could read them, though. Perhaps make it compatible with INVedit, somehow? I dunno.
Good job though, I'm happy with this.
I found a bug (already same than multiinv) is very huge bug for me i explain :
I have some world which close some day (i use the multiverse commande /mv unload to close the world)
If some member are in this world, no problem the inventory switch on the default server.
But if some member disconnect (before the mv unload) on the close world and theyre are reconnecting, they have keep the inventory :/
i need to find a solution : -clearinventory when a player disconnect on this world (but which plugin can do that xD ? ) or -tp the player on disconnect (but which plugin can do that xD ? )
I really like the simplicity. I'm only using a plugin like this mainly for a set of interconnected survival worlds and a creative world.
Does this work well with enchants on 1.9pre5 non-RB of CraftBukkit? I understand the food/health setting, does it also do the experience as well?
Very very good plugin. Cant seem to find any bugs with it and the inventory switching works like a charm. Very lightweight and easy to setup (got it up and configures within 1 minute) and no need for permissions. ∞thanks to u :)
Ps. that sign that you can hardly see is infinity sign
@HotelErotica
Make sure everything is updated. I have no problems with the plugin at all works just as fine as multiinv but has greater performance.
I tried switching from MultiInv and it seems to have worked but i get this odd little problem when i switch between worlds i cant actually see the inventory for that world until i reconnect again.