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.
@Forecaster71
Alright, I downloaded v0.07 and ran it under the same conditions: clean test server with only it and PEX on the craftbukkit RB.
It worked fine. However, I can think of one thing since I've encountered this before. The only time this would happen, that I've witnessed, is if the SQLite database file is locked somehow...
I was going to ask if the database is even being made, but I just attempted a command after deleting the database file and it simply shouted an error and made the file. Not what you're describing.
I'm going to upload 0.071 that has a minor edit in code to the SQLite handler. It should now spout out an error it locking as well as a timeout so it can no longer indefinitely wait on the file to be unlocked.
Please test this new version on your test server to see if the SQLite database being locked is your issue or not.
EDIT: Actually, try 0.072. I've moved some of the ResultSet close() method calls around. In some cases, they could have been skipped.
When trying any command the entire server immediately freezes.
It does not have time to give any errors.
This happened both on my full server and on a small test server where I removed all plugins except pex and karmicshare.
I'm running cb 1597 and mc-s 1.0.1.
@Mitsugaru
Nice thx for the fast update! :)
@lawliet555
Thanks for letting me know. AFAIK, I was handling permissions as described in SuperPerms: Have the node in the config.yml and just user sender.hasPermission(node).
I'm thinking its a PEX issue, being incompatible with SuperPerms again. My server runs PEX and its been known to act up when it comes to plugins using SuperPerms only.
In the meantime, I have submitted v0.07, which will check for PEX and use their API if the plugin is found, else it will default to using SuperPerms. I've just tested it against PEX and a few groups and it the permissions are catching properly now.
Sorry for not catching this earlier, I was more focused on getting the entire backend stable. The permissions were there and following SuperPerm convention, so I had simply assumed that it worked.
I am having some issues with the permissions not working with pex, is it possible to get support for pex.
Thx
@TerrorBiteIndustries
Yes, I did think of using physical chests when coming up for the concept of the plugin.
Please realize that this plugin is my first time working with the Bukkit api.
I felt that it would be best for me to work with commands and then move my way through with listeners later.
begin stream of consciousness
While I agree with having a physical chest interface would be nice on the user end, it didn't feel scalable when I was thinking about it in the first place...
With the current list system, items are compacted to a single entry (or they're supposed to be), whereas a chest has to follow the rules of ItemStack limits. So, space per page of viewable items could be limited in that way...
Although, if I set listeners up correctly, if they're available, then one way to counteract that would be to just have one ItemStack stack per entry being a representation that it exists, and then refill based on amount if necessary... IDK that might work....
Also, going back to scalability, if we run out of space in the chest, there needs to be a way to still cycle through the item list... Maybe if they punched it... However, then you get into this cycle of "punch-check" just to see if it has an item...
Perhaps pagination of the chest can be included with its sign... That way they know where they are in the pool...
I know that my current list function doesn't allow for "search" or limiting by id, however it was planned.
tl;dr
Once again, please consider that this is my first foray into Bukkit. So, using just commands to get the backend solid and working (which in my opinion its not, considering it doesn't handle enchantments just yet) was important and a simple intro. Adding chest and sign listeners and modifying on events would have complicated my learning experience and delayed this alpha release.
Optimally, there's a workable solution to using physical chests (...and I probably already wrote it up above), however I'd like to get the backend working first. Once enchantments are included and handled in the SQL database, I wouldn't mind attempting to create the chest access possible.
I should have put it in the todo list, but realize that todo list is missing elements that I've written down elsewhere.
Thanks for the input, and I'll definitely look at Spout's API at some point.
(any typos are due to me being only half awake, for the record)
This sounds like a great plugin. However, the command-based interface isn't very intuitive. Would it be possible to either:
The great advantages of this is that a) it allows users to add and remove items to/from the pool in a familiar way; and b) it allows users to easily, visually see at-a-glance what the contents of the pool are.
*No clientside mods required, but requires the Spout plugin on the server.
@jkcclemens
Alright, I gave up on BukkitDev, threw it on GitHub.
Repository page has been updated with external link to GitHub.
This was after hours of fighting over EGit being annoying.
But hey, it finally works, which means I can sleep now.
@jkcclemens
Alright, I'll try and use BukkitDev's repository here. Didn't think to bother with it since I had been working this solo.
I've also packaged the source files in the jar of the next update, 0.06. So, if I don't get the repository up and have you added to it before it gets approved, then you have that way at least.
@Beexi
Thanks :D
If you have any feature requests, or find any bugs, please don't hesitate to make a ticket on it.
This plugin sounds awesome. Will try it later on :)