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!
-
View User Profile
-
Send Message
Posted Nov 23, 2012@n33dy1
I must've missed a check somewhere, every chance I can I try to make the plugin ignore letter case, and even so the plugin is coded to save the player name exactly as how you type it, so I'm not sure where it's breaking down. I'll figure it out.
I tested the toggling system with the PermissionsBukkit plugin, I know for a fact that PermissionsBukkit, PermissionsEx, and bPermissions consider all unset permissions as true. As you're using the default Bukkit permissions, that may be the exception. My only option may be to add "s86powers.toggle.Acrobat: true" to the plugin.yml file for EVERY power I've created, and this wouldn't work for powers I didn't create. Again I'll figure it out.
@Vendettaelpro
Here, though it hasn't been updated.
-
View User Profile
-
Send Message
Posted Nov 23, 2012And the list of powers?
-
View User Profile
-
Send Message
Posted Nov 22, 2012I FIGURED IT OUT!!! It's totally your fault, sirrus86. :(
I'll use the player Alec2cool as an example. When you do /powers player Alec2cool aquaphile -o (with a capital) it adds the power for alec2cool (all lowercase) in the users.yml
I changed his name to Alec2cool in the users.yml and what do you know... his powers worked. https://www.youtube.com/watch?v=p6PZhONZ3Ac :P
For now, I will change everyone's names to how it appears in chat, and whenever you fix it so it's not case-sensitive anymore, I'll make them all lowercase again. Or whatever you do... make it universally not-case-sensitive.
EDIT: Can you please make it so powers are toggled on by default? Or give us this option? I have to tell people to toggle their powers on each time they buy one now. :(
-
View User Profile
-
Send Message
Posted Nov 22, 2012@sirrus86
I'm op. I gave myself the power with /powers player n33dy1 acrobat -o
I did not give anyone any specific permissions and I still have permission-based-powers: false and permission-based-groups: false in my config.yml, yet Acrobat will still do this to me and my players. My players were given the powers the same way I was, via the command. A lot of them can't get their powers to work. I've told them to try /powers toggle and /powers toggle powerNameWithNoSpaces and they can't get it to work. I also PMed you about this and some other stuff yesterday, hope you get time to look.
-
View User Profile
-
Send Message
Posted Nov 22, 2012@n33dy1
Electrified - Heh, oops... Forgot a line of code. Will be fixed for release.
Decoy - Ghost entities are created when a packet is kept alive after the entity it's assigned to has died. This is a side effect of the persistence code I added to BETA. Server restarts are the only way to remove them. Or you can dig a hole under them then bury them.
Aquaphile - I haven't tested it but I'm all for adding NV while underwater. Consider it in for release.
Reflection - Reflection is currently coded to only work if the user is blocking. If it's still being triggered then something else must be causing it.
Reflexes - This has always worked if the player is either blocking or barehanded. In pConfig you can set the item to a different item (for example /powers power Reflexes -o item 7 makes the required item bedrock, which isn't obtainable in survival).
Removal - These are the steps it takes when you try to remove a player's power (given you have the required permissions):
What looks to be happening is it's not finding the power the first time it looks, so it assumes the player doesn't have the power but manages to remove it the second attempt.
Acrobat - Either there's some lag or stuttering occurring or the player has the power assigned by two different sources (sources include assigned to player in users.yml, assigned to player via permission s86powers.use.Acrobat, and assigned to player's group). It's coded to only increase once.
@DuffstersATL
S86 Powers v4.0.0-BETA can be downloaded here. Be sure to read the first few paragraphs of notes before installing. Also it helps TREMENDOUSLY if you report any errors you come across. Keep in mind it's a beta release, so it's gonna have some quirks anyway.
-
View User Profile
-
Send Message
Posted Nov 22, 2012@sirrus86: Where could I download v4.0? (Thanks for the help btw :D)
-
View User Profile
-
Send Message
Posted Nov 21, 2012Electrified is hitting people with lightning every time they hit them instead of just when blocking! :( This is with the BETA...
EDIT: These are zombies that have been killed with Decoy. I left the area and came back and these ghost things are frozen there. I can't kill them because they're already dead. I relogged and they were still there. They will only go away when I restart the server. http://i.imgur.com/yyKsP.png
EDIT 2: One of my players suggested to give users using Aquaphile the Night Vision potion effect, since it's sometimes hard to see under water. I went into the water and tried the potion for it out and it suddenly got way easier to see. (you should try this too) Since you can already tell if a player is submerged or not, how about giving Night Vision to those with Aquaphile only while they are submerged? Eh? Eh?! Configurable, of course.
EDIT 3: Reflection and Reflexes are also working without blocking. And, when you remove a power, it says the player doesn't have that power. It should say the power is removed from that player. Saying they don't have it (when it removes it) is kind of confusing.
EDIT 4: When using the feather with Acrobat, it goes to 2 or to 4. It says the message for 1 and 2 if you right-click once. If you right-click again, it says the message for 3 and 4. It is doing two at a time.
-
View User Profile
-
Send Message
Posted Nov 21, 2012@DuffstersATL
Not unless you wanna use v4.0.
-
View User Profile
-
Send Message
Posted Nov 21, 2012@sirrus86 So no known way to fix Decoy yet?
-
View User Profile
-
Send Message
Posted Nov 21, 2012@DuffstersATL
That would be because the code used for Decoy prior to v4.0 used an incomplete code to create decoy packets. Anyone who was sent these packets (which as coded was everyone) would be kicked with an End of Stream error due to receiving an incomplete packet. This can be resolved by reloading or restarting the server.
If you wish to continue using S86 Powers v3.2.X I'd suggest disabling Decoy as it wasn't extensively tested prior to the more recent versions.
-
View User Profile
-
Send Message
Posted Nov 21, 2012@sirrus86: It did the "End of stream" message..
-
View User Profile
-
Send Message
Posted Nov 20, 2012@grimm294
I no longer have the source for this plugin pre-v4.0, so I can't pinpoint the exact cause of the error. Running v3.2.1 may be part of the problem; versions after this may have fixed the issue.
But regardless there's no reason the error should continue after the plugin has been deleted. Double check to make sure both S86_Powers.jar and the S86 Powers folder are deleted while the server is stopped. Beyond that this issue completely baffles me; no plugin should cause any errors like this after being removed.
-
View User Profile
-
Send Message
Posted Nov 20, 2012So I keep getting this error, even when I do a full reboot and no longer have it in my /plugins directory, and I can't even start my server.
java.lang.NullPointerException at me.sirrus86.S86_Powers.Powers.Offense.Brawler$1.run(Brawler.java:56) at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:53) at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345) at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:529) at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:222) at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:493) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:426) at net.minecraft.server.ThreadServerApplication.run(SourceFile:856) 2012-11-20 11:59:53 [WARNING] [S86 Powers] Task #14 for S86 Powers v3.2.1 generated an exception java.lang.NullPointerException at me.sirrus86.S86_Powers.Powers.Offense.Brawler$1.run(Brawler.java:56) at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:53) at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345) at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:529) at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:222) at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:493) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:426) at net.minecraft.server.ThreadServerApplication.run(SourceFile:856) 2012-11-20 11:59:53 [WARNING] [S86 Powers] Task #14 for S86 Powers v3.2.1 generated an exception
I get this error about 4 times per second.
-
View User Profile
-
Send Message
Posted Nov 20, 2012@DuffstersATL
Did the server completely crash or did everyone get disconnected with "End of Stream" errors? If it crashed could you send me the crash report?
-
View User Profile
-
Send Message
Posted Nov 20, 2012@n33dy1:
I enable it and assign it to a player; however, the server crashed when they used it..
-
View User Profile
-
Send Message
Posted Nov 20, 2012@DuffstersATL
All nice ideas, I'll add em to the list.
@aaomidi
Groups aren't working? Alright I'll take a look.
@n33dy1
Currently Beta has overrides again, and this time they're unlimited (you can assign more than ten of each kind, which was the limit in previous versions). Groups can do the same thing.
I also fixed El'druin. The previous method it used was incredibly inefficient. The method I used for Alpha was having the player "shoot" a glowstone item and have the glowstone blocks follow it, unfortunately the item would sometimes hit the blocks it created which resulted in beams being cut short (and rarely the item would drop and be picked up). In Beta there are no items involved so no premature collisions should occur. Also it breaks non-solid blocks by default, and this can be turned off in pConfig. The beam going to the left thing is somewhat hard to control however, as sometimes the block in front of the player is more to the left.
-
View User Profile
-
Send Message
Posted Nov 20, 2012@aaomidi
He's re-adding the override command. If you're not using the Alpha (which by the previous bug reports posted you shouldn't unless you wanna' find some more bugs for him) then do /powers player aaomidi bloodbend -o and replace aaomidi with the player's name (type the full player name not just "aao" like Essentials will let you do) and replace bloodbend with the power you want. The -o on the end is to override (I add it every time I add a power, just in case) and you can do -u at the end instead to remove that power from that player.
-
View User Profile
-
Send Message
Posted Nov 19, 2012@sirrus86
Also can't we add more than one power in the same category?
-
View User Profile
-
Send Message
Posted Nov 19, 2012@sirrus86
It looks like creating groups doesn't work!
-
View User Profile
-
Send Message
Posted Nov 19, 2012@sirrus86
Instead of people having to do that, can you make a powers2load.yml file or something and before it loads any powerpacks or classes, the power has to be set to true in that file? It'd be a lot easier for people to manage.
@DuffstersATL
Hold a blazerod and right-click a mob. It'll then have your name and skin.