Inventory
Easily give a player any items for retrieval at their convenience. Editing by admins and withdrawal by players both use the chest inventory in-game interface. The default /give command requires a player to be present and their inventory having space to receive items, this plugin allows you to give players items without them being present or concerned about their inventory space.
Admins can edit a "Delivery" inventory for specific players and fill them with any items available to the admin's inventory, just like filling up a chest. Players can then right click in the air while holding a chest to open their boxes and withdraw the items (or even use the /withdraw command if you'd prefer.) Players can not place any items into a Delivery inventory or even replace the items they have taken out. It's not designed to be a storage mechanism for the player, just a pull based interface for when they are ready to receive the items.
The Inventory plugin is a convenient distribution mechanism that does not break default game mechanics (players do not have any additional inventory to store their items after they are retrieved) and keeps the interactions intuitive with how the game already works (chest inventories are a familiar interaction with players instead of typing /commands and learning parameters).
The Inventory plugin also supports defining a collection of items referred to as a "Kit" and then sending kits with the /kit command. This helps automate supplying players with commonly given items in a single command.
[ All item storage fully supports standard Bukkit item metadata. This means enchantments, books, custom names, lore, etc, are all able to be stored and delivered. ]
Commands
/withdraw
Open your specific pull based inventory
(Requires inventory.withdraw
permission, default allows everyone to open their own)
(The inventory.withdraw.chest
permission allows players to simply right click in the air with a chest to do the same as this command, and by default everyone can do this also)
/delivery.edit player
Edit a player specific pull based inventory
(Requires inventory.edit
permission, default allows ops only)
/delivery.empty player
Remove all items from a payer specific pull based inventory
(Requires inventory.empty
permission, default allows ops only)
/kit.define kit
Create (use a new name), edit, or delete (remove all items)
(Requires inventory.define
permission, default allows ops only)
/kit kit player [quantity]
Issue or recall a kit
(Requires inventory.kit
permission, default allows ops only)
/kit.delete kit
Delete a kit without opening the chest interface for it
(Requires inventory.delete
permission, default allows ops only)
/copy [player]
Copy the item currently held, and optionally send it to the designated player
(Requires inventory.copy
permission, default allows ops only)
/move player
Move the item currently held to the designated player
(Requires inventory.move
permission, default allows ops only)
Are there any plans to update this plugin to work in 1.7 and 1.8? I tried it on our 1.7 server and it failed to load.
@TheKitsch
It's not a waste of my time to at least look at all this. I did not meant to imply such either. In fact, I consider a public discussion of such concerns and interests valuable for all who might come here seeking similar.
I personally would question the reliability of a plugin that caused me to be kicked upon its usage, desired outcome or not. It underlines the instability and guesswork of coding directly against undocumented/unsupported implementations (CraftBukkit, Minecraft, etc.) It's a simple side effect that has a workaround (simply rejoin) but again it just makes me so nervous about how much else could be going wrong and I may not find out about it all until it's too late.
The complexity comes from how to do it properly. Many plugin authors will take shortcuts that I simply won't impose on the server owners that use my plugins. They are too unreliable. I rely on the Bukkit team to support the Bukkit API and we all can win that way. Of course, the caveat there is when you want to do some really custom mods... sometimes you just gotta take the risk, I get that.
I wish you the best of luck in finding what you need.
@EdGruberman
Thank you for taking the time to answer. I've never had a problem with PowerNBT that couldn't be easily fixed. Editing a block directly kicks you from the server but it does successfully edit the block.
I Didn't know it was so complicated. I thought it was as easy as creating a recursive function and just copying it over like that. Maybe that's how it works when dealing with an actual mod, but I guess bukkit API works differently in that aspect. I just assumed that given Minecraft is essentially made to be modded that this would be a very easy thing to do. I guess I was wrong.
Sorry for wasting your time.
@TheKitsch
Oh, there are ways to support custom NBT data if you do it yourself, yes. But that increases complexity and support effort significantly. On top of that, you run the risk of assuming too much and backing your users into a corner or worse (breaking things).
Basically it is possible to code against CraftBukkit/Minecraft directly. But like I said, I won't commit to that with this plugin. There is just too much to manage for such needs and it typically creates more problems than it resolves.
I really like the simplicity and supportability of the Bukkit API. It allows for rapid development and long term stability. I simply won't commit to custom NBT data support if Bukkit doesn't support it natively. I know that may limit the complete usefulness of this plugin, but it's all I can guarantee right now in my free time (which has even been really sparse lately itself.)
Oh yeah, just checked out PowerNBT. That guy is doing some nasty reflection voodoo: https://github.com/DPOH-VAR/PowerNBT/blob/9e351418a1046b24fb16fe6594d07fcbd8ec1006/src/main/java/me/dpohvar/powernbt/utils/ReflectionUtils.java
See he is dynamically looking at Java code at runtime and assuming a lot... what their names are, how they work, etc. If Mojang changes how those functions work one day and he doesn't have proper checks in place to prevent problems, your server could suddenly start to delete/alter/destroy your custom NBT data. And in fact, look at the problems it creates with plugins like mine which support the Bukkit API exclusively. PowerNBT leads server owners to believe that custom data is just fine and there is no problem with it, when in fact it is simply not supported.
Now this all said, I believe Mojang has been encouraging a lot more custom NBT type of solutions... but like I said I'm not sure Bukkit's official stance on all that just yet or how it will play out. We are sort of at a crossroads in time where a decision will need to eventually be made on how to properly handle that data. But until then, I can't do it myself, it's just too much effort and danger.
@EdGruberman
Hey, I don't think you're exactly right on that. I have a plugin on my server called PowerNBT and it lists NBT data perfectly, and allows me to edit it. Based on that I assume there is some way to do it.
Best of luck, and thank you for the speedy responses!
@TheKitsch
I'm a bit out of touch with Bukkit at the moment by a few months or so, but this plugin only uses native Bukkit functionality to serialize NBT data. I'm assuming Bukkit still is not supporting custom NBT data in some fashion.
I'll try and find time over the coming weeks to see what is going on exactly.
Hey, I found a problem. This Plugin doesn't seem to store NBT data.
I Use this plugin on a CrackPack server, and whenever I put something in the inventory, Non standard NBT data gets wiped.
Is there a way to make it keep All it's NBT data, because as of right now it only keeps specific NBT data.
A more specific example is I have this http://puu.sh/8n8UC.png NBT data on an item, and when I put it in the Inventory of your plugin, all the NBT data in it get's erased. This is a big issue as the NBT data makes or breaks this item, as well as many more.
@TheKitsch
I'm excited to hear this plugin works well for you and your server.
The copy and move commands were really last minute adds that I decided to put in when I started thinking about the various manipulations admins might want. Primarily useful for things like where an admin can use other game mechanics to administratively create an item (anvil, enchantment table, etc) then want another player to have the item immediately and not have to go through a delivery interface. Although I agree they don't flow exactly with the other commands/usage of this plugin. Ideally I'll find some more time to make all these commands have a more unified experience which lets you choose to put it in a player's direct inventory immediately if there is space, then rollover to a delivery inventory as appropriate. Then if you use /copy or /move and there is no space, it'll rollover to delivery also. I guess they are only partially implemented placeholders for an idea at this point.
No ongoing resources are used by this plugin other than the file space to store the delivery inventory information for each player. The only time this plugin will use resources is when a player opens their delivery inventory, it'll read their delivery file and load up a temporary inventory chest instance for them to manipulate as appropriate. But all of that is practically equivalent to any player opening a regular chest in game. So basically, no.
Wow, This plugin Works amazingly. I don't quite see the use of the /copy and /move command, but everything else works extremely well.
My server is trying to automate donations as much as possible and your plugin solved an issue of items just not being given/overwritten.
One question though, what resources does this use on the server? Does it use any resources past actual use? What I mean by this is, when the plugin is not being used, does it hog up any resources?
@dawm
Yes /ekit would totally work also.
I also forgot bukkit.yml aliases do not support periods in them. :(
You could maybe do something like:
Or whatever you want appropriately. But yes, the point is to find aliases you want to use as you prefer.
@EdGruberman
I tried the settings you mentioned but i get this error:
[WARNING] The following command(s) could not be aliased under 'delivery' because they do not exist: MemorySection[path='aliases.delivery', root='YamlConfiguration']
but now that you brought it to my attention, i can just use /ekit if i want to dump to inventory. would be handy to figure out how to custom the alias tho
@dawm
It turns out Essentials does some non-standard things with commands... For some reason they force another plugin's command alias to override their plugin's primary command name. So you'll need to use your bukkit.yml alias (kit) to point to the Essentials alias (ekit) to ensure it works as you want. Based on what you said, I'd guess you'd want this in your bukkit.yml file:
That will give you your /kit command calling Essentials and /delivery.kit, /delivery.kit.define and /delivery.kit.delete calling Inventory appropriately.
@EdGruberman
Wow quick response! I'm using Essentials for my preferred /kit command
@dawm
You should be able to control the commands using the aliases feature in the bukkit.yml file.
I haven't flushed out this plugin's documentation yet, but you can find the originally registered command names in the source: https://github.com/EdGruberman/Inventory/blob/master/resources/plugin.yml
So, you could force the kit alias to point to your preferred plugin's command, then alias the inventory:kit command to delivery.kit or whatever you want for intuitive interaction as you see fit:
If you tell me the other plugin I can try and research the exact syntax for you. I'm curious myself to ensure this works as I expect it to.
Also, I'll eventually be adding a feature to this plugin to allow for adding kits directly to a player's current inventory (and with automatic overflow control if it's full/they are offline/etc also for that matter...) So maybe one day you can consolidate your plugin usage and avoid having to deal with conflicting commands altogether.
GREAT idea! And works great.
Any chance you could change /kit.* to /delivery.kit.* or something similar?
Since the puts the kit in the delivery anyways? I'm unable to use another plugins /kit which puts items directly into the users inventory and I would love to have both functionalities at the same time.
@craftik7
Who says it might not eventually? :)
you should rename it so people wont think this handle inventories per world/gamemode/etc
@tjjerome
Yes. That's exactly why I created this plugin for myself in the first place.
Can the kit commands be used from the console? I'd like to use something like this for voter and donator perks that would be automated on my website.
@Zulgol
I'm surprised 1.4.7 doesn't still work. Although I don't test against it directly, there is code in the plugin's latest version that should let it work with such.
What specific error are you getting? Do you have any log files?
In fact I just tested myself with 1.4.7 and it works. So something is up with your setup. I'm not very familiar with FTB setups and how they work though. Perhaps there is some other conflict?