EasyScript

3.5k Downloads

EasyScript

Documentation | Source | Feature Requests | Bug Report

JavaScriptGroovyJythonJRuby

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.