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)
@th3controller
The only changes to the configuration have been additions, and they default to 'false' (as in, as if the functionality didn't exist) - you're fine to upgrade but if you want to use any new functionality you should check the changelog and change the configuration value accordingly.
Very great and useful plugin, thank you! :-)
I have a question, does this plugin update the configuration file automatically when you make changes to it? I am planning to update from 0.0.10 to 0.0.12 and I read the change logs that you changed something in the configuration file. So does this plugin automatically update the config file?
@th3controller
Thanks for the kind words. I did read your previous request to document but completely forgot to reply.
I appreciate the offer but it's really not necessary at the moment, there's very little to configure and this page is enough for now. Sorry :(
Nice job! I also heard MultiInv is having some bug and "transferring items through world". It also uses too much memory. This plugin is the future! Kudos to you my friend!
@lawliet555
As YAML is whitespace dependent I can't really read your configuration unless you paste it somewhere like pastebin.com - could you do that so I can take a look please?
@CarrotCodes
<3
Many thanks!
I tried using your plugin a little while ago but could not get it to change the players inventory between the worlds that i wanted it to. Bellow is the config file i was using.
domiimport: true donotifications: true dostats: false groups: examplegrouptwo: - exampleworldthree exampleworldone: - exampleworldone - exampleworldtwo creativeGroups: [] world: - world - guestworld - world_nether eventworld: - eventworld
I am trying to get it to make it so that the player has the same inventory for everything except event world.
i used the uploader from multinv and it created the above config file.
Thx
Sayomie
@c0mp13371331337
It does now :)
@Tauryuu
Currently it does not though this is something I'm interested in implementing, if the demand for it is there.
If you want you can make an issue on GitHub which will remind me to take a look at it. From what I gathered with MultiInv there can be some... issues... with regard to health - if I can save and load it in a robust way then I don't see why not. The name might become confusing though :D
EDIT: Implemented in recommended build 27.
Thank you Drayshak for keeping inventories in their place! Currently MultiInv developer is still active however doesn't have time to keep up his plugin. I would also like to be a documenter in your plugin most things like; maintaining changelog's, helping resolve tickets, and look for any errors. For assurance please check out a page I document: http://dev.bukkit.org/server-mods/admincmd/ I would really like to help out to a developer especially if that developer actually likes doing his job.
@Tauryuu
^This, I'm curious as well. Sorry if I missed it somewhere in the documentation or existing posts.
Does it also save and change the Hunger and Health for each world?
@CarrotCodes
Thanks! Replied to you on GitHub.
@Hoot215
Hi again! I've coded up an importer (you set an option in the configuration to import which sets itself to false after running) but I need to test it. Could you zip your MultiInv plugin folder (the one with Worlds / <all the groups> in it) and put it somewhere that I can get at it? If it works I'll push a new build for you to test, then if it works for you I'll promote it :)
EDIT: Further discussion should happen here: https:github.com/Drayshak/WorldInventories/issues/3
@Hoot215
Not currently but that's a good idea - I'll take a look and see if I can make an import tool (or perhaps even read it in automatically).
Is there a way to import my MultiInv data? I don't want my players to lose all of their items.
@Mad__Hat
No matter what I do (including testing on servers in various locations) I can't reproduce the issue you're describing, inventories never seem to 'overlap' for me. Could you provide console output please?
As for clearing players inventories, I agree - it was mostly personal preference but I switched it so it doesn't swap your inventory when you join. These changes are included in build 20.
EDIT: Raargh I closed the GitHub issue again by mistake. Sorry :( (it's back open now, best to discuss via that)
EDIT: Fixed and issue closed :)
With build 19 I am getting the correct message when I use the portal now, but the inventories aren't working correctly at all. It's like it's adding one worlds inv to the other's.
EDIT: It was also clearing player's inventories if they logged in and did not have a .inventory file for that group. Inventory group check/swap should not be done at login, only when switching from one world to another. It is probably just an initialization issue with a player's inventory group.
@AS1LV3RN1NJA
For one, this plugin uses groups of worlds - you can have a survival group spanning both the standard world and the nether associated with it (using a plugin like MultiVerse).
EDIT: Seems MultiInv does this too! I wrote this mostly for my own enjoyment, and a little bit of competition never hurt anybody :D I feel that my code is leaner, tidier and I'm faster to respond to issues.