MultiInv

What is MultiInv

MultiInv is a plugin that gives players a separate inventory for every different world running on the server. You can share inventories over chosen worlds and some players can be ignored entirely. With this power it is possible to have multiple worlds running on one server, but keeping them totally segregated from one another.

MultiInv can also separate health over certain worlds allowing for total separations of a world on a server.

If MultiInv refuses to work and you can't change inventories, it's because you have the wrong version of the TuxTwoLib or forgot to deny yourself the permission multiinv.exempt!

Update for UUIDs and 1.7.9 (there will be no support for 1.7.8 or below due to game breaking bugs) are here! Download will be available as soon as Bukkit Dev approves it.

MultiInv and MobArena are currently not compatible! Make sure users can only join a mob arena from the same world group!

Starting with MultiInv 3.2.1 we now require the library TuxTwoLib to maintain compatibility across various minecraft versions

Video Tutorial

Features

  • Separate world inventories
  • Create groups of worlds where the inventory is shared between them
  • Separates XP, food, health, potion effects, and EnderChest inventory per world/group of worlds.
  • Option to ignore certain players completely (permissions based)
  • Can import Multiverse-Inventories/WorldInventories saved inventories.
  • Option to use mySQL instead of flat files.

Forums/Problems

The forums for this plugin (at the top of the page) are the best place to go if you have any questions that aren't just general comments (such as "I hat you" or "I love you"). There I can see which problems have been replied too and who still needs help.

Using MultiInv with BungeeCord

Since BungeeCord requires servers to be in offline mode it's sometimes hard to acquire a reliable UUID if Spigot/BungeeCord isn't configured correctly. Here are the settings you will need to change:
In the BungeeCord config.yml make sure ip_forward is set to true
On the server in the spigot.yml make sure bungeecord is set to true
By setting these two options BungeeCord will be able to pass the correct UUID to the servers. Please note that if you are sharing inventories across multiple servers that this feature is still in beta and may not always work.

Commands

  • /multiinv reload - Reloads config files.
  • /multiinv import - Imports flat files into a mysql database.
  • /multiinv mvimport - Imports Multiverse-Inventories into MultiInv, with the database that you have selected. (You will need to have the Multiverse-Inventories plugin installed when doing the import, just make sure to remove it afterwards)
  • /multiinv miimport - Imports WorldInventories into MultiInv.
  • /multiinv mcimport - Import Minecraft player files into MultiInv. (Only useful when you've got existing player data and you are enabling the SaveInventoryOnQuit option)
  • /multiinv mcexport - Exports MultiInv player data for the default world into the default world in Minecraft format.

Permissions

  • multiinv.reload - Permission to use the reload command
  • multiinv.import - Permission to use the import command
  • multiinv.mvimport - Permission to use the mvimport command
  • multiinv.mcimport - Permission to use the mcimport command
  • multiinv.mcexport - Permission to use the mcexport command
  • multiinv.exempt - Exempts player from inventory switch (If your inventory is not changing, deny yourself this permission in your permissions manager!!!!)

Configuration

^That's a link up there

Updating from MultiInv 2.x to 3.x

  1. Delete your old config.yml file in the plugins/MultiInv directory
  2. Start the server with the new plugin
  3. Rename the Worlds folder to Groups under the plugins/MultiInv directory.
  4. Rename shares.yml to groups.yml
  5. Cut the creativeGroups section out of groups.yml and paste it at the end of config.yml
  6. Edit the config.yml to your prefrences
  7. do: /multiinv reload
  8. If you are moving to the mysql database do: /multiinv import
  9. You're done, enjoy!

When, Where, and How are the Inventories Saved?
Old forum page (Includes old version links)
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.
Jenkins Dev Builds
Source Code

Please note, that while I (Tux2) am maintaining this plugin you must file bug reports under the tickets section. If you're having a problem, try replicating it in the latest version of MultiInv as it could already be fixed! Also, if you want your problem to be addressed please make sure to include the MultiInv version, the TuxTwoLib version, your config.yml and groups.yml files contents as well, (even if it is a comment asking for help) If you do not follow these guidelines your comment may be deleted without warning!

MC Stats for MultiInv
Stats provided by Plugin Metrics

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of doublezout doublezout Sep 22, 2016 at 03:35 UTC - 0 likes

    Thank you both for at least confirming that I wasn't the only person struggling with this whole thing.

    @WACOMalt, I am using MultiInv and the mail glitches everybody is reporting (including me) are Banners dropping off shields, Potions turning into water bottles, and 1.9 Tipped arrows reverting to regular arrows, it is driving my players crazy.

    @WonkoTheSane1, Yes, you are correct there are really no robust stable Inventory Management plugins out there! I've heard that Multiverse-Inventories is decent even though it is abandoned but the converter doesn't work, I've tried it!!!

    So what other options do we have??? Anybody know of any other ideas? Thanks a ton -doublezout

    ZBDH2696e1462ce01a2e46665d8433694dd1

  • Avatar of WonkoTheSane1 WonkoTheSane1 Sep 07, 2016 at 23:07 UTC - 1 like

    @WACOMalt: Go

    The newest version of PWI looks like it might support converting directly from MultiInv. I see your post on that plugin's page so hopefully someone there will have a definitive answer.

    I'm responding here just to let you and everyone else know that, based on the past few months of discussion on the PWI page, it looks like that plugin is riddled with random inventory loss bugs that the developer has no idea how to fix. He seems to be trying, but rather unsuccessfully so far. My advice: Read the recent discussion and be aware of the possible issues before you convert.

    It's unfortunate because, as far as I know, PWI is the only other plugin that does the job. So with MVI and MultiInv both officially abandoned and PWI potentially too buggy to use on a production server, we're all left with no real options at the moment.

  • Avatar of WACOMalt WACOMalt Sep 07, 2016 at 15:42 UTC - 1 like

    I'm sadly needing to leave this plugin due to a couple bugs in 10.2 (some potions turning to water bottles etc). I'm trying to switch to PerWorldInventories as that is up to date and is suggested by Multiverse.

    The problem is, how to switch? PWI only imports from MultiverseInventories, and MultiInv only IMPORTS from that, but can't export to it. So there appears to be no path from MultiInv to PWI.

    Does anyone have any suggestions as to how I could possibly handle this switch? Short of asking every single player to sign on, move all of their inventories into a chest, then do the switch...

    On the other hand, I see @Pluckerpluck: Go is possibly picking this up. Would I be smarter to just wait for an update to fix the few bugs (and hopefully removal of Tux2 dependency) that remain?

    Last edited Sep 07, 2016 by WACOMalt
  • Avatar of KatranLife KatranLife Sep 05, 2016 at 05:28 UTC - 0 likes

    1.10.2 Error

    <<code [08:27:06 ERROR]: Could not pass event PlayerChangedWorldEvent to MultiInv v3.3.6 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot19.jar:git-Spigot-687a019-568e27f] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot19.jar:git-Spigot-687a019-568e27f] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot19.jar:git-Spigot-687a019-568e27f] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.PlayerList.moveToWorld(PlayerList.java:688) [spigot19.jar:git-Spigot-687a019-568e27f] at org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer.teleport(CraftPlayer.java:486) [spigot19.jar:git-Spigot-687a019-568e27f] at com.earth2me.essentials.Teleport.now(Teleport.java:126) [Essentials-2.x-SNAPSHOT.jar:?] at com.earth2me.essentials.Teleport.teleport(Teleport.java:194) [Essentials-2.x-SNAPSHOT.jar:?] at com.earth2me.essentials.Teleport.teleportPlayer(Teleport.java:158) [Essentials-2.x-SNAPSHOT.jar:?] at com.earth2me.essentials.spawn.Commandspawn.respawn(Commandspawn.java:68) [EssentialsSpawn-2.x-SNAPSHOT.jar:?] at com.earth2me.essentials.spawn.Commandspawn.run(Commandspawn.java:39) [EssentialsSpawn-2.x-SNAPSHOT.jar:?] at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsCommand.java:180) [Essentials-2.x-SNAPSHOT.jar:?] at com.earth2me.essentials.Essentials.onCommandEssentials(Essentials.java:527) [Essentials-2.x-SNAPSHOT.jar:?] at com.earth2me.essentials.spawn.EssentialsSpawn.onCommand(EssentialsSpawn.java:72) [EssentialsSpawn-2.x-SNAPSHOT.jar:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [spigot19.jar:git-Spigot-687a019-568e27f] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot19.jar:git-Spigot-687a019-568e27f] at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchCommand(CraftServer.java:646) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.PlayerConnection.handleCommand(PlayerConnection.java:1351) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:1186) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot19.jar:git-Spigot-687a019-568e27f] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_79] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_79] at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:733) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:672) [spigot19.jar:git-Spigot-687a019-568e27f] at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:571) [spigot19.jar:git-Spigot-687a019-568e27f] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79] Caused by: java.lang.NoClassDefFoundError: net/minecraft/server/v1_9_R1/NBTBase at uk.co.tggl.pluckerpluck.multiinv.inventory.MIItemStack.<init>(MIItemStack.java:64) ~[?:?] at uk.co.tggl.pluckerpluck.multiinv.inventory.MIInventory.<init>(MIInventory.java:34) ~[?:?] at uk.co.tggl.pluckerpluck.multiinv.player.MIPlayer.saveAll(MIPlayer.java:119) ~[?:?] at uk.co.tggl.pluckerpluck.multiinv.listener.MIPlayerListener.savePlayerState(MIPlayerListener.java:507) ~[?:?] at uk.co.tggl.pluckerpluck.multiinv.listener.MIPlayerListener.onPlayerChangedWorld(MIPlayerListener.java:356) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot19.jar:git-Spigot-687a019-568e27f] ... 29 more Caused by: java.lang.ClassNotFoundException: net.minecraft.server.v1_9_R1.NBTBase at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:91) ~[spigot19.jar:git-Spigot-687a019-568e27f] at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot19.jar:git-Spigot-687a019-568e27f] at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79] at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79] at uk.co.tggl.pluckerpluck.multiinv.inventory.MIItemStack.<init>(MIItemStack.java:64) ~[?:?] at uk.co.tggl.pluckerpluck.multiinv.inventory.MIInventory.<init>(MIInventory.java:34) ~[?:?] at uk.co.tggl.pluckerpluck.multiinv.player.MIPlayer.saveAll(MIPlayer.java:119) ~[?:?] at uk.co.tggl.pluckerpluck.multiinv.listener.MIPlayerListener.savePlayerState(MIPlayerListener.java:507) ~[?:?] at uk.co.tggl.pluckerpluck.multiinv.listener.MIPlayerListener.onPlayerChangedWorld(MIPlayerListener.java:356) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot19.jar:git-Spigot-687a019-568e27f] ... 29 more 1 f 1 1 f 1>>
    
    <</code>>
  • Avatar of orgin_org orgin_org Aug 22, 2016 at 18:47 UTC - 0 likes

    @Pluckerpluck: Go

    Any progress?

    My server: colonies-playground.com

    Website: www.colonies-playground.com ZBDHbbb47759a5e2b8e46d6365939e09af16

  • Avatar of Pluckerpluck Pluckerpluck Aug 04, 2016 at 17:13 UTC - 0 likes

    @Tux2: Go

    I can get this back on its feet, but I need a bit of time (to work out how everything works now). Is there no chance of you getting it to 1.10 in the meantime?

  • Avatar of Tux2 Tux2 Jul 28, 2016 at 07:02 UTC - 0 likes

    Due to being in hard times at the moment I will not be able to continue this plugin. Since it is open source I would be more than willing to pass it on to a developer who is up to the task.

    Tux2

    http://myfavs.me/bcs.pngDonate Bitcoins?1Lr7prAnqYpZe2UizvPKV2Cg4KSuj2weXb
    If you didn't take the time to read how my plugins work, don't expect me to take the time to diagnose your stupidity.
    If updates to my plugins depended on donations, they would never update. Donate!

  • Avatar of Androkai Androkai Jul 10, 2016 at 11:24 UTC - 0 likes

    @Yusei0: Go

    Die permissions.yml sieht gut aus, das Problem liegt also wahrscheinlich noch an anderer Stelle. Das kann jetzt vieles sein. Vielleicht hast du nach der Änderung noch kein /pex reload genutzt oder einen Neustart durchgeführt oder oder oder. Du kannst mir per Privater Nachricht ja mal deine Serveradresse senden, dann schau ich mal, ob ich den Fehler finde. Ansonsten kann natürlich ach ein Fehler aufgetreten sein, dann müsstest du aber weitere Infos im Log dazu bekommen.

    BigCraft.net - Minecraft in familiärer Atmosphäre genießen

  • Avatar of Yusei0 Yusei0 Jul 10, 2016 at 10:46 UTC - 0 likes

    @Androkai: Go

    Wie ich Sehe Kannst du scheinbar Deutsch

    Meine permission.yml ist neu daher auch nur diese die permisssion vom plugin drin

    Permissions.yml:

    groups:
      default:
        options:
          default: true
        permissions:
        - modifyworld.*
      Owner:
        permissions:
        - -multiinv.exempt
        - '*'
    schema-version: 1
    users:
      1a0daa49-c17f-4357-b6d7-cdf24cf6e525:
        group:
        - Owner
        options:
          name: Yusei0
    
    Last edited Jul 10, 2016 by Yusei0
  • Avatar of Androkai Androkai Jul 10, 2016 at 10:38 UTC - 0 likes

    @Yusei0: Go

    Maybe test /deop <playername>, sometimes being op overwrites set rights. Otherwise we need additional information like your permissions.yml from PermissionsEx.

Facts

Date created
Aug 26, 2011
Category
Last update
Mar 02, 2016
Development stage
Release
Language
  • enUS
License
GNU General Public License version 3 (GPLv3)
Curse link
MultiInv
Reverse relationships
1
Downloads
310,124
Recent files

Authors