OpenInv
Open anyone's inventory or ender chest and modify it in real time! Works with offline players!
Description
This plugin allows you to open any player's inventory or ender chest and interact with it in real time. You can also do it for offline players! This includes access to the armor slots as well as being able to drop items as if you were the player by moving them into the unused slots to the bottom right. Additionally, you can open any chest that is blocked with blocks above it with AnyContainer and open containers silently (no sound or opening animation) with SilentContainer.
Features
- Read-only permissions for OpenInv and OpenEnder! Just don't give the editinv and editender permissions nodes!
- Administrators can modify any user's inventory or ender chest contents as they wish, in real time.
- Access from anywhere! No distance or obstacle limitations.
- Permissions support.
- Player inventories and ender chests of any player can be opened. Even for offline players!
- Using the openinv or openender command without any arguments opens the last accessed player's inventory/ender chest.
- Search all online players for a certain item in their inventory or ender chest.
- Protect players from openinv with exempt permission, and bypass protection with override permission.
- Cross-world openinv protection.
- Self-opening protection.
- Open containers that are blocked by solid blocks or ocelots with the 'AnyContainer' feature.
- Silent opening of containers with no sound or opening animation.
- Drop items as the other player (by putting it in the unused slots in the bottom right)
Installation
To install OpenInv, simply copy the plugin to your plugins folder and restart/reload your server.
Commands
Command | Aliases | Description |
---|---|---|
/openinv <player> | oi, inv, open | Opens a specified player's inventory. |
/openender <player> | oe | Opens a specified player's ender chest |
/searchinv <item> [minAmount] | si | Lists all players that have a certain item in their inventory. |
/searchender <item> [minAmount] | se | Lists all players that have a certain item in their ender chest. |
/searchenchant <[enchantment] [MinLevel]> | searchenchants | Lists all online players with a specific enchantment. |
/anycontainer | ac, anychest | Toggles AnyContainer mode (blocked container bypass) |
/silentcontainer | sc, silent, silentchest |
Toggles SilentContainer mode (open containers silently) |
Permissions (CaSe SeNsItIvE)
Permission Node | Description |
---|---|
OpenInv.openinv | Gives permission to use OpenInv. |
OpenInv.openself | Allows opening the inventory of the command user. |
OpenInv.editinv | Allows editing of inventories. |
OpenInv.openender | Allows opening of ender chests. |
OpenInv.openenderall | Allows opening of ender chests of everybody. Without this permission, someone can only open his own ender chest. |
OpenInv.editender | Allows editing of ender chests. |
OpenInv.search | Gives permission to use searchinv and searchender command. |
OpenInv.searchenchant | Required to use /searchenchant. |
OpenInv.crossworld | Allows cross-world use of openinv. |
OpenInv.exempt | Makes the player's inventory protected (unable to be opened). |
OpenInv.override | Gives permission to open anyone's inventory, even protected ones. |
OpenInv.anychest | Gives permission to open chests that are blocked by a block on top. |
OpenInv.any.default | Causes AnyContainer to be enabled by default. |
OpenInv.silent | Gives permission to open chests in total silence, without animation. |
OpenInv.silent.default | Causes SilentContainer to be enabled by default. |
Other
Source Code hosted on GitHub
Original Bukkit forum thread: http://forums.bukkit.org/threads/15379
Hi, I'm getting this error on OpenInv 4.0.0 with paper-23 for 1.14.1
I hope this helps!
In reply to AcronMC:
Whoops, sorry, looks like I forgot to post 4.0.1 here. Releasing from mobile would be a pain, but in the meantime it's available on GitHub in the releases tab.
Hi, I've just upgraded Spigot to 1.14.1, and while the plugin works fine (or at least I haven't been able to see a problem), we've been getting a lot of the errors below in the console. On Spigot 1.14 it wasn't present either at all, or maybe just once-twice a day, so I didn't really pay attention to it, but now it's been going off really often. I have no experience with java exceptions, but I'm sure it will tell you a lot more :)
[11:27:21] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to OpenInv v4.0.0
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:520) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:505) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:423) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.PlayerInteractManager.a(PlayerInteractManager.java:435) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1263) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:27) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:13) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:135) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:114) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:895) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:888) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeAll(SourceFile:99) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:871) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:805) [minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
Caused by: java.lang.NoSuchMethodError: net.minecraft.server.v1_14_R1.TileEntityShulkerBox.s()Lnet/minecraft/server/v1_14_R1/TileEntityShulkerBox$AnimationPhase;
at com.lishid.openinv.internal.v1_14_R1.AnySilentContainer.isBlockedShulkerBox(AnySilentContainer.java:140) ~[?:?]
at com.lishid.openinv.internal.v1_14_R1.AnySilentContainer.isAnyContainerNeeded(AnySilentContainer.java:93) ~[?:?]
at com.lishid.openinv.listeners.PlayerListener.onPlayerInteract(PlayerListener.java:65) ~[?:?]
at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[minecraft_server.jar:git-Spigot-8043ebc-dd99c5b]
... 19 more
In reply to Forge_User_74556228:
Sorry about the long message, I thought it would be formatted as a code paragraph. Anyway, I did some testing, and it seems like this error pops up every time a player opens a shulkerbox. They can manipulate the contents, there is no problem whatsoever, but the exception is still there. I hope that helps a bit.
Is there any way to just completely disable opening containers silently in the config.yml or any other way?
In reply to Forge_User_03954045:
Don't grant users the permission OpenInv.silent
Edit: Note, this is default allowed for ops, so if you're having issues with them not following instructions, while you can use a permissions plugin to negate that node, you should probably reconsider allowing them that level of access in the first place.
In reply to Jikoo_K:
Thanks, really useful plugin btw!
Could this plugin be updated to include inventory restoration functionality? So... If a player dies, admin could restore the players inv, xp, etc that they had when they died? I don't want to have keep inv on, this function would be for edge cases only.
Currently running 1.13.2
On a side note, Great pluggin, love it, keep up the good work!
In reply to daveb7945:
OpenInv is designed to open inventories that ordinarily aren't accessible. That's definitely out of scope, especially if your use case is an edge situation where players can be required to be online anyway. There are already logging plugins that can effectively accomplish your goal and more specific grave system-like plugins that add that exact functionality.
Since I doubt most of you were following the 1.14 update issue on our tracker, I'm reposting this here:
While going through the update process, it occurred to me at several points that my life would have been made significantly easier by being able to access Java 8 features. I'll be releasing one last version with full backwards compatibility. After that, OpenInv will be dropping support for Java versions <8. With that, I also see no reason to continue to maintain support for such a huge quantity of outdated versions.
When I took over maintaining OpenInv, there were enough dupe bugs and longstanding issues to warrant backporting bugfixes to older versions, but at this point it's just a barrier that prevents other developers getting involved. I plan on maintaining only 1.8.8 and whatever happen to be the latest 2 major revisions at the time. In the future, OpenInv will require the current Minecraft release's minimum Java version, despite what older supported versions may allow.
Hey Guys, im running 1.14 and any command i use comes back with internal error. any thoughts ?
In reply to kristinr96:
Are you running the dev build for 1.14? Otherwise the plugin should clearly state in your startup logs that your version is not supported. I suppose it would be nice to warn people with command feedback too.
In reply to Jikoo_K:
yeah i didnt see that before but it does say its not supported, im running a bukkit server how do i get the dev build for 1.14?
In reply to Jikoo_K:
do you have a link to the bukkit version i should be running ?
In reply to kristinr96:
It's on GitHub. I'm not going to link it directly due to old Bukkit policies I'm not sure Curse abolished, but if you can't find it and figure out how to get it running with that info, you probably shouldn't be running a dev build.
when does the 1.14 plugin of openinv ??
In reply to Forge_User_66559990:
When I have time. 1.14 was only released yesterday - mappings are different from pre5 - and 1.14 as a whole requires some decently significant rewrites. Nowhere near as easy as some of the old version changes, unfortunately. Hoping to have at least a test build out this weekend.
good and helpful admin plugin
5 stars
HI,
when i open a chest in silentmode and close it the owner isn't able to open the chest anymore.
Can you tell me why this happens?
Yours J
A bug:
If you use SilentContainer mode and There's some ANTI-CHEAT plugin in server,
You opened the chest in silent and other players cannot open this chest again.
Because ANTI-CHEAT plugin prohibit others from opening the chest.
Can you fix the bug? Just close the container when OP close the GUI
Thx
I don't want to delete ANTI-CHEAT mode,because I don't want players copy any items by using chests!