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!
@n33dy1
Alright, it does help to know it's not being caused by a power. I'm adding a LOT of stuff to minimize memory usage in v5.0, so hopefully it'll be solved then.
@UrNowKoed
Yeah the item throwing powers are kinda tricky, I can either tell them to look for a target's foot location (the block they're standing on) or their eye location (the top of their head), and since mobs come in different sizes there's no specific sweet spot.
I've heard of the SpawnCrafter glitch before but have never been able to replicate it. You sure there aren't other similar plugins (like SilkSpawner) installed?
Posting bugs does nothing but help make the plugin better, so don't feel bad!
A couple bugs I've noticed, CookieStars has a very odd hitbox on mobs and players. You have to shoot at their feet. Spawncrafter is giving people 5-6 spawners every time they mine one, thus leading to spawner duplication.
I feel bad always posting bugs for this plugin when I love it so much, but my server relies on it heavily. I really love this plugins, really great job making it!
I set ALL powers to false and restarted. The memory leak persists.
Just saying, so you know it's not a power that you should be looking in to.
EDIT: My test was done with permission-based-powers: false
EDIT 2: permission-based-powers: true doesn't help either.
EDIT 3: require-survival-mode: true doesn't work.
@Nentify
Ah, yeah you make a good point... I'll add a link above.
@sirrus86
Thanks - Nothing against you, just was curious as to why at least a few weren't listed somewhere to give users an idea of what the plugin does by default.
@Nentify
Wise to list them here? Probably not, since there's over 100, but... you can see a slightly outdated list here.
@sirrus86
Would it not be wise to list the default powers on the thread? I'd be more likely to download it if I knew what the plugin actually did?
@Nentify
The plugin comes with several powers already loaded, you can see the list with the command /powers power. The power-loading system allows other developers to make powers for this plugin.
@UrNowKoed
I'll take a look into WaterBarrier. The Neutralizer powers inexplicably stopped working in one of the recent versions, still not sure why.
@Makemyday17
Not gonna lie, it might be a little while. I'm starting with rebuilding the foundation, and have been testing it with a rebuilt version of Acrobat. However, since I've never had the memory-leak issue, I'm not seeing any different results memory-wise, so my plan is to give an early alpha version to a few servers to test it out.
Looking forward for the v.5 and hope it can solve the huge memory leaks. Please stay us updated on how long till you're done with it.
WaterBarrier is still broken in the 1.6.2 version. Aquaphile does work now however. Also, I can't get neutralizer beacons or grenades to work. There are no errors in the console. Any ideas how to fix them?
The post doesn't explain this too well, do certain types of powers come pre-packaged? I only see the ability to create custom 'powers'? What is a power..?
@xTrainx
Groups and permissions may still be a bit screwy, I'm paying close attention to them in v5.0 though, in the meantime you may have to resort to manually assigning powers.
@n33dy1
Well I figured it would; v4.3.x onward until v5.0 is mainly just going to be compatibility updates since I can't pinpoint the cause of the memory leak.
Memory leak still exists in update 4.3.5
Hey sirrus, the updfate seems to work fine, just a question, were group fixed? because when i assign powers to a group, while the enable the powers, users doesn't seems to be able to use them, so do i need to doi something for them to work?
@jazzman170
Yeah it should be fixed for v4.3.5.
@CoreyMek
Unfortunately Bukkit 1.6.2 came out around when I started my vacation (Tuesday) so I wasn't able to get an update out in time. I'll get one put together tonight though.
Some powers do not work with 1.6.2
This includes WaterBarrier/Aquaphile; unsure about others.
Just posted a spam error in console with 1.6.1, ticket # 40
@spawnstah
Yeah the dash commands were supposed to make commands quicker, but I agree it made them difficult to remember too.
@sirrus86 Wish List:
More intuitive commands, like /powers group join <group> [player] [time] = Joins that Group
/powers group set <group> [players] [player] [time] = Reset groups and join only that group
/powers group leave <group> [player] = Leaves group
/powers group info <group> = Gives info on that group
/powers group reset <group> = Removes everyone from that group
/powers group list <group> = Shows all members of that group
Don't use any -a -u etc, that's just confusing for players.
Permissions for all powers and Groups.
powers.group.join.<groupname> = Control who can join a specifiic group
powers.group.limit.<1-10> = Limit the number of groups a player can be in.
Hmm, also if possible, make "Group" permissions override Power permissions.
So if a player does not have access to power "Vampyrism" but can join group "Vampire" he will get Vampyrism through that group.
@ValeraSTK
The main hurdle I ran into with that was I couldn't find an easy way to detect if a given player's permissions had changed. But yeah I'll see about finding a more efficient method.
Localization is also something I've wanted to implement.