Commander
Programming
Dragonphase - designed for mau5ville.com
Additional Credit
If you have experience with Java and creating Bukkit plugins, I will greatly appreciate the help and am interested with working with developers; I will be rewriting Commander to make it easier to use and more efficient to produce code for.
I am currently looking for someone to help me produce a video demonstration of Commander, demonstrating basic and advanced features. Please message me on bukkit if you are interested - a high standard of demonstrative and/or reviewer abilities is preferred. The reason for this is that most people miss the advanced features or don't understand how to use them.
Overview
Commander is a powerful device interface tool used to assign commands, messages and statements to buttons, levers and pressure plates.
Features |
---|
Add and remove multiple commands to buttons, levers and pressure plates |
Manually add and edit existing device data in the devices.yml file |
Check player permissions, items and groups using if-else statements |
Perform commands as player, op or console |
Multi-Perms support - Vault required! |
Add commands to regions - WorldGuard and WorldEdit required! |
How to use
Firstly, make sure you have VAULT installed, as well as any of the permissions plugins it can handle (such as PermissionsEx or bPermissions). This allows permissions detection for all permissions-based systems specified on the Vault page.
Supported Devices
As of right now, only four devices are supported and listed below. Wooden Button will be easy to implement when 1.4 is released. I am currently in progress of developing a tripwire interface system for Commander:
Wooden Pressure Plate, Stone Pressure Plate, Stone Button, Wooden Button, Lever
Command Types
Command Types specify how the command will be run:
Player, Op, Console
You may also use p, o or c Note: it is impossible for non-ops to op themselves using the op command type, as after all commands have been initiated, it de-ops the player. It is possible on a console command type however.
Commands
An explanation of how these commands work is shown when you type the command in-game:
Command | Description |
---|---|
/commander | Display the commander help. You can also use /com |
/commander add | Add commands to the device you are looking at. See Supported Devices |
/commander rem[ove] | Remove commands from the device you are looking at |
/commander clear | Clear the interface of the device you are looking at |
/commander check | Check all associated commands of the device you are looking at |
/commander list | Show a list of all devices in all worlds |
/commander add-entry | Add commands to the region you are standing in |
/commander add-entry(regionName) | Add commands to the region named regionName |
/commander rem-entry | Remove commands from the region you are standing in |
/commander rem-entry(regionName) | Remove commands from the region named regionName |
References
References add a very powerful aspect to the uses of commander. References allow you to display specific traits of the player or the server to the player. References can also be used in messages and statements:
Reference | Description |
---|---|
@player OR @name | Player name |
@group | Player group name |
@world | Player world name |
@time | Player world time |
@level | Player level |
@exp OR @xp | Player experience |
@health | Player health level |
@food | Player food level |
@mode OR @gm | Player game mode |
@server | Server IP |
@region | Name of the region you are standing in |
Conditional references
With commander, you can force the command to continue on to the next command or stop running any further commands. This is useful when adding conditional statements on devices:
Reference | Description |
---|---|
@continue | Continue to the next command |
@return | Do not run further commands |
An useful example of this is:
@in admin>@@You are an admin>@return /give @player 57 1
This will check if the player is an admin - if they are in the admin group, it sends a message to them saying "You are an admin" and then gives them one diamond block. if they are not in the admin group, @return sop any other commands from running.
A little note about conditional references
Commands in conditional references are run the same as any other commands - if you specify it to be run as the player, op or console, it will run them as the player, op or console.
Messaging
This plugin would be pretty useless if it didn't have a method to send custom messages to a player's chat screen. All color code formats are supported:
Reference | Description | Example |
---|---|---|
@@Message | Send "Message" to the player who initiates the device | @@Hello @player! |
Statements
Statements allow you to run a command if a condition has been met, else optionally run an alternate command. This is useful if you want players with a specific permissions node, group or item to run a command:
Statement | Description | Example |
---|---|---|
@check | Check if the player has a specific permission node | @check foo.bar>@@Yes>@@No |
@has | Check if the player has a specific item | @has 35>@@You have wool>@@You do not have wool |
@in | Check if the player is in a specific group | @in moderators>@@You are a moderator>@@You are a @group |
Manually editing devices
Device data is saved to Commander/devices.yml by default. if you are using an earlier version of Commander, simply rename "commands.yml" to "devices.yml":
Editing devices manually is useful when you have created an empty interface and wish to manually add your own commands to the device. This is also useful when you wish to add commands that cannot be entered into minecraft by default, such as long WorldEdit generation commands.
By defaults, commands in the devices.yml file do not contain a forward slash (/). If you want to add a command, simply write it out without the forward slash. With WorldEdit commands, you need to add one forward slash (instead of two):
say hello | Normal /say command |
/wand | WorldEdit wand |
Permissions
Permission Node | Description |
---|---|
commander.device.use.player | Allow players to use player commands on devices (enabled by default) |
commander.device.use.op | Allow players to use op commands on devices |
commander.device.use.console | Allow players to use console commands on devices |
commander.device.break | Allow players to break a device |
commander.admin.add | Add a command to a device |
commander.admin.remove | Remove a command from a device |
commander.admin.clear | Clear a device's interface |
commander.admin.check | Check a device's associated commands |
commander.admin.list | List all devices in all worlds |
commander.admin.reload | Reload commander |
Further Ideas
- I plan to convert all references into statements:
@player Bob>@@You are bob!>@@You are not bob!
@health 20>/give @player 57 1>@@You are not at full health
- Tripwire support
- I have LOOKED INTO adding commands to any block.
Homepage: dragonphase.com
ba55ment: ba55ment.org
@zferrell
I didn't change this code because it was harder to change it then redo this plugin. In any case I was wrong. You are right. In any case the 90% of my plugins are mine. If I can I will change a bit this plugin but I can't put my versione beacause in it there are a lot of other thing that you don't need
@marcocount
Oh and another thing, it's also pretty fucked up that you would take Dragonphase's work, add to it and update it, then tell people you want money for it. He's the one that did the work! He is giving it out for free so you should be doing the same. Not taking someone else's work and trying to make money off of it.
@marcocount
Well that's pretty fucked up if you ask me. I'm sure the author of this plugin spent countless hours developing it, only to give it out for free. Plus I'm sure you use/have used hundreds of plugins that people spend countless hours working on for free. They give you it for free because we are all a community of people who help each other out. If you are really gonna act like that, then you better start sending some money to all the plugin developers for the plugins you use. If you made an updated version of this plugin than you should share it, just like everyone does. If everyone on here was like you, every plugin on here would cost money and 90% of people wouldn't be able to make a server. Thanks a lot for being so greedy.
@marcocount: using V1.6.1 and fixing that would have been the easier way ;) i did so...
What if you want to add multiple commands?
This plugin is the cause of your server lag.
Hello !
Can you add a variables for broadcast a message for all, because i don't like [Broadcast] :/
Thank you. ;)
This plugin causes serius lag on my server. (bukkit version 1.7.9). Any solution than writing a simplified version?
please update for cb1.7.2-r0.3. thanks
Love the plugin, it really simplifies what I would be doing with multiple command blocks down to one button or plate. There is one issue I keep running into, however. Randomly my entire devices file will become blank after editing, and then if you try to update it, it will clear any changes you make and go blank again. It really frustrating and I have no idea why its doing this.
Other than that, amazing plugin. Hopefully there will be a feature in future to allow for buttons to check if a player is in a scoreboard group, or use vanilla command block type arguments (like @p @r @a or @e / with r=#, score_name=#, and l=#)
I have created an entire Kit-PvP world on my server, and I used this wonderful plugin to make selection areas :D I can even check if someone is a VIP to get a certain kit.
This plugin still works PERFECT on 1.7.5!
Still working fine for me using spigot 1.7.2 :D
Please Update!
@in not working for me. It doesn't recognize the group. Instead, if i issue the message @@You are @group it works fine and shows the group i am any sugestion?
I'm currentlu using bukkit for mine 1.7.2
tks
Is there a way to check how much XP a player has?
@MrTheGame64: HI
Whats diffrent in the dev version?
Oudated. It crashes if i run over a pressure plate :(
@MrTheGame64
Your players also need the "commander.device.use.console" permission if you do /com add C manuadd... And if you do /com add O command... your players will need "commander.device.use.op" to use the button
Plz, add @eco look
/com add c @eco 1000>@@You have more than 1000$>You don't have 1000$ and /com add c @eco 1000>/give @player 57 1 /com add c @eco 1000>eco take @player 1000 Cool Shop !