A Bukkit plugin to allow plugin development in various languages including support for command registration and handling all events.
- Support for multiple scripting languages (Python, JavaScript are known to work).
- Ability to hook into any bukkit event.
- Support for registering bukkit command handlers.
- Support for autoreloading of script files when they change.
- Open Source License
- Supports JavaScript
- Supports Groovy
- Supports Ruby
- Supports Python
- Includes basic examples for supported languages.
Originally developed for dreamcraft.org.
Some trivial example scripts can be found here.
Commands
/script <name> <arguments>
Permission: easyscript.script
Execute a named script with the arguments specified, searches configured script directories for a file called <name>.<suffix> where <suffix> is the suffix for the language, for example js for JavaScript and py for Python.
/scriptreload
Permission: easyscript.scriptreload
Force any scripts and libraries to be reloaded.
Configuration
autoreload
Default: false
If set to true, automatically recompile scripts when they are modified.
language
Default: JavaScript
The programming language scripts will be written in.. The plugin includes support for Groovy, Ruby and Python, you can also add other languages by dropping a JSR 223 compliant scripting runtime jar into the libDirectory. Java includes support for JavaScript, though a lot of the syntax has changed between JDK 1.7 and JDK1.8 due to using a different Javascript engine (Nashorn in 1.8, and Mozilla Rhino before that).
libDirectory
Default: lib
The path to load extra jar files from, the first time the plugin is loaded, the included groovy, ruby and python jars will be extracted to this location. You are free to delete any language runtime jars you are not using, they will only be recreated if the lib directory does not exist when the plugin starts.
useScriptScope
Default: true
When invoking scripts via the /script command, given them their own scope so that their globals are private, if false they will execute in the same context as library scripts. You should leave this true unless you use JRuby, which unfortunately has an issue with handling scopes correctly.
systemProperties
Default: none
System properties to set before creating a script engine. Some script engines use system properties to control their behaviour, the default configuration includes many of these with sensible defaults.
libraries
Default: library
List of script files to load as libraries. Libraries have the ability to hook into Bukkit events, and any functions they provide are available to scripts executed via /script. The default looks for a file called 'plugins/EasyScript/library.js', you can add as many as you want, and split up functionality between library scripts sanely.
scripts
Default: scripts
List of directories under plugins/EasyScript to search for named scripts when a user executes /script <name>. By default /script searches for named scripts under plugins/EasyScript/scripts/<name>.js.