Shell React monitors general server and player events and runs specific shell programs or scripts in response. Audio alerts are highly configurable and may be different for each event. Originally created to trigger the opening of bandwidth on a private server when players join. The server status of vacant is reliably detected which would fire the appropriate outside script redirecting the bandwidth elsewhere. The concept has many applications, limited only by one's imagination.
Shell React is designed specifically for Microsoft operating systems and makes good use of the integrated, theme audio on this platform. It is a true Bukkit plugin gaining access to Minecraft through the Bukkit api only. This exempts Shell React from any versioning requirements. There will be only one version :-) It is written entirely in Java and is intended to be a robust plugin that simply works and gets forgotten about. The balance of this description will be the 'config.yml' file since it is intended to be self documenting.
* I have this flagged for 146 and 147, but it should be good for earlier versions of Bukkit. I just haven't tested them.
# Shell React, a Bukkit plugin for the Windows platform
# ShellReact will use Vault for permissions if it is installed
# ShellReact is a system level configuration utility designed to facilitate automatic
# resposes to specifiied events. An event may be the entering of a defined comman as
# a player, or at the console making it possible to create custom command sequences.
# These command sequences may include OS shell commands, console commands and player
# commands. Customizable audio alerts on the server are easily defined. ShellReact
# is capable of overriding console commands. File system access is required to use
# it. Ops are given access by default, but ops don't always have file system access.
# This provides intrinsic security, by design.
# Use /shellreact or /sr to reload config.yml at any time, both player and console.
# ShellReact never modifies config.yml this file is always the master. Everything
# setup here is designed to be added and modified hot, without disturbing the server.
# Permission node 'shellreact.admin' is required to use the /shellreact command if
# the Allow_op_shellreact flag under settings below is set to false.
# Every programmable detail in this file has an 'Active' flag designed to make it
# convenient to turn triggers on or off as needed, dynamically. Details of triggers
# not always left live may therefore remain intact while inactive.
# Player and Server cool's determine how long to wait before making a final decision
# on server vacant status. This makes allowances for players struggling with tcp problems
# and prevents unnecessary player quit processing.
Settings:
Allow_op_shellreact: 'true'
Debug: 'false'
Player_quit_cool: '10'
Server_vacant_cool: '20'
# Debug will display the output from your shell command on the console when set to
# true.
# For this Windows platform it is best to stay with the standard backslashes instead
# of forward slashes for shell commands, but either should be ok.
# FQN:
# Shell_cmd: 'C:\parent_dir\child_dir\batch_file.cmd parm1 parm2 %player%'
# UNC:
# Shell_cmd: '\\Computer\parent_dir\child_dir\program.exe %player% parm2'
# Console_cmd is a command as entered from the console. Multiple commands may be
# defined, separated by commas.
# Alerts may be set to standard, Windows theme alerts. See below. In Windows any
# audio may be connected to any theme identifier using Control-Panel/Sounds
# VARIABLES
# %player% The player that either joined or quit
# %player_ip% The player's tc/ip address '0.0.0.0'
# %location% Player location in the form of: 'world x y z'
# %world% Player world location
# %X% Player X coordinate location
# %Y% Player Y coordinate location
# %Z% Player Z coordinate location
# %player_count% The number of players online
# %parameters% Parameters entered with Input_cmd, at runtime
# Use Active 'false' to leave entire event inactive.
# Use 'none' to leave a detail unused.
# SERVER TRIGGERS
Player_join:
Active: 'false'
Shell_cmd: 'none'
Console_cmd: 'none'
Audio_alert: 'win.sound.default'
Player_quit:
Active: 'false'
Shell_cmd: 'none'
Console_cmd: 'none'
Audio_alert: 'win.sound.exit'
Server_vacant:
Active: 'false'
Shell_cmd: 'none'
Console_cmd: 'none'
Audio_alert: 'win.sound.exclamation'
Server_start:
Active: 'false'
Shell_cmd: 'none'
Console_cmd: 'none'
Audio_alert: 'win.sound.start'
Server_stop:
Active: 'false'
Shell_cmd: 'none'
Console_cmd: 'none'
Audio_alert: 'win.sound.close'
# Console monitor triggers. These are triggers defined by case insensitive strings.
# The trigger is invoked when Trigger_string is found in a line of console output.
# Continue the numbered pattern to define as many as desired.
# Active 'true' to make the trigger active, or live
# Trigger_string The string to look for in console output
# Shell_cmd Shell command to run
# Console_cmd Console command to run
# - multiple commands may be defined, separated by commas
# Trigger_cool Minimum delay in milliseconds between successive invocations
# Audio_alert Theme audio alert
# CONSOLE MONITOR TRIGGERS
Console_mon:
'0':
Active: 'false'
Trigger_string: 'none'
Shell_cmd: 'none'
Console_cmd: 'none'
Trigger_cool: '10000'
Audio_alert: 'win.sound.default'
'1':
Active: 'false'
Trigger_string: 'none'
Shell_cmd: 'none'
Console_cmd: 'none'
Trigger_cool: '10000'
Audio_alert: 'win.sound.default'
# Custom input commands. These are commands input by a player and may, optionally,
# include console input. Continue the numbered pattern to define as many as desired.
# Use this facility with the /shellreact or /sr command to dynamically add secure
# console and player command sequences that may, optionally, alert the console and
# trigger shell commands. This is designed to be configured hot, with no need to
# disturb the server, or play in process.
# While the action sequences may potentially be lengthy, care is taken to invoke them
# in a manner that will not disturb Minecraft play. For example; a typical command
# will immediately invoke 'Player_cmd' sequences. 'Console_cmd' sequences follow,
# slightly delayed. 'Shell_cmd' and 'Audio_alert' are invoked on their own threads.
# With Override set to false, commands defined here will not affect the commands
# named with Input_cmd that have the same name belonging to other plugins or the
# server. Responses here will simply supplement any other command with the same
# name. Setting Override to true will, in effect, create a master command,
# superseding and replacing any other command from other plugins with the same name.
# Active 'true' to make the command active, or live
# Input_cmd Command entered by player, or console (trigger)
# Shell_cmd Shell command to run
# Console_cmd Console command to run
# - multiple commands may be defined, separated by commas
# Player_cmd Live player command to run
# - multiple commands may be defined, separated by commas
# Audio_alert Theme audio alert
# Override Cancel and replace original command entered
# Include_console 'true' to include console input
# Op_allow 'true' to respond to ops
# Perm_node Permission node, 'none' ignores node
# Player_allow Specific player permission, 'none' ignores player
# CUSTOM INPUT COMMANDS (or command supplements)
Commands:
'0':
Active: 'false'
Input_cmd: 'none'
Shell_cmd: 'none'
Console_cmd: 'none'
Player_cmd: 'none'
Audio_alert: 'win.sound.default'
Override: 'false'
Include_console: 'false'
Op_allow: 'true'
Perm_node: 'none'
Player_allow: 'none'
'1':
Active: 'false'
Input_cmd: 'none'
Shell_cmd: 'none'
Console_cmd: 'none'
Player_cmd: 'none'
Audio_alert: 'win.sound.default'
Override: 'false'
Include_console: 'false'
Op_allow: 'true'
Perm_node: 'none'
Player_allow: 'none'
# WINDOWS THEME ALERTS
# 'win.sound.default'
# 'win.sound.close'
# 'win.sound.maximize'
# 'win.sound.minimize'
# 'win.sound.menuCommand'
# 'win.sound.menuPopup'
# 'win.sound.open'
# 'win.sound.restoreDown'
# 'win.sound.restoreUp'
# 'win.sound.asterisk'
# 'win.sound.exclamation'
# 'win.sound.exit'
# 'win.sound.hand'
# 'win.sound.question'
# 'win.sound.start'
# Feel free to remove comments to suit your taste. A default config.yml with
# documentation is easily regenerated by renaming your config.yml and running
# /shellreact