PowerTool
PowerTool — Bind commands to items
Originally requested by InflamedSebi in this thread.
PowerTool allows you to bind commands to your in-hand items. Any item may be assigned commands for both left-click and right-click. Bound commands remain until you manually clear the binding.
Please post bugs and/or feature requests as dev.bukkit.org tickets.
Features
- Bound commands may include special tokens which are appropriately substituted when the item is used. Currently, these are:
Token | Description |
---|---|
%p | The name of the player you left-clicked or right-clicked. |
%x | X-coordinate of the block targeted by your crosshairs |
%y | Y-coordinate of the block targeted by your crosshairs |
%z | Z-coordinate of the block targeted by your crosshairs |
%Y | Y-coordinate of the nearest air block above the block targeted by your crosshairs |
All of these tokens are configurable.
-
Works in creative mode. Right-clicking and left-clicking players in creative mode will generally work, even when far away (up to 100 blocks).
-
Ability to define global power tools. These are administrator-defined binds that can be made available to whoever you want (based on permissions).
-
Fine-grained control over the use of power tools via permissions.
-
Global power tools may grant temporary permissions or even be run as the console. Needless to say, these features should be used with care.
-
The number of player-created binds may be limited based on group/permission.
-
Items may be further differentiated by custom display name (e.g. when given one via Anvils). Note this option is off by default, enable it in the configuration file.
Commands
There's only one command, /powertool
which may also be abbreviated /pt
or /ptool
:
/powertool left <the-command-to-bind>
— Binds the command (and its arguments) to the left-click action of the current item. The command must not include the first slash. This may also be abbreviated as/powertool l
./powertool right <the-command-to-bind>
— Binds the command (and its arguments) to the right-click action of the current item. This may also be abbreviated as/powertool r
./powertool left
— With no command to bind, the currently-bound left-click command is cleared from the current item. Use/powertool right
to clear the right-click command./powertool list
— Displays all player-defined power tools for the current player./powertool clear
— Clears all bound commands from the current item./powertool clear <item-id-or-name>
— Clears all bound commands from the specified item./powertool clear -a
— Clears all bound commands from all items./powertool on
— Enable power tools for this session (default is on)./powertool off
— Disable power tools for this session./powertool toggle
— Toggle power tools availability. Can also be abbreviated as/powertool t
./powertool reload
— Re-reads config.yml.
Permissions
PowerTool only supports Bukkit permissions (aka Superperms). By default, ops have all permissions.
powertool.use
— Allows the use and creation of power tools. (Haspowertool.use.*
andpowertool.create
as child permissions.)powertool.use.*
— Allows the use of all power tools.powertool.use.<item-id>
— Allows the use of a specific power tool identified by item-id. item-id may be numeric (e.g. 322 for golden apple), or the Bukkit Material name with or without underscores (e.g. GOLDEN_APPLE or GOLDENAPPLE). Note that Bukkit permissions are not case-sensitive, so bothpowertool.use.golden_apple
andpowertool.use.GOLDEN_APPLE
work fine.powertool.create
— Allows the creation of personal power tools. A player must be given this permission in order to use the left/right/list/clear subcommands.powertool.reload
— Allows use of/powertool reload
Additionally, per-group power tool limits may be defined using permissions. See the options
section in config.yml for details.
Global, Administrator-defined Binds
By editing config.yml, the server administrator can define binds for use by anyone with the powertool.use
permission.
For example:
powertools:
string:
left-click: plugins
right-click: version
The item ID ("string" in the above example) may be an integer item ID or a name. If using an integer item ID, you must quote it as a string, e.g. '287'
for "string." If using a name, you must use a standard Bukkit material name (found here). For example, for golden apples, you may use one of:
GOLDEN_APPLE
'golden apple'
(since it has a space, it must be quoted)goldenapple
Examples
-
Promote and demote users using the left-click and right-click actions of the current item:
/powertool l promote %p
/powertool r demote %p
-
Bind WorldEdit's copy & paste commands. Remember that many WorldEdit commands normally start with two slashes, but you must always omit the first slash.
/powertool left /copy
/powertool right /paste
License & Source
PowerTool is released under the Apache License, Version 2.0.
Sources may be found on GitHub:
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.
- PowerTool (Requires ToHPluginUtils.jar)
- PowerTool-standalone (includes ToHPluginUtils, like the version distributed on dev.bukkit.org)
To Do
- Allow setting/clearing global power tools from the command line (for those with the proper permission, of course).
- Allow player-specific power tools to override global ones.
- Allow global power tool flags (e.g. run-as-console) to be assigned to each individual action.
@lukecfairchild
Yeah, I tried 0.9.4 and it behaved the same. Bukkit doesn't send EntityDamageEvents for players in creative mode.
Anyway, I re-did player targeting and got something that works. %p should work now on any player, creative or not, up to 100 blocks away.
Still room for improvement (the player hitbox is slightly larger than I'm happy with)... I'll have to study my maths. :P
Dev build #19 and higher should have this change...
thing was before your update it did work, atleast i think. Let me check the non dev build.
@lukecfairchild
I'll look into it, but I have a feeling it's a general problem where Bukkit doesn't send certain events (because you're invulnerable in creative).
I'll do some experiments, maybe there's some other event(s) I can hook into... but no promises. :P
Ok it works great except! Its now having the same problem the essentials powertool has. The %p variable isnt working when someone is in creative mode. If you fix that it will go on our main server.
adding to server NOW!
@lukecfairchild
What did you change?
@lukecfairchild
Thanks for the suggestions!
Here's the dev version for anyone who would like to preview it or test things out.
Not sure when I'll cut an actual release, especially since MC 1.2.4 came out today, but probably in the next few days.
Breaking backwards compatibility is always fine in the name of progress.
And to be honest I might recommend change the main command from: /powertool to: /tool or: /ptool or something else. Reason being it gets glitchy if you have essentials installed.
Here is how i would suggest things:
Reload config: /tool reload
Assign command to right mouse button: /tool r [command] or /tool right [command]
Assign command to left mouse button: /tool l [command] or /tool left [command]
Clear assigned command to current item: /tool clear
Clear all assigned commands: /tool clearall
List all powetool items and their commands: /tool list
@lukecfairchild
Thanks for the bug report, I'm fixing that up now.
The saving thing is planned and the code is actually mostly there... it just hasn't been hooked up to any commands. My issue is that the "powertool" command is already so overloaded, it's gonna get confusing. (/powertool -r, /powertool -c, /powertool -R...)
I guess I might have to break backwards compatibility at some point.
If you or anyone else has any ideas on the command line interface moving forward, I'm open to suggestions...
Ok so your plugin is better than the essentials version in my opinion, OTHER than yours does not save them. If you make it so it saves them this will stay on my server.
Also the server keeps getting this error in the console:
BTW, I added coordinate substitution and released 0.9.4. But the BukkitDev team must be busy since it's been stuck in limbo for over 26 hours now.
@Yazzeh
Hey there. Well, I'm not too happy with the way PowerTool is configured right now, so I've been meaning to re-do that part of it. But I haven't had time to really think about it so I've been putting it off... and off... and off... :)
The %loc thing should be pretty easy, but in order to be really general, it raises a few questions:
I'll look into adding it soon.
Hey ZerothAngel, thanks for making this great, simple plugin! I was wondering when you'd have the block target feature put in? I want to be able to use items with the spawnmob command and #target so I can have a game where the players on my server have to fight off hordes of mobs that I can spawn randomly around them! Will your future %loc substitution allow this? Thanks again!
FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRSTFIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST
@ZerothAngel
Hay thx again for doing this and "Thisguy128512" meant, that u change the command syntax from: "/pt <command>" to "/pt </command>" so it can be used as macro for chatting or somethimg:
"/pt Pease read the rules first!" will get done in the chat:"Pease read the rules first!"
but this will allow the meber to spam a lot easier ... @Thisguy128512
if u want it for chattung just use the /say or /broadcast command, so it would have the same effect and its not possible to spam for Members ...
@Thisguy128512
I'm not sure I understand, and I'm not familiar with Tiki Toolkit (though if I did know about it, I probably wouldn't have created this :P)
When you select an equipped item that has commands bound to it, the plugin will let you know what those commands are.
The only issue right now is that when you swap your current item with a power tool (bound item) from your inventory, nothing is displayed. This is something I'll be looking into in the future.
So maybe you could have it so it says what's programmed in, not add a slash to it, like Tiki Toolkit does. Then this would be perfect- bind macros as well as commands, plus it'd be easier to understand the binding for some people.
This is a great idea for a plugin, and once the command bindings can be saved permanently it will be extremely useful to me. I submitted an enhancement ticket as I would love to see permanent bindings added that were server wide so that all users on the server could make use of it once the server admin created the binding. Having this functionality would allow me to get rid of at least three other plugins that I have kludged together to produce a similar effect.