S86 Powers
Introduction
Minecraft is a great game on its own, but chances are if you're here and you're a server admin then you're looking for more to offer your clients. As you may know by now, when it comes to the extras every player wants something unique. Some want new mechanics, others want better weapons. Some want to help their friends, others want to dominate them. The problem is most plugins often offer a blanket solution. While it may fulfill the needs of a few, the remaining may not want to participate. Sure you can mess with permissions to exclude some people, but why not just cut to the chase and give every player EXACTLY what they want?
For the server that wants its players to each have individual benefits and abilities, S86 Powers is the plugin for you.
How It Works
S86 Powers is a plugin that allows users to have powers assigned to them. The core plugin comes with internal powers, but is also capable of importing powers made by others (more info to come).
To get started, simply place the S86Powers.jar file where you put your other plugins. Note that ProtocolLib is required for S86 Powers to function. On first run, several configuration files are created with default values. It is recommended that you not edit these files directly unless the server is off, as entered values may be overwritten the next time the server shuts down or restarts.
Next, you'll want to review permissions and configuration options. Operators by default get permission to everything, otherwise assigning the permission s86powers.admin will accomplish the same thing. To view configuration options, use the command /p config list [page#] (for example, /p config list 2 shows you page 2). For more information on what an option does, use the command /p config info [config], and to change config options use the command /p config set [config] [value].
Finally, for players to use powers they must first have them assigned, and before they can do that they'll want to know what's available. Use the command /p power list to get a list of loaded powers, then /p power [power] for more info on a specific power. If you don't like how a power is setup, you can check and set its configurable options with /p power [power] option. Note that changes to power options affect all users, and may require a server reload/restart for changes to take effect.
Players can be assigned powers in several ways, the two most prominent being admin-assigned or self-assigned. Admin-assigned requires a user with the s86powers.manage.user permission to use the command /p user [player] add [power]. Note that the above permission allows the user to set anyone's powers and shouldn't be given to most players. Self-assigned requires a user to have the s86powers.manage.self permission, and use the command /p add [power]. This method is safer, as the user can only modify their own powers.
What Are Powers?
Most powers come in three categories: offensive, defensive, and passive. Offensive and defensive powers operate similarly: the player does something with a specified item, and it causes an effect. Offensive powers usually do something that causes damage to others, while defensive powers usually do something to protect the player in some way. Passive powers tend to work automatically and provide some kind of bonus that neither hurts others nor protects the player (though there are exceptions).
An example of an offensive power is Laser. In its default configuration, left-clicking while holding a dispenser will fire a laser in the direction that the player is looking. This laser steadily does damage to anything it hits but uses redstone dust as fuel. The laser turns off when either the player left-clicks while holding a dispenser again, or when the player runs out of redstone dust. After using Laser, the player has to wait for a 10 second cooldown before using it again.
An example of a defensive power is Celestial Pillars. Left-clicking the ground while holding a sea lantern will create pillars of light around you. While these pillars stand, nothing can pass between the pillars except for the player. Pillars last for 45 seconds, however the player can't create new ones until the old ones expire.
An example of a passive power is Lumberjack. With Lumberjack assigned, breaking one log block of a tree with an axe will cause all adjacent tree blocks to break as well, essentially harvesting the entire tree at once. By default, a threshold is put in place so players can't level entire jungles.
Some powers have additional effects when they're used a lot. For example, after creating 60 pillars with the Celestial Pillars power, you gain the ability to create a second set of pillars by left-clicking the same block with a sea lantern again.
By default, players can only have one of each of the above power types assigned to them, though this limit can be removed with config options.
The last power type is utility. Utility powers can be used by anyone, including players with no assigned powers. Neutralizer Grenade allows players to throw lapis lazuli like a grenade, temporarily disabling the powers of any players nearby when it hits. Neutralizer Beacon allows players to create a block that constantly disables the powers of players who go near it.
Commands / Permissions
All commands can be viewed by simply using the /powers help command. You can view additional pages using /powers help [page], or view help on specific topics like /powers help player.
Donate
Creating and maintaining a plugin this size can be a full-time job on its own. I enjoy working on this plugin and don't mind doing it for free, but the fact remains that I must commit a majority of my free time to do this. If you like my work and would like to support it, please consider donating.
Need support? Have an idea for a power? Join my Discord server!
@fletch_to_99
Hah no not yet. I'll probably upload it tonight though.
@sirrus86
Did you upload the new verions with the working "s86powers.groups.<group name>" permission? Mine still doesn't work, currently using 3.2.2 :P
Again if you need me to test anything just reply here.
Thanks
@Fettdamn
127 groups?! Damn...
Well yeah, you can assign a player to as many groups as you want if you use permissions. Just give them node "s86powers.groups.<group name>" for every group you want them in. It won't show up in the group commands or in config, but it'll achieve the result you're after.
@TheSymmes
Nice idea! I'll modify the solid check to include this.
Would you be able to make phasewalk allow you to clip through transparent blocks as well as 1 thick walls? You can go right through the trunk of the tree, but the leaves will stop you as it is now.
Hey sirrus86 thanks for making this plugin, I use it to give the races on my server perks. I would really appreciate it if you could allow us to assign players to more than one group. I currently have 127 groups and could narrow it down to about 20, Thanks!
@RandomSomething98
Possible yes, but it'd require a rewrite of beacons and any powers that could be beacon-proof.
Would it be possible to make an option somewhere to make certain powers beacon-proof?
@aaomidi
Umm it shouldn't, unless they're using a power that grants it...
If so you might wanna file a ticket so we can get to the bottom of it.
@sirrus86
This plugin causes people randomly to turn invisible?
@fletch_to_99
Heh if the beacons keep messing up I just might have to :P
@sirrus86
If your ever intrested in an API to use for your beacons feel free to use my http://dev.bukkit.org/server-mods/areaapi/
:)
@RandomSomething98
Heh I've been waiting a long time for someone to catch this...
All beacons really do is set the s86powers.enable permission to false for anyone affected by them. Powers will check to ensure a given player has this permission as true before it can activate, however once a power is in use the code no longer checks for this permission and maintains it. This has the potential to cause a lot of problems.
So while this may sound like a small problem, this may actually require some recoding of ALL powers to fix. I'll fix it at some point, but thanks for confirming the issue.
My friend was using nethercloak and when he hit the beacon range, he was still invisible until he disabled the beacon and used it again.
@fletch_to_99
Will do, appreciate it!
@RandomSomething98
I'll take a look at it.
@ninja8077
When you say a player enters, do you mean the first time they join the server or every time they log in they get a different power?
I was wondering if I could request that an option be added that when a player enters the server they are given a random power. Of course it would be disabled by default but that option sounds fun for a pvp server.
I can't seem to use Volatility D: I tried it on mobs and blocks, but nothing worked.
@sirrus86
Sweet thanks! :) Again if you need someone to help you test or just need any help in general hit me up on irc (irc.esper.net in #monsterirc) or leave another comment here.
Thanks :)
@fletch_to_99
I'm not gonna lie, I didn't test the group permissions thing... like at all... Guess I'm letting it get to my head a bit :P
I think I know the problem, my playerCheck function first checks to see if a given player is already in the player database. Using permissions bypasses any need for the player to be in the database, so it never gets any further than that. I'll fix this in the next update... and test it this time >_<
@RandomSomething98
Depending on the complexity, it can take between thirty minutes to a week to create a power.
Just out of curiosity, on average, how long does it take you to make a new power?
Hey, I've downloaded 3.2.2 and tested the groups with permissions however it still doesn't seem to work, atleast not the way I intended. I gave all of my bpermissions groups s86powers.groups.(group name) however ingame they still can' t use the powers that are assigned to their group. Here is a potential method you could use
Also when doing this they shouldn't have to be added to the group using your /powers group [group] -a [player] as long as they have the permission node.
Thanks so much!
-Fletch
If you need any help just pm me on bukkit dev :P