Commander

15.9k Downloads

Commander

Source | Latest Development Build (1.6.4) | Latest Release (1.6.3)

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:

CommandDescription
/commanderDisplay the commander help. You can also use /com
/commander addAdd commands to the device you are looking at. See Supported Devices
/commander rem[ove]Remove commands from the device you are looking at
/commander clearClear the interface of the device you are looking at
/commander checkCheck all associated commands of the device you are looking at
/commander listShow a list of all devices in all worlds
/commander add-entryAdd commands to the region you are standing in
/commander add-entry(regionName)Add commands to the region named regionName
/commander rem-entryRemove 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:

ReferenceDescription
@player OR @namePlayer name
@groupPlayer group name
@worldPlayer world name
@timePlayer world time
@levelPlayer level
@exp OR @xpPlayer experience
@healthPlayer health level
@foodPlayer food level
@mode OR @gmPlayer game mode
@serverServer IP
@regionName 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:

ReferenceDescription
@continueContinue to the next command
@returnDo 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:

ReferenceDescriptionExample
@@MessageSend "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:

StatementDescriptionExample
@checkCheck if the player has a specific permission node@check foo.bar>@@Yes>@@No
@hasCheck if the player has a specific item@has 35>@@You have wool>@@You do not have wool
@inCheck 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 helloNormal /say command
/wandWorldEdit wand

Permissions

Permission NodeDescription
commander.device.use.playerAllow players to use player commands on devices (enabled by default)
commander.device.use.opAllow players to use op commands on devices
commander.device.use.consoleAllow players to use console commands on devices
commander.device.breakAllow players to break a device
commander.admin.addAdd a command to a device
commander.admin.removeRemove a command from a device
commander.admin.clearClear a device's interface
commander.admin.checkCheck a device's associated commands
commander.admin.listList all devices in all worlds
commander.admin.reloadReload 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