Karmiconomy
Karmiconomy
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.
About
This plugin allows for an Action-based economy by giving / taking money based on a players actions, with a daily limit per action. It can also act as an action limiter, by having actions being denied once a player hits the daily limit or cannot pay for that action.
Originally made with the idea of making an active cash flow system. Action denial and daily limits were added during initial planning and design.
This plugin is NOT a standalone economy bank plugin. You will need a Vault-supported economy plugin for this to hook into.
Features
- Highly configurable settings for a vast array of player actions / events.
- Deny player actions based on lack of money or the daily limit for the action.
- Per-item configuration for associated events
- Per-command configuration
- MySQL / SQLite database storage
- Vault support
- mcMMO support
- PlayerPoints support
- Heroes support
- Multiworld support
- Custom localization
Example use cases
- Reward players for being active on the server
- Fine players for specific actions
- Daily bonuses for any action
- Create block-type build challenges, limit the number of times they can use any block
- Make incentives for players to care about their money.
- Create a player-driven cash flow for your economy.
- Blacklist any supported action
This plugin is in active development.
Commands & Permissions
Configuration
Supported events:
- Active (Cancellable)
- chat
- block place
- block destroy
- craft item
- enchant item
- create portal
- shoot bow
- tame ocelot / wolf
- painting place
- bed enter
- bucket empty / fill lava / water
- item pickup
- item drop
- game mode change
- sneak
- sprint
- mcMMO:
- Party join
- Party leave
- Party kick
- Party change
- Party teleport
- Heroes:
- Class change
- Experience change
- Join party
- Leave party
- Health regen
- Mana regen
- Skill use
- Passive (Listen only)
- enter portal
- bed leave
- world change
- death
- respawn
- egg throw
- join
- kick
- quit
- mcMMO:
- Skill level up
- Skill experience gain
- Heroes:
- Level change
- Combat enter / leave
- Hero kills
- Skill complete
TODO:
- In-Game commands
- Handle vehicle economy / limits
- Handle enchantment type
- Handle egg type?
- Add any missing events
- Multiple location / area of effect
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.
@Master_Zangetsu
I suppose I could allow for multiple location specification per-event, within the config. It might not be added immediately though, just so that you're aware, as I have other projects that need to be worked on.
can you add an area of effect?
so players get paid if they are within this x blocks of a sign for example
@SparvCraft
Thanks for the support. :D
@JHTudhope
Good to know you got it working.
Thanks for a great plugin! :)
Works like a charm for me, looking forward to when you get time to add the rest on the todo list. This will sure go live on the server after some testing.
Thanks for such a fast reply! Yes that worked :) I knew I was missing something stupid!
@JHTudhope
Static should be false.
Static, if true, means that all objects will be treated as the same (and thus use the default values that you give). When false, you are telling that event that you have dynamic values to load and check from other config files for specific values other than the default, if available.
Let me know if that fixes it for you.
EDIT: I see that I typed it wrong in the page explaining the config. I'm sorry for the confusion, I'll correct the page as well.
Hi there, Thanks for the new release messages are working perfectly! However I have a separate issue that I can't fix. I can't get values.yml to work at all. Using your sample yml file I simply edited one value:
So I should get paid 5 for breaking a melon, but I don't I get the default for breaking a block which is set to 1 in config.yml. Static is set to true in config.yml. Is my understanding of how the config files work flawed?
@Suki_Lou
Version 0.16 adds the option to enable a message to notify the player about the transaction. It has been submitted for approval.
If its not available on the project page, you can also grab it from the GitHub downloads page: https://github.com/Mitsugaru/Karmiconomy/downloads
@Gikon
Funnily enough, I'll be releasing another update soon. XD
That was the desired effect to have them all working together, and yes, our machines are all on the exact same time. Thanks. I failed to mention that I got it working on .14, haven't tried .15 yet, but will upgrade it shortly.
@Gikon
player.command.limit has an extra space at the end on auto-generation? o.O
I haven't encountered that... Also, I can't imagine why it would randomly happen to just one of the "limit" nodes and not any of the others.
Nonetheless, glad that the issue got resolved.
And the only thing I'd be careful with a shared database is making sure that each of the server's time are relatively the same. I base the player's limit reset when they join the server (only check the month / date / year. Nothing too specific). If the date is different, then I reset the player's limits and set the date according to the server reporting it.
So, if one server is behind by an hour versus another... a player could, in theory, have an hour time window in which they could continuously jump between the two servers to reset their limits for both (since they're sharing the tables).
I mean, if that's not going to be an issue... then I can't think of anything else on the top of my head. If you're going to share the tables between multiple servers, I'm assuming you understand that the stats/data will persist between all of them. Kinda nifty in a way.
@Mitsugaru
It's the default configuration, I haven't changed a thing but the mysql details. As posting those would be a bit silly, not really sure what to supply there.
mysql: use: true host: www.hostname.com port: 3306 database: db_name user: user_name password: passwordinvolvingextendedpasswords "IE: %$#@! tablePrefix: kcon_ import: false
Might be worth mentioning I assumed it was a pebkac error, and redid it many times, as has my fellow machine admin. And we both come up with the same results. Wiped config.yml and default settings.
AHA! Found the problem.
When the plugin generates the default config.yml under:
player: chat: enabled: false denyOnLackPay: false denyOnLimit: false limit: 10 pay: 0.1 command: enabled: false denyOnLackPay: false denyOnLimit: false static: true limit: 10 pay: 0.1
the command/limit: has an extra space after the 10, when pasting it into the parser it wouldn't get past that point. Removed the space, and it loaded great! tested it on another server in our network, to double check before posting, and it had the same issue.
One last question. Any foreseeable caveats in using the same database for multiple servers?
@Gikon
Can you post your config as well?
Can you run your config against the YAML parser? Its not loading it properly due to a bad character somewhere in your config.
My current test server has the plugin hooked into MySQL just fine.
For reference about your issue: http://forums.bukkit.org/threads/unacceptable-character-error.56615/
So, once again, please check your config file... as Bukkit cannot load it properly.
Last two versions error out when I setup my details to connect to mysql. Haven't tried anything prior.
Karmicjail works and loads just fine.
Pastebin: Console logs
@harryjamesuk
Sorry for the late update. Anyways, I've submitted version 0.15 which has multiworld support.
Basically, to limit Karmiconomy event listeners to a specific set of worlds, just add a section under that event called "worlds:" as a list. for example:
will only listen and act on the bed enter event for the worlds "world" and "rpg".
If the list is missing or is empty, then Karmiconomy will default to listen and act upon all worlds for that event, if enabled (like the old way).
If its not readily available on the project page, you can also find it on GitHub: https://github.com/Mitsugaru/Karmiconomy/downloads
@harryjamesuk
Yes, I'll try and add multi world in sometime this week.
Hi,
Would you be able to make this plugin multiworld? E.G: This plugin wont be active in certain worlds. I'd like this because otherwise my players could "Cheat" and go on the creative world and place loads and loads of blocks to get lots of money.
Hope you can add this!
@Patolord
@gibbly96
Version 0.14 has been submitted for approval and has Heroes support.
If its not readily available on the project page, you can also download it here: https://github.com/Mitsugaru/Karmiconomy/downloads
Please test it and let me know how it goes.
@Suki_Lou
Thanks for the support :D
@Mitsugaru
Cool and thanks. I would say good luck on your finals but I don't believe in it. Therefore, study hard, focus and be blessed!