BuffShop
Plugin is under development.
So it's more like only demo of it :)
This plugin allows you to sell potion effect (aka buffs) for items and/or money.
Features
Player can buy buffs using shops with special inventory GUI.
Shops are very customizable, you can even link shops, use any item you want, block closing GUI (it will be closed after purchase), prices for: opening GUI, buffs, links to other shops.
Most of features works good, but plugin can be hard to configure, and that is next milestone -> make it simple, by using chat or/and GUI editors.
Each buff contains one or more effects, each of that effects can be configured.
Example buff file:
buff: # don't touch ==: BS_Buff # don't touch name: EG_Digger # name of buff, player will never see it, but you will use it. Must be this same as file name. effects: # section of effects digSpeed: # name of effects, it's only used by plugin in some parts of code. ==: BS_Effect # don't touch overrideType: POWER # Can be: ALLOW, DENY, POWER , more on wiki buffType: PLAY_TIME # PLAY_TIME or FIXED_TIME onDuplicate: MERGE # Can be: MERGE, OVERRIDE or LEAVE power: 3 # power of effect, minecraft count it from 0, so 0 is like 1. time: 6m # time of effect, time like in essentials eg: 3d5h30m -> 3 days, 5 hours, 30 minutes. effectType: FAST_DIGGING # name of effect http://jd.bukkit.org/rb/apidocs/org/bukkit/potion/PotionEffectType.code onDie: DO_NOT_REMOVE # REMOVE or DO_NOT_REMOVE vision: # next effect.. ==: BS_Effect overrideType: DENY buffType: FIXED_TIME onDuplicate: OVERRIDE power: 0 time: 30m effectType: NIGHT_VISION onDie: REMOVE
After first run plugin will generate example shop, so you can see how that works.
Some screenshots of sample Shops/GUIs:
http://imgur.com/a/7bTui
Commands
For now, only 5 commands are available:
- /OpenBuffShop - to open shop.
Permission: gotofinal.buffshop.openshop (op)
/openbuffshop <shop name> - open selected shop
Permission: gotofinal.buffshop.openshop.any (op)
- /BuyBuff - open default shop
Permission: gotofinal.buffshop.buybuff (default)
/BuyBuff <player> - buy buff for other player (gift, needs confirm)
Permission: gotofinal.buffshop.buybuff.gift (op)
- /BuffConfirm <confirm/refuse> <player> - confirm or refuse gift.
- /GiveBuff <buffname> <player> - force give buff to selected player.
Permission: gotofinal.buffshop.givebuff (op)
- /buffshopreload - save/load selected parts of plugin.
Configuration
Configuration for now can be hard, but that will be changed.
Plugin will generate main configuration file like that:
http://pastebin.com/YiFaqw7j
addDefaultEffects -> if true, plugin will add 2 sample shops.
auto-save_players -> in minutes. 0 -> no auto-save
auto-save_effects -> in minutes. 0 -> no auto-save. Auto-save of effects isn't needed if you using normal version of that plugin.
taskSpeed -> each x ticks plugin must check active buffs of every player. (will be changed to something less-laggy, like checking x player in y ticks)
defaultShop -> Shop that will be open if someone type /openbuffshop command.
Plugin will also generate 5 folders: buffs, items, prices, shops and players.
Sample item files:
http://pastebin.com/CCF3kAsy
Sample price files:
http://pastebin.com/bniCbGET
Sample shop files:
http://pastebin.com/xXTHX57M
Notice border options! You can easily set border to GUI, selected item, and fill other empty slots with selected items.
What mean "overrideType"?
If you get other effect, from potion or something, your bought effect can be overridden, but sometimes that isn't good.
So you can select:
ALLOW -> can be always overridden
POWER -> only if new effect is better. (stronger, or longer)
DENY -> nope, it can't be overridden.
What mean "onDie"?
Effect can by "REMOVE"-d on die, or not "DO_NOT_REMOVE"
What mean "onDuplicate"?
If player will buy this same buff more than one time, plugin will try merge it, but you can configure hoe each effect of buff should be merged:
MERGE -> times will be added.
OVERRIDE -> time will be overridden by new effect.
LEAVE -> new effect will be ignored.
What mean "buffType"?
PLAY_TIME -> plugin will only count online-time, so if player quit effect will be paused.
FIXED_TIME -> time is counted even if player is offline (or even server)
TODO List
- Make configuration easier.
- Some chat builders.
- JSON editor (clicking on text)
- Maybe some GUI selectors.
- Editing, adding, removing.
- Command to see all shops/buffs/prices
- Command to sell all items, even that needed in prices with ability to get copy of clicked item.
- Make item costs more advanced.
- Add enchants range, like diamond sword with enchant all damage above 3 level.
- Maybe even some way to more "logic connections" like all damage can be below 3 if other selected enchantment is above X
- Maybe that can be made using "weight", each enchantment had own weight (configurable for every item), and sum of weight must be within selected range.
- Support for meta-data, like potions with selected effects, maps, skulls of players, etc...
- Add enchants range, like diamond sword with enchant all damage above 3 level.
- Make better description and wiki.
- Yeach, this plugin need wiki!
- Add source code to github.
- Will be added when I decide with code for configuration I want use. I don't want add code, and change 20% of it, in every commit :D
- Add API
- Yep! Adding own button-types, own actions, own buffs, everything is possible ;3 You can easily make GUI shops using that plugin :D
- More epic options.
- Code of that plugin can much more than just selling buffs, it can selling xp, items, special-actions like command execute.
- But first I will finish other parts :D
Yeach, this description isn't good now :D
It will be better!
Donations... soon....
And sorry for my English!
Awesome, however, I need help with setting it up, is this some kind of like potions I can add in without anything else?