KarmicShare
KarmicShare
About
This plugin acts as cloud storage for items that anyone (with the proper permission nodes or in the same group) can give and take items to/from. However, in order to prevent players from abusing the global / group item pools, there is a configurable per-item karma system in place to limit how many items a player can take without giving back.
This system can effectively create protected item pools that are accessible anywhere: between different locations, worlds, even servers (by sharing MySQL). Essentially, its a "one chest to rule them all" plugin. Players and groups can create these item pools with peace of mind that their items are safe from griefers/theives/accidents. Think of it like Dropbox for items: Just put your items in KarmicShare and access them wherever and whenever.
With integrated economy support, you can use KarmicShare as a global item exchange. One that is completely managed and funded by the players.
Features
- Shared global pool of items based on player item donations to the community.
- Per-item karma multiplier: specify which items have more karma points.
- Admin commands to manage the item pool and player karma.
- Nifty (optional) effects :D
- Enchantment support
- Potion support
- Physical chests that link to the item pool
- Just have a sign with "[KarmicShare]" tag (no quotations, but DO include brackets) on the second line, and it will become a link sign. Have it above a chest and it will link the chest to the item pool.
- Chest page support
- Can hold more than 2000000000 pages of items! More item slots than you will ever need.
- To change the "page" of a linked chest, either left click the chest or click on the sign (left or right click). Or jump to a specific page using an in-game command.
- Group support, groups have their own shared item pool
- Shift click a link sign / chest to cycle through your groups. Or use a command to set your selected group.
- Multiworld control: Define which worlds have / don't have access
- Vault support
- MySQL support
- Way more powerful than native Ender Chests
- Comment on comparison here
- Economy support
Commands and Permission nodes
Configuration
Community Videos
Thanks to @Diamondsftw
Thanks to @damnnicholas
TODO:
- Ability to change config in-game through commands
- Player signs with their current karma
- Faction support (if possible)
- Dynamic karma
- List players of a group
- Group settings with owners / managers
- Per-item amount limits
- Karma rewards
- Manage group item pools via commands (full support soon)
- Blacklist
- Localization
Trello Dev board
Visit the Trello board to see the current todo list for all projects.
You can comment and vote on any of the topics there.
All changes on the Trello board are in real-time.
Feedback is much appreciated :P If this plugin has helped you, please consider donating.
@Patolord
From what I read on Ender chests, they're like a "lite" version of KarmicShare.
So, if anything, Ender chests are a great, native method to have server wide community item chests... but they're nowhere near as powerful, flexible, or scale-able as KS is. So, I'll definitely still be improving and working on this plugin as I don't see them making the native Ender chests anything close to what KS is.
@FlukiestEmperor
Alright, thanks for letting me know. I'll start working on fixing them.
@Mitsugaru
Here are the bugs I found
-> http://pastebin.com/2LyfrmjK
What about now? With the Ender Chests.?
Posted update 0.31, which adds mutliworld control and fixes certain commands saying no permission.
If its not readily available on the project page, you can also grab it from the GitHub download page: https://github.com/Mitsugaru/KarmicShare/downloads
@Mitsugaru
Wow! That's great to hear! Definitely will be trying that out tomorrow. And it doesn't matter how long an update takes haha.
Submitted milestone release v0.3. If its not readily available on the project page, it is also available on GitHub: https://github.com/Mitsugaru/KarmicShare/downloads
If you come across any issues, please let me know.
@FlukiestEmperor
Also, just to notify you, it includes the changes that we were talking about at the beginning of the month. Sorry that it took so long to finally get around to this and push it out. Was rather busy. But in any case, its finally done, so, let me know if its what you had in mind.
Just a progress report:
I am finally getting work done on moving this forward to the next major milestone (v0.3). Long story short, the current changes so far:
I promise I'm still working on it... and I'll be adding in other items from the todo list as I go along with the v0.3 update.
Thank you all for supporting and using this plugin :D
Also, I've been asked about my "weird" version naming scheme (and yes, I realize its weird). The "typical" increments are explained best this way:
Best example from the history of this plugin:
Why don't I move the decimal to the right one and have more "normal" integer versions (AKA why isn't it version +1.0)? Well, for starters, its still quite the work in progress. Things crop up, and I'd feel bad to call it a "release" when even basic exploits still exist (and are pointed out to me [hopefully]).
I feel like it'd be so weird to call this version "3" when its not like the plugin was completely rebuilt form the ground up (just a ton of refactoring... sorta). Honestly, at the rate that I go with updates, I'd be at version 10 or beyond by the time I'd feel "release" worthy and that doesn't make sense IMO. Which is sorta why I like build numbers... but that's something else.
So, I won't name it the special version 1.0 (that most people use) until I feel that it actually hits that point of maturity... and this applies to all of the plugin that I've made (not including the plugins that I've helped with).
I have seen quite a few plugins that somehow just make it optional. I'm not sure if you can do it in this case. But thanks for the consideration.
@sheepwool7
Yes, I briefly thought of going all out with Spout integration back when I was doing the chest click logic, which required Spout at the time. However, I held back considering that I know that now all players use the Spoutcraft client, and thus I didn't want to alienate potential users from using my plugin because they lacked the correct client.
Also, thanks to the integration of the Inventory event implementation into the native Bukkit API, I was able to completely remove any Spout dependency. Thus, I'm now able to reach servers that do not want to use Spout / have no need for it.
I'm not entirely convinced I should work on anything client side related... but if I were to, it'd take some time for me to even have a rough implementation down.
Have you thought about making a spout GUI?
@Mitsugaru
Oh, that was very quick. Thank you! I'll give it a go.
ETA: I've updated the plugin, and it works perfectly. Thanks again.
@consultingdetective
Thanks for letting me know. I've confirmed to have it fixed in v0.261, which has been submitted to BukkitDev for approval.
If its not readily available on the project page, you can also grab it from the GitHub page here: https://github.com/Mitsugaru/KarmicShare/downloads
I'm having a problem with the 'list' command. Everything else works perfectly, but when anyone tries to see what's all been stuck into the cloud, we get an error that says 'an internal error occurred while attempting to perform this command.'
I'm not really sure what's going on here or how to fix it, as I've been using Bukkit for approximately 12 hours at this point.
@Mitsugaru
Wow, that's a genius a idea actually. Something like that would create the perfect plugin!
@FlukiestEmperor
Rather than repurpose what is already a convention, how about I change groups if they interact with the sign (left / right click then would be allowed) while sneaking? It preserves the left and right click to page the sign as it is now and extends the player to change the sign based on the groups they are in.
I'm thinking... what if I were to remove the top line completely...? And have the item pool group that they're currently viewing be tied to the player? They already check what groups they're a part of via the /ks command... I could just highlight the one they are viewing from that list (as well as make it nicer for the revamp version) so that the player knows what item pool they'll view then they use our chest.
The biggest pro for removing the group specification is that I'd no longer have to restrict the character length for a group name, and thus could have private groups auto-generated. One problem though with auto-generated groups is what happens if a group is already created and a player with the same name joins for the first time? They shouldn't be in that group that already exists... so... suppose I'd have to make some sort of tag as a private group? Maybe p_<name> as the group name? Although, it'd just be displayed as private to them, when they list their groups.
Also, since I've done some experimenting with custom inventory views, I can in theory have the header of the inventory give the name and the page number (although need to test the limits of the header character length). Just another indicator for the player to rely on so that they know what they're viewing.
However, I don't think that I'll have the private storage as the default view. If anything, it'll be a config option... but I'm going to default to the global item pool when a player logs in. It has been the first group that anyone has and (currently) the only group that cannot be removed (Obviously, neither will the private group). I don't want to stray from the core philosophy that this plugin was built on.... however, that doesn't mean I don't want to expand on it in a manner that would best suit the users.
I kinda have an idea now as to how to move forward with this... I am in the middle of revamping both this and CashFlow to be coded better than the are in their current state. So, please understand that it'll take some time to fully design and implement everything. At least know that I will prioritize this plugin over CashFlow for the revamp.
If you have anything to add to this, please do so.
@Mitsugaru
Well, you have right clicking a sign change the page the chest
Would it be possible if left clicking the sign changes the group that player is trying to access?
Also, I sort of see this to be used as the perfect banking system for sharing with members of a clan, or private use. It would be great if each player was a part of their own group by default. Then, from there could be added to other groups. If the above is possible, that is, left clicking on signs to change groups it would be perfect. It would be the bridge to banking systems and your own idea of sharing.
Perhaps, by default, if a player tries to access a share that is not his group, it would default to his private storage.
Or, if you did want a specific share to be only used by anyone but only access private shares they own, [Bank] at the top line would be perfect.
@FlukiestEmperor
Thanks for the complements :D
Well, the point is that groups will make the access points wherever they want really. There doesn't have to be a "central" location for all group chests. Rather, it ought to be group managed in a way... in that players will place these shared chests where they need them to be.
Also, I'm still trying to think of an intuitive way of doing something similar, but I'm having difficulty. The problem being that there isn't a restriction to the number of groups a player can be in. Thus: how to determine what group inventory should they see when they open a shared chest with no group specified? That's the major problem with removing/ignoring the group specification on the sign. There's no set way for me to know what item pool the player wants to actually use... at least not without command usage... and I'm not sure if I want to require that.
I mean, if you can think of an intuitive way to make all chests be equal without hampering the group system, that'd be great.
This is a very well thought out and powerful plugin. Far better than any other item storage plugin there is.
The only problem I see with it, is if you wanted a central location for all groups to access their items, say, spawn, you would have to create a chest for each group there is. Not to mention if you have towns or something, it would cause the same problem.
Would it be possible that if the first line is something like [Bank] that whatever player is accessing it, it could access the groups he belongs to?
Submitted a bug fix update.
Available on GitHub until approved: https://github.com/Mitsugaru/KarmicShare/downloads
If you use any of the following plugins, please update them as well:
I will probably start an overhaul of this plugin soon, to utilize the designs from Karmiconomy and that I recently implemented in KarmicJail. During which, I will probably implement new functionality, as I did with KarmicJail, as I feel that this plugin is sorta overdue for that :\
Sorry that I haven't been as active with this plugin, real life (and other plugins) has been taking away time, but soon I'll be able to code more often for this and all my projects. My only excuse is that the implementation has been fairly solid so far... and, in my opinion, a great success for a first Bukkit plugin ever.
So, after (or during) finals, I will be working on the massive refactoring that this plugin sorta needs and promise to add some (if not all) of the functionality that has been sitting in the Todo list for long enough.
@eriorkless
Well, the whole point of KarmicShare was collaboration and sharing items between users using chests... This is how I differentiate my plugin versus the many other chest banking systems, which have the functionality that you desire.
I mean, if you want individual chest banks, there are others that do that already:
While I see what you're getting at, and I could code it, I feel that it would detract from the core philosophy of this plugin: a public community shared item pool. And while I've been completely ecstatic with how far this plugin has grown into what it is now, I feel like whatever I add should still hold true to the aspects that make it unique.
I'm not sure what kind of compromise we can have to make this work out... I like the idea of commandless group creation per user (and I've been wanting to make all aspects as commandless as possible)... But I don't want the per-user "group" account to be the default as then people would think its just another chest inventory plugin like those in the list above when its not. I want to keep the collaboration front and center.