Cleaning up markdown documentation.
This commit is contained in:
parent
1562a3bf0f
commit
76164254ba
15 changed files with 305 additions and 363 deletions
|
@ -115,26 +115,35 @@ provided. The `lib` directory is for internal use by ScriptCraft.
|
||||||
Modules in this directory are not automatically loaded nor are they
|
Modules in this directory are not automatically loaded nor are they
|
||||||
globally exported.
|
globally exported.
|
||||||
|
|
||||||
### Directories
|
### plugins sub-directories
|
||||||
|
|
||||||
As of December 24 2013, the `scriptcraft/plugins` directory has the following sub-directories...
|
As of December 24 2013, the `scriptcraft/plugins` directory has the following sub-directories...
|
||||||
|
|
||||||
* drone - Contains the drone module and drone extensions. Drone was the first scriptcraft module.
|
* drone - Contains the drone module and drone extensions. Drone was the first scriptcraft module.
|
||||||
* mini-games - Contains mini-games
|
* mini-games - Contains mini-games
|
||||||
* arrows - The arrows module
|
* arrows - The arrows module - Changes the behaviour of Arrows: Explosive, Fireworks, Teleportation etc.
|
||||||
* signs - The signs module (includes example signs)
|
* signs - The signs module (includes example signs) - create interactive signs.
|
||||||
* chat - The chat plugin/module
|
* chat - The chat plugin/module
|
||||||
* alias - The alias plugin/module
|
* alias - The alias plugin/module - for creating custom aliases for commonly used commands.
|
||||||
* home - The home module - for setting homes and visiting other homes.
|
* home - The home module - for setting homes and visiting other homes.
|
||||||
|
|
||||||
## Core Module: functions
|
## Global functions
|
||||||
|
|
||||||
|
ScripCraft provides some global functions which can be used by all plugins/modules...
|
||||||
|
|
||||||
|
### echo function
|
||||||
|
|
||||||
|
The `echo()` function displays a message on the in-game screen. The message is displayed to the `self` player (this is usually the player who issued the `/js` or `/jsp` command).
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
/js echo('Hello World')
|
||||||
|
|
||||||
ScripCraft provides some functions which can be used by all plugins/modules...
|
|
||||||
|
|
||||||
* echo (message) - Displays a message on the screen.
|
* echo (message) - Displays a message on the screen.
|
||||||
For example: `/js echo('Hello World')` will print Hello World on the in-game chat window.
|
For example: `/js echo('Hello World')` will print Hello World on the in-game chat window.
|
||||||
For programmers familiar with Javascript web programming, an `alert` function is also provided.
|
For programmers familiar with Javascript web programming, an `alert` function is also provided.
|
||||||
`alert` works exactly the same as `echo` e.g. `alert('Hello World')`
|
`alert` works exactly the same as `echo` e.g. `alert('Hello World')`.
|
||||||
|
|
||||||
* require (modulename) - Will load modules. See [Node.js modules][njsmod]
|
* require (modulename) - Will load modules. See [Node.js modules][njsmod]
|
||||||
|
|
||||||
|
@ -183,7 +192,7 @@ load() should only be used to load .json data.
|
||||||
* filename - The name of the file to load.
|
* filename - The name of the file to load.
|
||||||
* warnOnFileNotFound (optional - default: false) - warn if the file was not found.
|
* warnOnFileNotFound (optional - default: false) - warn if the file was not found.
|
||||||
|
|
||||||
#### Return
|
#### Returns
|
||||||
|
|
||||||
load() will return the result of the last statement evaluated in the file.
|
load() will return the result of the last statement evaluated in the file.
|
||||||
|
|
||||||
|
@ -283,34 +292,8 @@ plugin author) safely expose javascript functions for use by players.
|
||||||
|
|
||||||
See chat/colors.js or alias/alias.js or homes/homes.js for examples of how to use the `command()` function.
|
See chat/colors.js or alias/alias.js or homes/homes.js for examples of how to use the `command()` function.
|
||||||
|
|
||||||
### ready() function
|
## global variables
|
||||||
|
|
||||||
The `ready()` function provides a way for plugins to do additional
|
|
||||||
setup once all of the other plugins/modules have loaded. For example,
|
|
||||||
event listener registration can only be done after the
|
|
||||||
events/events.js module has loaded. A plugin author could load the
|
|
||||||
file explicilty like this...
|
|
||||||
|
|
||||||
load(__folder + "../events/events.js");
|
|
||||||
|
|
||||||
// event listener registration goes here
|
|
||||||
|
|
||||||
... or better still, just do event regristration using the `ready()`
|
|
||||||
handler knowing that by the time the `ready()` callback is invoked,
|
|
||||||
all of the scriptcraft modules have been loaded...
|
|
||||||
|
|
||||||
ready(function(){
|
|
||||||
// event listener registration goes here
|
|
||||||
// code that depends on other plugins/modules also goes here
|
|
||||||
});
|
|
||||||
|
|
||||||
The execution of the function object passed to the `ready()` function
|
|
||||||
is *deferred* until all of the plugins/modules have loaded. That way
|
|
||||||
you are guaranteed that when the function is invoked, all of the
|
|
||||||
plugins/modules have been loaded and evaluated and are ready to use.
|
|
||||||
|
|
||||||
Core Module - Special Variables
|
|
||||||
===============================
|
|
||||||
There are a couple of special javascript variables available in ScriptCraft...
|
There are a couple of special javascript variables available in ScriptCraft...
|
||||||
|
|
||||||
* __folder - The current working directory - this variable is only to be used within the main body of a .js file.
|
* __folder - The current working directory - this variable is only to be used within the main body of a .js file.
|
||||||
|
@ -373,7 +356,7 @@ See [issue #69][issue69] for more information.
|
||||||
|
|
||||||
[issue69]: https://github.com/walterhiggins/ScriptCraft/issues/69
|
[issue69]: https://github.com/walterhiggins/ScriptCraft/issues/69
|
||||||
|
|
||||||
## Require - Node.js-style module loading in ScriptCraft
|
## require - Node.js-style module loading in ScriptCraft
|
||||||
|
|
||||||
Node.js is a server-side javascript environment with an excellent
|
Node.js is a server-side javascript environment with an excellent
|
||||||
module loading system based on CommonJS. Modules in Node.js are really
|
module loading system based on CommonJS. Modules in Node.js are really
|
||||||
|
@ -415,19 +398,21 @@ and modules themeselves can use other modules. Modules have full
|
||||||
control over what functions and properties they want to provide to
|
control over what functions and properties they want to provide to
|
||||||
others.
|
others.
|
||||||
|
|
||||||
## Important
|
### Important
|
||||||
|
|
||||||
Although ScriptCraft now supports Node.js style modules, it does not
|
Although ScriptCraft now supports Node.js style modules, it does not
|
||||||
support node modules. Node.js and Rhino are two very different
|
support node modules. Node.js and Rhino are two very different
|
||||||
Javascript environments. ScriptCraft uses Rhino Javascript, not
|
Javascript environments. ScriptCraft uses Rhino Javascript, not
|
||||||
Node.js.
|
Node.js. Standard Node.js modules such as `'fs'` are not available in ScriptCraft.
|
||||||
|
|
||||||
Modules can be loaded using relative or absolute paths. Per the CommonJS
|
Modules can be loaded using relative or absolute paths. Per the CommonJS
|
||||||
module specification, the '.js' suffix is optional.
|
module specification, the '.js' suffix is optional.
|
||||||
|
|
||||||
[cjsmodules]: http://wiki.commonjs.org/wiki/Modules/1.1.1.
|
[cjsmodules]: http://wiki.commonjs.org/wiki/Modules/1.1.1.
|
||||||
|
|
||||||
## When resolving module names to file paths, ScriptCraft uses the following rules...
|
### module name resolution
|
||||||
|
|
||||||
|
When resolving module names to file paths, ScriptCraft uses the following rules...
|
||||||
|
|
||||||
1. if the module does not begin with './' or '/' then ...
|
1. if the module does not begin with './' or '/' then ...
|
||||||
|
|
||||||
|
@ -457,19 +442,19 @@ module specification, the '.js' suffix is optional.
|
||||||
|
|
||||||
3.2 if no package.json file exists then look for an index.js file in the directory
|
3.2 if no package.json file exists then look for an index.js file in the directory
|
||||||
|
|
||||||
events Module
|
## events Module
|
||||||
=============
|
|
||||||
The Events module provides a thin wrapper around Bukkit's
|
The Events module provides a thin wrapper around Bukkit's
|
||||||
Event-handling API. Bukkit's Events API makes use of Java Annotations
|
Event-handling API. Bukkit's Events API makes use of Java Annotations
|
||||||
which are not available in Javascript, so this module provides a
|
which are not available in Javascript, so this module provides a
|
||||||
simple way to listen to minecraft events in javascript.
|
simple way to listen to minecraft events in javascript.
|
||||||
|
|
||||||
events.on() static method
|
### events.on() static method
|
||||||
=========================
|
|
||||||
This method is used to register event listeners.
|
This method is used to register event listeners.
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* eventName - A string or java class. If a string is supplied it must
|
* eventName - A string or java class. If a string is supplied it must
|
||||||
be part of the Bukkit event class name. See [Bukkit API][buk] for
|
be part of the Bukkit event class name. See [Bukkit API][buk] for
|
||||||
|
@ -493,40 +478,40 @@ Parameters
|
||||||
"NORMAL", "MONITOR". For an explanation of what the different
|
"NORMAL", "MONITOR". For an explanation of what the different
|
||||||
priorities mean refer to bukkit's [Event API Reference][buk2].
|
priorities mean refer to bukkit's [Event API Reference][buk2].
|
||||||
|
|
||||||
Returns
|
#### Returns
|
||||||
-------
|
|
||||||
An org.bukkit.plugin.RegisteredListener object which can be used to
|
An org.bukkit.plugin.RegisteredListener object which can be used to
|
||||||
unregister the listener. This same object is passed to the callback
|
unregister the listener. This same object is passed to the callback
|
||||||
function each time the event is fired.
|
function each time the event is fired.
|
||||||
|
|
||||||
Example:
|
#### Example:
|
||||||
------
|
|
||||||
The following code will print a message on screen every time a block is broken in the game
|
The following code will print a message on screen every time a block is broken in the game
|
||||||
|
|
||||||
var events = require('./events/events');
|
events.on('block.BlockBreakEvent', function(listener, evt){
|
||||||
|
evt.player.sendMessage( evt.player.name + ' broke a block!');
|
||||||
events.on("block.BlockBreakEvent", function(listener, evt){
|
|
||||||
echo (evt.player.name + " broke a block!");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
To handle an event only once and unregister from further events...
|
To handle an event only once and unregister from further events...
|
||||||
|
|
||||||
var events = require('./events/events');
|
events.on('block.BlockBreakEvent', function(listener, evt){
|
||||||
|
evt.player.sendMessage( evt.player.name + ' broke a block!');
|
||||||
events.on("block.BlockBreakEvent", function(listener, evt){
|
|
||||||
print (evt.player.name + " broke a block!");
|
|
||||||
evt.handlers.unregister(listener);
|
evt.handlers.unregister(listener);
|
||||||
});
|
});
|
||||||
|
|
||||||
To unregister a listener *outside* of the listener function...
|
To unregister a listener *outside* of the listener function...
|
||||||
|
|
||||||
var events = require('./events/events');
|
var myBlockBreakListener = events.on('block.BlockBreakEvent',function(l,e){ ... });
|
||||||
|
|
||||||
var myBlockBreakListener = events.on("block.BlockBreakEvent",function(l,e){ ... });
|
|
||||||
...
|
...
|
||||||
var handlers = org.bukkit.event.block.BlockBreakEvent.getHandlerList();
|
var handlers = org.bukkit.event.block.BlockBreakEvent.getHandlerList();
|
||||||
handlers.unregister(myBlockBreakListener);
|
handlers.unregister(myBlockBreakListener);
|
||||||
|
|
||||||
|
To listen for events using a full class name as the `eventName` parameter...
|
||||||
|
|
||||||
|
events.on(org.bukkit.event.block.BlockBreakEvent, function(listener, evt){
|
||||||
|
evt.player.sendMessage( evt.player.name + ' broke a block!');
|
||||||
|
});
|
||||||
|
|
||||||
[buk2]: http://wiki.bukkit.org/Event_API_Reference
|
[buk2]: http://wiki.bukkit.org/Event_API_Reference
|
||||||
[buk]: http://jd.bukkit.org/dev/apidocs/index.html?org/bukkit/event/Event.html
|
[buk]: http://jd.bukkit.org/dev/apidocs/index.html?org/bukkit/event/Event.html
|
||||||
|
|
||||||
|
@ -554,16 +539,15 @@ in-game).
|
||||||
[lgr]: http://jd.bukkit.org/beta/apidocs/org/bukkit/plugin/PluginLogger.html
|
[lgr]: http://jd.bukkit.org/beta/apidocs/org/bukkit/plugin/PluginLogger.html
|
||||||
[strfmt]: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format(java.lang.String, java.lang.Object...)
|
[strfmt]: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format(java.lang.String, java.lang.Object...)
|
||||||
|
|
||||||
http.request() function
|
## http.request() function
|
||||||
====================
|
|
||||||
The http.request() function will fetch a web address asynchronously (on a
|
The http.request() function will fetch a web address asynchronously (on a
|
||||||
separate thread)and pass the URL's response to a callback function
|
separate thread)and pass the URL's response to a callback function
|
||||||
which will be executed synchronously (on the main thread). In this
|
which will be executed synchronously (on the main thread). In this
|
||||||
way, http.request() can be used to fetch web content without blocking the
|
way, http.request() can be used to fetch web content without blocking the
|
||||||
main thread of execution.
|
main thread of execution.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* request: The request details either a plain URL e.g. "http://scriptcraft.js/sample.json" or an object with the following properties...
|
* request: The request details either a plain URL e.g. "http://scriptcraft.js/sample.json" or an object with the following properties...
|
||||||
|
|
||||||
|
@ -575,8 +559,8 @@ Parameters
|
||||||
- responseCode: The numeric response code from the server. If the server did not respond with 200 OK then the response parameter will be undefined.
|
- responseCode: The numeric response code from the server. If the server did not respond with 200 OK then the response parameter will be undefined.
|
||||||
- response: A string (if the response is of type text) or object containing the HTTP response body.
|
- response: A string (if the response is of type text) or object containing the HTTP response body.
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
The following example illustrates how to use http.request to make a request to a JSON web service and evaluate its response...
|
The following example illustrates how to use http.request to make a request to a JSON web service and evaluate its response...
|
||||||
|
|
||||||
var jsResponse;
|
var jsResponse;
|
||||||
|
@ -595,8 +579,8 @@ The following example illustrates how to use http.request to make a request to a
|
||||||
var jsObj = eval("(" + responseBody + ")");
|
var jsObj = eval("(" + responseBody + ")");
|
||||||
});
|
});
|
||||||
|
|
||||||
Utilities Module
|
## Utilities Module
|
||||||
================
|
|
||||||
Miscellaneous utility functions and classes to help with programming.
|
Miscellaneous utility functions and classes to help with programming.
|
||||||
|
|
||||||
* locationToString(Location) - returns a bukkit Location object in string form.
|
* locationToString(Location) - returns a bukkit Location object in string form.
|
||||||
|
@ -610,8 +594,8 @@ Miscellaneous utility functions and classes to help with programming.
|
||||||
* getMousePos(playerName) - returns the x,y,z of the current block being targeted by the named player
|
* getMousePos(playerName) - returns the x,y,z of the current block being targeted by the named player
|
||||||
or player or `self` if no paramter is provided.
|
or player or `self` if no paramter is provided.
|
||||||
|
|
||||||
foreach() function
|
### foreach() function
|
||||||
========================
|
|
||||||
The utils.foreach() function is a utility function for iterating over
|
The utils.foreach() function is a utility function for iterating over
|
||||||
an array of objects (or a java.util.Collection of objects) and processing each object in turn. Where
|
an array of objects (or a java.util.Collection of objects) and processing each object in turn. Where
|
||||||
utils.foreach() differs from other similar functions found in
|
utils.foreach() differs from other similar functions found in
|
||||||
|
@ -624,8 +608,7 @@ package for scheduling processing of arrays.
|
||||||
|
|
||||||
[sched]: http://jd.bukkit.org/beta/apidocs/org/bukkit/scheduler/package-summary.html
|
[sched]: http://jd.bukkit.org/beta/apidocs/org/bukkit/scheduler/package-summary.html
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* array : The array to be processed - It can be a javascript array, a java array or java.util.Collection
|
* array : The array to be processed - It can be a javascript array, a java array or java.util.Collection
|
||||||
* callback : The function to be called to process each item in the
|
* callback : The function to be called to process each item in the
|
||||||
|
@ -654,11 +637,11 @@ subsequent items are processed later). If your code relies on the
|
||||||
completion of the array processing, then provide an `onDone` parameter
|
completion of the array processing, then provide an `onDone` parameter
|
||||||
and put the code there.
|
and put the code there.
|
||||||
|
|
||||||
Example
|
#### Example
|
||||||
-------
|
|
||||||
The following example illustrates how to use foreach for immediate processing of an array...
|
The following example illustrates how to use foreach for immediate processing of an array...
|
||||||
|
|
||||||
var utils = require('./utils/_utils');
|
var utils = require('utils');
|
||||||
var players = ["moe", "larry", "curly"];
|
var players = ["moe", "larry", "curly"];
|
||||||
utils.foreach (players, function(item){
|
utils.foreach (players, function(item){
|
||||||
server.getPlayer(item).sendMessage("Hi " + item);
|
server.getPlayer(item).sendMessage("Hi " + item);
|
||||||
|
@ -678,7 +661,7 @@ without hogging CPU usage...
|
||||||
|
|
||||||
// build a structure 200 wide x 200 tall x 200 long
|
// build a structure 200 wide x 200 tall x 200 long
|
||||||
// (That's 8 Million Blocks - enough to tax any machine!)
|
// (That's 8 Million Blocks - enough to tax any machine!)
|
||||||
var utils = require('./utils/_utils');
|
var utils = require('utils');
|
||||||
|
|
||||||
var a = [];
|
var a = [];
|
||||||
a.length = 200;
|
a.length = 200;
|
||||||
|
@ -695,8 +678,8 @@ without hogging CPU usage...
|
||||||
};
|
};
|
||||||
utils.foreach (a, processItem, null, 10, onDone);
|
utils.foreach (a, processItem, null, 10, onDone);
|
||||||
|
|
||||||
utils.nicely() function
|
### utils.nicely() function
|
||||||
=======================
|
|
||||||
The utils.nicely() function is for performing processing using the
|
The utils.nicely() function is for performing processing using the
|
||||||
[org.bukkit.scheduler][sched] package/API. utils.nicely() lets you
|
[org.bukkit.scheduler][sched] package/API. utils.nicely() lets you
|
||||||
process with a specified delay between the completion of each `next()`
|
process with a specified delay between the completion of each `next()`
|
||||||
|
@ -704,8 +687,7 @@ function and the start of the next `next()` function.
|
||||||
`utils.nicely()` is a recursive function - that is - it calls itself
|
`utils.nicely()` is a recursive function - that is - it calls itself
|
||||||
(schedules itself actually) repeatedly until `hasNext` returns false.
|
(schedules itself actually) repeatedly until `hasNext` returns false.
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* next : A function which will be called if processing is to be done.
|
* next : A function which will be called if processing is to be done.
|
||||||
* hasNext : A function which is called to determine if the `next`
|
* hasNext : A function which is called to determine if the `next`
|
||||||
|
@ -715,29 +697,27 @@ Parameters
|
||||||
* onDone : A function which is to be called when all processing is complete (hasNext returned false).
|
* onDone : A function which is to be called when all processing is complete (hasNext returned false).
|
||||||
* delay : The delay (in server ticks - 20 per second) between each call.
|
* delay : The delay (in server ticks - 20 per second) between each call.
|
||||||
|
|
||||||
Example
|
#### Example
|
||||||
-------
|
|
||||||
See the source code to utils.foreach for an example of how utils.nicely is used.
|
See the source code to utils.foreach for an example of how utils.nicely is used.
|
||||||
|
|
||||||
utils.at() function
|
### utils.at() function
|
||||||
===================
|
|
||||||
The utils.at() function will perform a given task at a given time every
|
The utils.at() function will perform a given task at a given time every
|
||||||
(minecraft) day.
|
(minecraft) day.
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* time24hr : The time in 24hr form - e.g. 9:30 in the morning is "09:30" while
|
* time24hr : The time in 24hr form - e.g. 9:30 in the morning is "09:30" while
|
||||||
9:30 pm is "21:30", midnight is "00:00" and midday is "12:00"
|
9:30 pm is "21:30", midnight is "00:00" and midday is "12:00"
|
||||||
* callback : A javascript function which will be invoked at the given time.
|
* callback : A javascript function which will be invoked at the given time.
|
||||||
* world : (optional) Each world has its own clock. If no world is specified, the server's first world is used.
|
* world : (optional) Each world has its own clock. If no world is specified, the server's first world is used.
|
||||||
|
|
||||||
Example
|
#### Example
|
||||||
-------
|
|
||||||
|
|
||||||
To warn players when night is approaching...
|
To warn players when night is approaching...
|
||||||
|
|
||||||
var utils = require('./utils/_utils');
|
var utils = require('utils');
|
||||||
|
|
||||||
utils.at( "19:00", function() {
|
utils.at( "19:00", function() {
|
||||||
|
|
||||||
|
@ -747,6 +727,25 @@ To warn players when night is approaching...
|
||||||
|
|
||||||
}, self.world);
|
}, self.world);
|
||||||
|
|
||||||
|
### utils.find() function
|
||||||
|
|
||||||
|
The utils.find() function will return a list of all files starting at
|
||||||
|
a given directory and recursiving trawling all sub-directories.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
* dir : The starting path. Must be a string.
|
||||||
|
* filter : (optional) A [FilenameFilter][fnfltr] object to return only files matching a given pattern.
|
||||||
|
|
||||||
|
[fnfltr]: http://docs.oracle.com/javase/6/docs/api/java/io/FilenameFilter.html
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
|
||||||
|
var utils = require('utils');
|
||||||
|
var jsFiles = utils.find('./', function(dir,name){
|
||||||
|
return name.match(/\.js$/);
|
||||||
|
});
|
||||||
|
|
||||||
String class extensions
|
String class extensions
|
||||||
-----------------------
|
-----------------------
|
||||||
The following chat-formatting methods are added to the javascript String class..
|
The following chat-formatting methods are added to the javascript String class..
|
||||||
|
@ -788,28 +787,34 @@ Example
|
||||||
|
|
||||||
<p style="color:gold;font-weight:bold">Hello World</p>
|
<p style="color:gold;font-weight:bold">Hello World</p>
|
||||||
|
|
||||||
Blocks Module
|
## Blocks Module
|
||||||
=============
|
|
||||||
You hate having to lookup [Data Values][dv] when you use ScriptCraft's Drone() functions. So do I.
|
|
||||||
So I created this blocks object which is a helper object for use in construction.
|
|
||||||
|
|
||||||
Examples
|
You hate having to lookup [Data Values][dv] when you use ScriptCraft's
|
||||||
--------
|
Drone() functions. So do I. So I created this blocks object which is
|
||||||
|
a helper object for use in construction.
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
box( blocks.oak ); // creates a single oak wood block
|
box( blocks.oak ); // creates a single oak wood block
|
||||||
box( blocks.sand, 3, 2, 1 ); // creates a block of sand 3 wide x 2 high x 1 long
|
box( blocks.sand, 3, 2, 1 ); // creates a block of sand 3 wide x 2 high x 1 long
|
||||||
box( blocks.wool.green, 2 ); // creates a block of green wool 2 blocks wide
|
box( blocks.wool.green, 2 ); // creates a block of green wool 2 blocks wide
|
||||||
|
|
||||||
Color aliased properties that were a direct descendant of the blocks object are no longer used to avoid confusion with carpet and stained clay blocks. In addition, there's a convenience array `blocks.rainbow` which is an array of the 7 colors of the rainbow (or closest approximations).
|
Color aliased properties that were a direct descendant of the blocks
|
||||||
|
object are no longer used to avoid confusion with carpet and stained
|
||||||
|
clay blocks. In addition, there's a convenience array `blocks.rainbow`
|
||||||
|
which is an array of the 7 colors of the rainbow (or closest
|
||||||
|
approximations).
|
||||||
|
|
||||||
|
The blocks module is globally exported by the Drone module.
|
||||||
|
|
||||||
|
## Fireworks Module
|
||||||
|
|
||||||
Fireworks Module
|
|
||||||
================
|
|
||||||
The fireworks module makes it easy to create fireworks using
|
The fireworks module makes it easy to create fireworks using
|
||||||
ScriptCraft. The module has a single function `firework` which takes
|
ScriptCraft. The module has a single function `firework` which takes
|
||||||
a `org.bukkit.Location` as its 1 and only parameter.
|
a `org.bukkit.Location` as its 1 and only parameter.
|
||||||
|
|
||||||
Examples
|
### Examples
|
||||||
--------
|
|
||||||
The module also extends the `Drone` object adding a `firework` method
|
The module also extends the `Drone` object adding a `firework` method
|
||||||
so that fireworks can be created as a part of a Drone chain. For
|
so that fireworks can be created as a part of a Drone chain. For
|
||||||
Example....
|
Example....
|
||||||
|
@ -1533,19 +1538,18 @@ Another example: This statement creates a row of trees 2 by 3 ...
|
||||||
|
|
||||||
![times example 1](img/times-trees.png)
|
![times example 1](img/times-trees.png)
|
||||||
|
|
||||||
Drone.blocktype() method
|
## Drone.blocktype() method
|
||||||
========================
|
|
||||||
Creates the text out of blocks. Useful for large-scale in-game signs.
|
Creates the text out of blocks. Useful for large-scale in-game signs.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* message - The message to create - (use `\n` for newlines)
|
* message - The message to create - (use `\n` for newlines)
|
||||||
* foregroundBlock (default: black wool) - The block to use for the foreground
|
* foregroundBlock (default: black wool) - The block to use for the foreground
|
||||||
* backgroundBlock (default: none) - The block to use for the background
|
* backgroundBlock (default: none) - The block to use for the background
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a 2-line high message using glowstone...
|
To create a 2-line high message using glowstone...
|
||||||
|
|
||||||
blocktype("Hello\nWorld",blocks.glowstone);
|
blocktype("Hello\nWorld",blocks.glowstone);
|
||||||
|
@ -1554,18 +1558,17 @@ To create a 2-line high message using glowstone...
|
||||||
|
|
||||||
[imgbt1]: img/blocktype1.png
|
[imgbt1]: img/blocktype1.png
|
||||||
|
|
||||||
Drone.sphere() method
|
## Drone.sphere() method
|
||||||
=====================
|
|
||||||
Creates a sphere.
|
Creates a sphere.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* block - The block the sphere will be made of.
|
* block - The block the sphere will be made of.
|
||||||
* radius - The radius of the sphere.
|
* radius - The radius of the sphere.
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a sphere of Iron with a radius of 10 blocks...
|
To create a sphere of Iron with a radius of 10 blocks...
|
||||||
|
|
||||||
sphere( blocks.iron, 10);
|
sphere( blocks.iron, 10);
|
||||||
|
@ -1575,18 +1578,17 @@ To create a sphere of Iron with a radius of 10 blocks...
|
||||||
Spheres are time-consuming to make. You *can* make large spheres (250 radius) but expect the
|
Spheres are time-consuming to make. You *can* make large spheres (250 radius) but expect the
|
||||||
server to be very busy for a couple of minutes while doing so.
|
server to be very busy for a couple of minutes while doing so.
|
||||||
|
|
||||||
Drone.sphere0() method
|
## Drone.sphere0() method
|
||||||
======================
|
|
||||||
Creates an empty sphere.
|
Creates an empty sphere.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* block - The block the sphere will be made of.
|
* block - The block the sphere will be made of.
|
||||||
* radius - The radius of the sphere.
|
* radius - The radius of the sphere.
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a sphere of Iron with a radius of 10 blocks...
|
To create a sphere of Iron with a radius of 10 blocks...
|
||||||
|
|
||||||
sphere0( blocks.iron, 10);
|
sphere0( blocks.iron, 10);
|
||||||
|
@ -1594,67 +1596,62 @@ To create a sphere of Iron with a radius of 10 blocks...
|
||||||
Spheres are time-consuming to make. You *can* make large spheres (250 radius) but expect the
|
Spheres are time-consuming to make. You *can* make large spheres (250 radius) but expect the
|
||||||
server to be very busy for a couple of minutes while doing so.
|
server to be very busy for a couple of minutes while doing so.
|
||||||
|
|
||||||
Drone.hemisphere() method
|
## Drone.hemisphere() method
|
||||||
=========================
|
|
||||||
Creates a hemisphere. Hemispheres can be either north or south.
|
Creates a hemisphere. Hemispheres can be either north or south.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* block - the block the hemisphere will be made of.
|
* block - the block the hemisphere will be made of.
|
||||||
* radius - the radius of the hemisphere
|
* radius - the radius of the hemisphere
|
||||||
* northSouth - whether the hemisphere is 'north' or 'south'
|
* northSouth - whether the hemisphere is 'north' or 'south'
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a wood 'north' hemisphere with a radius of 7 blocks...
|
To create a wood 'north' hemisphere with a radius of 7 blocks...
|
||||||
|
|
||||||
hemisphere(blocks.oak, 7, 'north');
|
hemisphere(blocks.oak, 7, 'north');
|
||||||
|
|
||||||
![hemisphere example](img/hemisphereex1.png)
|
![hemisphere example](img/hemisphereex1.png)
|
||||||
|
|
||||||
Drone.hemisphere0() method
|
## Drone.hemisphere0() method
|
||||||
=========================
|
|
||||||
Creates a hollow hemisphere. Hemispheres can be either north or south.
|
Creates a hollow hemisphere. Hemispheres can be either north or south.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* block - the block the hemisphere will be made of.
|
* block - the block the hemisphere will be made of.
|
||||||
* radius - the radius of the hemisphere
|
* radius - the radius of the hemisphere
|
||||||
* northSouth - whether the hemisphere is 'north' or 'south'
|
* northSouth - whether the hemisphere is 'north' or 'south'
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a glass 'north' hemisphere with a radius of 20 blocks...
|
To create a glass 'north' hemisphere with a radius of 20 blocks...
|
||||||
|
|
||||||
hemisphere0(blocks.glass, 20, 'north');
|
hemisphere0(blocks.glass, 20, 'north');
|
||||||
|
|
||||||
![hemisphere example](img/hemisphereex2.png)
|
![hemisphere example](img/hemisphereex2.png)
|
||||||
|
|
||||||
Drone.rainbow() method
|
## Drone.rainbow() method
|
||||||
======================
|
|
||||||
Creates a Rainbow.
|
Creates a Rainbow.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* radius (optional - default:18) - The radius of the rainbow
|
* radius (optional - default:18) - The radius of the rainbow
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
|
|
||||||
var d = new Drone();
|
var d = new Drone();
|
||||||
d.rainbow(30);
|
d.rainbow(30);
|
||||||
|
|
||||||
![rainbow example](img/rainbowex1.png)
|
![rainbow example](img/rainbowex1.png)
|
||||||
|
|
||||||
Drone.spiral_stairs() method
|
## Drone.spiral_stairs() method
|
||||||
============================
|
|
||||||
Constructs a spiral staircase with slabs at each corner.
|
Constructs a spiral staircase with slabs at each corner.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* stairBlock - The block to use for stairs, should be one of the following...
|
* stairBlock - The block to use for stairs, should be one of the following...
|
||||||
- 'oak'
|
- 'oak'
|
||||||
|
@ -1671,8 +1668,8 @@ Parameters
|
||||||
|
|
||||||
![Spiral Staircase](img/spiralstair1.png)
|
![Spiral Staircase](img/spiralstair1.png)
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To construct a spiral staircase 5 floors high made of oak...
|
To construct a spiral staircase 5 floors high made of oak...
|
||||||
|
|
||||||
spiral_stairs('oak', 5);
|
spiral_stairs('oak', 5);
|
||||||
|
@ -1751,8 +1748,8 @@ Aliases can be used at the in-game prompt by players or in the server
|
||||||
console. Aliases will not be able to avail of command autocompletion
|
console. Aliases will not be able to avail of command autocompletion
|
||||||
(pressing the TAB key will have no effect).
|
(pressing the TAB key will have no effect).
|
||||||
|
|
||||||
Classroom Module
|
## Classroom Module
|
||||||
================
|
|
||||||
The `classroom` object contains a couple of utility functions for use
|
The `classroom` object contains a couple of utility functions for use
|
||||||
in a classroom setting. The goal of these functions is to make it
|
in a classroom setting. The goal of these functions is to make it
|
||||||
easier for tutors to facilitate ScriptCraft for use by students in a
|
easier for tutors to facilitate ScriptCraft for use by students in a
|
||||||
|
@ -1767,19 +1764,18 @@ The goal of this module is not so much to enforce restrictions
|
||||||
(security or otherwise) but to make it easier for tutors to setup a shared server
|
(security or otherwise) but to make it easier for tutors to setup a shared server
|
||||||
so students can learn Javascript.
|
so students can learn Javascript.
|
||||||
|
|
||||||
classroom.allowScripting() function
|
### classroom.allowScripting() function
|
||||||
===================================
|
|
||||||
Allow or disallow anyone who connects to the server (or is already
|
Allow or disallow anyone who connects to the server (or is already
|
||||||
connected) to use ScriptCraft. This function is preferable to granting 'ops' privileges
|
connected) to use ScriptCraft. This function is preferable to granting 'ops' privileges
|
||||||
to every student in a Minecraft classroom environment.
|
to every student in a Minecraft classroom environment.
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* canScript : true or false
|
* canScript : true or false
|
||||||
|
|
||||||
Example
|
#### Example
|
||||||
-------
|
|
||||||
To allow all players (and any players who connect to the server) to
|
To allow all players (and any players who connect to the server) to
|
||||||
use the `js` and `jsp` commands...
|
use the `js` and `jsp` commands...
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
events Module
|
## events Module
|
||||||
=============
|
|
||||||
The Events module provides a thin wrapper around Bukkit's
|
The Events module provides a thin wrapper around Bukkit's
|
||||||
Event-handling API. Bukkit's Events API makes use of Java Annotations
|
Event-handling API. Bukkit's Events API makes use of Java Annotations
|
||||||
which are not available in Javascript, so this module provides a
|
which are not available in Javascript, so this module provides a
|
||||||
simple way to listen to minecraft events in javascript.
|
simple way to listen to minecraft events in javascript.
|
||||||
|
|
||||||
events.on() static method
|
### events.on() static method
|
||||||
=========================
|
|
||||||
This method is used to register event listeners.
|
This method is used to register event listeners.
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* eventName - A string or java class. If a string is supplied it must
|
* eventName - A string or java class. If a string is supplied it must
|
||||||
be part of the Bukkit event class name. See [Bukkit API][buk] for
|
be part of the Bukkit event class name. See [Bukkit API][buk] for
|
||||||
|
@ -35,54 +35,45 @@ Parameters
|
||||||
"NORMAL", "MONITOR". For an explanation of what the different
|
"NORMAL", "MONITOR". For an explanation of what the different
|
||||||
priorities mean refer to bukkit's [Event API Reference][buk2].
|
priorities mean refer to bukkit's [Event API Reference][buk2].
|
||||||
|
|
||||||
Returns
|
#### Returns
|
||||||
-------
|
|
||||||
An org.bukkit.plugin.RegisteredListener object which can be used to
|
An org.bukkit.plugin.RegisteredListener object which can be used to
|
||||||
unregister the listener. This same object is passed to the callback
|
unregister the listener. This same object is passed to the callback
|
||||||
function each time the event is fired.
|
function each time the event is fired.
|
||||||
|
|
||||||
Example:
|
#### Example:
|
||||||
------
|
|
||||||
The following code will print a message on screen every time a block is broken in the game
|
The following code will print a message on screen every time a block is broken in the game
|
||||||
|
|
||||||
var events = require('./events/events');
|
events.on('block.BlockBreakEvent', function(listener, evt){
|
||||||
|
evt.player.sendMessage( evt.player.name + ' broke a block!');
|
||||||
events.on("block.BlockBreakEvent", function(listener, evt){
|
|
||||||
echo (evt.player.name + " broke a block!");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
To handle an event only once and unregister from further events...
|
To handle an event only once and unregister from further events...
|
||||||
|
|
||||||
var events = require('./events/events');
|
events.on('block.BlockBreakEvent', function(listener, evt){
|
||||||
|
evt.player.sendMessage( evt.player.name + ' broke a block!');
|
||||||
events.on("block.BlockBreakEvent", function(listener, evt){
|
|
||||||
print (evt.player.name + " broke a block!");
|
|
||||||
evt.handlers.unregister(listener);
|
evt.handlers.unregister(listener);
|
||||||
});
|
});
|
||||||
|
|
||||||
To unregister a listener *outside* of the listener function...
|
To unregister a listener *outside* of the listener function...
|
||||||
|
|
||||||
var events = require('./events/events');
|
var myBlockBreakListener = events.on('block.BlockBreakEvent',function(l,e){ ... });
|
||||||
|
|
||||||
var myBlockBreakListener = events.on("block.BlockBreakEvent",function(l,e){ ... });
|
|
||||||
...
|
...
|
||||||
var handlers = org.bukkit.event.block.BlockBreakEvent.getHandlerList();
|
var handlers = org.bukkit.event.block.BlockBreakEvent.getHandlerList();
|
||||||
handlers.unregister(myBlockBreakListener);
|
handlers.unregister(myBlockBreakListener);
|
||||||
|
|
||||||
|
To listen for events using a full class name as the `eventName` parameter...
|
||||||
|
|
||||||
|
events.on(org.bukkit.event.block.BlockBreakEvent, function(listener, evt){
|
||||||
|
evt.player.sendMessage( evt.player.name + ' broke a block!');
|
||||||
|
});
|
||||||
|
|
||||||
[buk2]: http://wiki.bukkit.org/Event_API_Reference
|
[buk2]: http://wiki.bukkit.org/Event_API_Reference
|
||||||
[buk]: http://jd.bukkit.org/dev/apidocs/index.html?org/bukkit/event/Event.html
|
[buk]: http://jd.bukkit.org/dev/apidocs/index.html?org/bukkit/event/Event.html
|
||||||
|
|
||||||
***/
|
***/
|
||||||
|
|
||||||
//
|
|
||||||
// handle events in Minecraft
|
|
||||||
// --------------------------
|
|
||||||
// eventType can be a string (assumed to be a sub package of org.bukkit.event - e.g.
|
|
||||||
// if the string "block.BlockBreakEvent" is supplied then it's converted to the
|
|
||||||
// org.bukkit.event.block.BlockBreakEvent class . For custom event classes, just
|
|
||||||
// supply the custom event class e.g.
|
|
||||||
// events.on(net.yourdomain.events.YourCustomEvent,function(l,e){ ... });
|
|
||||||
//
|
|
||||||
var bkEvent = org.bukkit.event;
|
var bkEvent = org.bukkit.event;
|
||||||
var bkEvtExecutor = org.bukkit.plugin.EventExecutor;
|
var bkEvtExecutor = org.bukkit.plugin.EventExecutor;
|
||||||
var bkRegListener = org.bukkit.plugin.RegisteredListener;
|
var bkRegListener = org.bukkit.plugin.RegisteredListener;
|
||||||
|
|
|
@ -139,32 +139,6 @@ exports.autoload = function(dir) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
/*
|
|
||||||
sort so that .js files with same name as parent directory appear before
|
|
||||||
other files in the same directory
|
|
||||||
*/
|
|
||||||
var sortByModule = function(a,b){
|
|
||||||
a = _canonize(a);
|
|
||||||
b = _canonize(b);
|
|
||||||
var aparts = (""+a).split(/\//);
|
|
||||||
var bparts = (""+b).split(/\//);
|
|
||||||
//var adir = aparts[aparts.length-2];
|
|
||||||
var adir = aparts.slice(0,aparts.length-1).join("/");
|
|
||||||
var afile = aparts[aparts.length-1];
|
|
||||||
//var bdir = bparts[bparts.length-2];
|
|
||||||
var bdir = bparts.slice(0,bparts.length-1).join("/");
|
|
||||||
var bfile = bparts[bparts.length-1];
|
|
||||||
|
|
||||||
if(adir<bdir) return -1;
|
|
||||||
if(adir>bdir) return 1;
|
|
||||||
|
|
||||||
afile = afile.match(/[a-zA-Z0-9\-_]+/)[0];
|
|
||||||
|
|
||||||
if (adir.match(new RegExp(afile + "$")))
|
|
||||||
return -1;
|
|
||||||
else
|
|
||||||
return 1;
|
|
||||||
};
|
|
||||||
/*
|
/*
|
||||||
Reload all of the .js files in the given directory
|
Reload all of the .js files in the given directory
|
||||||
*/
|
*/
|
||||||
|
@ -174,18 +148,6 @@ exports.autoload = function(dir) {
|
||||||
var sourceFiles = [];
|
var sourceFiles = [];
|
||||||
_listSourceFiles(sourceFiles,pluginDir);
|
_listSourceFiles(sourceFiles,pluginDir);
|
||||||
|
|
||||||
//sourceFiles.sort(sortByModule);
|
|
||||||
|
|
||||||
//
|
|
||||||
// script files whose name begins with _ (underscore)
|
|
||||||
// will not be loaded automatically at startup.
|
|
||||||
// These files are assumed to be dependencies/private to plugins
|
|
||||||
//
|
|
||||||
// E.g. If you have a plugin called myMiniGame.js in the myMiniGame directory
|
|
||||||
// and which in addition to myMiniGame.js also includes _myMiniGame_currency.js _myMiniGame_events.js etc.
|
|
||||||
// then it's assumed that _myMiniGame_currency.js and _myMiniGame_events.js will be loaded
|
|
||||||
// as dependencies by myMiniGame.js and do not need to be loaded via js reload
|
|
||||||
//
|
|
||||||
var len = sourceFiles.length;
|
var len = sourceFiles.length;
|
||||||
if (config.verbose)
|
if (config.verbose)
|
||||||
logger.info(len + " scriptcraft plugins found.");
|
logger.info(len + " scriptcraft plugins found.");
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
## Require - Node.js-style module loading in ScriptCraft
|
## require - Node.js-style module loading in ScriptCraft
|
||||||
|
|
||||||
Node.js is a server-side javascript environment with an excellent
|
Node.js is a server-side javascript environment with an excellent
|
||||||
module loading system based on CommonJS. Modules in Node.js are really
|
module loading system based on CommonJS. Modules in Node.js are really
|
||||||
|
@ -41,12 +41,12 @@ and modules themeselves can use other modules. Modules have full
|
||||||
control over what functions and properties they want to provide to
|
control over what functions and properties they want to provide to
|
||||||
others.
|
others.
|
||||||
|
|
||||||
## Important
|
### Important
|
||||||
|
|
||||||
Although ScriptCraft now supports Node.js style modules, it does not
|
Although ScriptCraft now supports Node.js style modules, it does not
|
||||||
support node modules. Node.js and Rhino are two very different
|
support node modules. Node.js and Rhino are two very different
|
||||||
Javascript environments. ScriptCraft uses Rhino Javascript, not
|
Javascript environments. ScriptCraft uses Rhino Javascript, not
|
||||||
Node.js.
|
Node.js. Standard Node.js modules such as `'fs'` are not available in ScriptCraft.
|
||||||
|
|
||||||
Modules can be loaded using relative or absolute paths. Per the CommonJS
|
Modules can be loaded using relative or absolute paths. Per the CommonJS
|
||||||
module specification, the '.js' suffix is optional.
|
module specification, the '.js' suffix is optional.
|
||||||
|
@ -100,7 +100,9 @@ module specification, the '.js' suffix is optional.
|
||||||
|
|
||||||
var resolveModuleToFile = function(moduleName, parentDir) {
|
var resolveModuleToFile = function(moduleName, parentDir) {
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
## When resolving module names to file paths, ScriptCraft uses the following rules...
|
### module name resolution
|
||||||
|
|
||||||
|
When resolving module names to file paths, ScriptCraft uses the following rules...
|
||||||
|
|
||||||
1. if the module does not begin with './' or '/' then ...
|
1. if the module does not begin with './' or '/' then ...
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
var global = this;
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
# ScriptCraft API Reference
|
# ScriptCraft API Reference
|
||||||
|
|
||||||
|
@ -116,26 +117,35 @@ provided. The `lib` directory is for internal use by ScriptCraft.
|
||||||
Modules in this directory are not automatically loaded nor are they
|
Modules in this directory are not automatically loaded nor are they
|
||||||
globally exported.
|
globally exported.
|
||||||
|
|
||||||
### Directories
|
### plugins sub-directories
|
||||||
|
|
||||||
As of December 24 2013, the `scriptcraft/plugins` directory has the following sub-directories...
|
As of December 24 2013, the `scriptcraft/plugins` directory has the following sub-directories...
|
||||||
|
|
||||||
* drone - Contains the drone module and drone extensions. Drone was the first scriptcraft module.
|
* drone - Contains the drone module and drone extensions. Drone was the first scriptcraft module.
|
||||||
* mini-games - Contains mini-games
|
* mini-games - Contains mini-games
|
||||||
* arrows - The arrows module
|
* arrows - The arrows module - Changes the behaviour of Arrows: Explosive, Fireworks, Teleportation etc.
|
||||||
* signs - The signs module (includes example signs)
|
* signs - The signs module (includes example signs) - create interactive signs.
|
||||||
* chat - The chat plugin/module
|
* chat - The chat plugin/module
|
||||||
* alias - The alias plugin/module
|
* alias - The alias plugin/module - for creating custom aliases for commonly used commands.
|
||||||
* home - The home module - for setting homes and visiting other homes.
|
* home - The home module - for setting homes and visiting other homes.
|
||||||
|
|
||||||
## Core Module: functions
|
## Global functions
|
||||||
|
|
||||||
|
ScripCraft provides some global functions which can be used by all plugins/modules...
|
||||||
|
|
||||||
|
### echo function
|
||||||
|
|
||||||
|
The `echo()` function displays a message on the in-game screen. The message is displayed to the `self` player (this is usually the player who issued the `/js` or `/jsp` command).
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
/js echo('Hello World')
|
||||||
|
|
||||||
ScripCraft provides some functions which can be used by all plugins/modules...
|
|
||||||
|
|
||||||
* echo (message) - Displays a message on the screen.
|
* echo (message) - Displays a message on the screen.
|
||||||
For example: `/js echo('Hello World')` will print Hello World on the in-game chat window.
|
For example: `/js echo('Hello World')` will print Hello World on the in-game chat window.
|
||||||
For programmers familiar with Javascript web programming, an `alert` function is also provided.
|
For programmers familiar with Javascript web programming, an `alert` function is also provided.
|
||||||
`alert` works exactly the same as `echo` e.g. `alert('Hello World')`
|
`alert` works exactly the same as `echo` e.g. `alert('Hello World')`.
|
||||||
|
|
||||||
* require (modulename) - Will load modules. See [Node.js modules][njsmod]
|
* require (modulename) - Will load modules. See [Node.js modules][njsmod]
|
||||||
|
|
||||||
|
@ -184,7 +194,7 @@ load() should only be used to load .json data.
|
||||||
* filename - The name of the file to load.
|
* filename - The name of the file to load.
|
||||||
* warnOnFileNotFound (optional - default: false) - warn if the file was not found.
|
* warnOnFileNotFound (optional - default: false) - warn if the file was not found.
|
||||||
|
|
||||||
#### Return
|
#### Returns
|
||||||
|
|
||||||
load() will return the result of the last statement evaluated in the file.
|
load() will return the result of the last statement evaluated in the file.
|
||||||
|
|
||||||
|
@ -284,40 +294,13 @@ plugin author) safely expose javascript functions for use by players.
|
||||||
|
|
||||||
See chat/colors.js or alias/alias.js or homes/homes.js for examples of how to use the `command()` function.
|
See chat/colors.js or alias/alias.js or homes/homes.js for examples of how to use the `command()` function.
|
||||||
|
|
||||||
### ready() function
|
|
||||||
|
|
||||||
The `ready()` function provides a way for plugins to do additional
|
|
||||||
setup once all of the other plugins/modules have loaded. For example,
|
|
||||||
event listener registration can only be done after the
|
|
||||||
events/events.js module has loaded. A plugin author could load the
|
|
||||||
file explicilty like this...
|
|
||||||
|
|
||||||
load(__folder + "../events/events.js");
|
|
||||||
|
|
||||||
// event listener registration goes here
|
|
||||||
|
|
||||||
... or better still, just do event regristration using the `ready()`
|
|
||||||
handler knowing that by the time the `ready()` callback is invoked,
|
|
||||||
all of the scriptcraft modules have been loaded...
|
|
||||||
|
|
||||||
ready(function(){
|
|
||||||
// event listener registration goes here
|
|
||||||
// code that depends on other plugins/modules also goes here
|
|
||||||
});
|
|
||||||
|
|
||||||
The execution of the function object passed to the `ready()` function
|
|
||||||
is *deferred* until all of the plugins/modules have loaded. That way
|
|
||||||
you are guaranteed that when the function is invoked, all of the
|
|
||||||
plugins/modules have been loaded and evaluated and are ready to use.
|
|
||||||
|
|
||||||
***/
|
***/
|
||||||
|
|
||||||
var global = this;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Core Module - Special Variables
|
## global variables
|
||||||
===============================
|
|
||||||
There are a couple of special javascript variables available in ScriptCraft...
|
There are a couple of special javascript variables available in ScriptCraft...
|
||||||
|
|
||||||
* __folder - The current working directory - this variable is only to be used within the main body of a .js file.
|
* __folder - The current working directory - this variable is only to be used within the main body of a .js file.
|
||||||
|
@ -545,13 +528,7 @@ See [issue #69][issue69] for more information.
|
||||||
*/
|
*/
|
||||||
var modulePaths = [jsPluginsRootDirName + '/lib/',
|
var modulePaths = [jsPluginsRootDirName + '/lib/',
|
||||||
jsPluginsRootDirName + '/modules/'];
|
jsPluginsRootDirName + '/modules/'];
|
||||||
global.require = fnRequire(__plugin.logger,
|
global.require = fnRequire(__plugin.logger, __engine, config.verbose, jsPluginsRootDirName, modulePaths);
|
||||||
__engine,
|
|
||||||
config.verbose,
|
|
||||||
jsPluginsRootDirName,
|
|
||||||
modulePaths);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var plugins = require('plugin');
|
var plugins = require('plugin');
|
||||||
global._onTabComplete = require('tabcomplete');
|
global._onTabComplete = require('tabcomplete');
|
||||||
|
@ -573,8 +550,6 @@ See [issue #69][issue69] for more information.
|
||||||
global.events = events;
|
global.events = events;
|
||||||
|
|
||||||
plugins.autoload(jsPluginsRootDir);
|
plugins.autoload(jsPluginsRootDir);
|
||||||
|
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Blocks Module
|
## Blocks Module
|
||||||
=============
|
|
||||||
You hate having to lookup [Data Values][dv] when you use ScriptCraft's Drone() functions. So do I.
|
|
||||||
So I created this blocks object which is a helper object for use in construction.
|
|
||||||
|
|
||||||
Examples
|
You hate having to lookup [Data Values][dv] when you use ScriptCraft's
|
||||||
--------
|
Drone() functions. So do I. So I created this blocks object which is
|
||||||
|
a helper object for use in construction.
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
box( blocks.oak ); // creates a single oak wood block
|
box( blocks.oak ); // creates a single oak wood block
|
||||||
box( blocks.sand, 3, 2, 1 ); // creates a block of sand 3 wide x 2 high x 1 long
|
box( blocks.sand, 3, 2, 1 ); // creates a block of sand 3 wide x 2 high x 1 long
|
||||||
box( blocks.wool.green, 2 ); // creates a block of green wool 2 blocks wide
|
box( blocks.wool.green, 2 ); // creates a block of green wool 2 blocks wide
|
||||||
|
|
||||||
Color aliased properties that were a direct descendant of the blocks object are no longer used to avoid confusion with carpet and stained clay blocks. In addition, there's a convenience array `blocks.rainbow` which is an array of the 7 colors of the rainbow (or closest approximations).
|
Color aliased properties that were a direct descendant of the blocks
|
||||||
|
object are no longer used to avoid confusion with carpet and stained
|
||||||
|
clay blocks. In addition, there's a convenience array `blocks.rainbow`
|
||||||
|
which is an array of the 7 colors of the rainbow (or closest
|
||||||
|
approximations).
|
||||||
|
|
||||||
|
The blocks module is globally exported by the Drone module.
|
||||||
|
|
||||||
***/
|
***/
|
||||||
var blocks = {
|
var blocks = {
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Fireworks Module
|
## Fireworks Module
|
||||||
================
|
|
||||||
The fireworks module makes it easy to create fireworks using
|
The fireworks module makes it easy to create fireworks using
|
||||||
ScriptCraft. The module has a single function `firework` which takes
|
ScriptCraft. The module has a single function `firework` which takes
|
||||||
a `org.bukkit.Location` as its 1 and only parameter.
|
a `org.bukkit.Location` as its 1 and only parameter.
|
||||||
|
|
||||||
Examples
|
### Examples
|
||||||
--------
|
|
||||||
The module also extends the `Drone` object adding a `firework` method
|
The module also extends the `Drone` object adding a `firework` method
|
||||||
so that fireworks can be created as a part of a Drone chain. For
|
so that fireworks can be created as a part of a Drone chain. For
|
||||||
Example....
|
Example....
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
http.request() function
|
## http.request() function
|
||||||
====================
|
|
||||||
The http.request() function will fetch a web address asynchronously (on a
|
The http.request() function will fetch a web address asynchronously (on a
|
||||||
separate thread)and pass the URL's response to a callback function
|
separate thread)and pass the URL's response to a callback function
|
||||||
which will be executed synchronously (on the main thread). In this
|
which will be executed synchronously (on the main thread). In this
|
||||||
way, http.request() can be used to fetch web content without blocking the
|
way, http.request() can be used to fetch web content without blocking the
|
||||||
main thread of execution.
|
main thread of execution.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* request: The request details either a plain URL e.g. "http://scriptcraft.js/sample.json" or an object with the following properties...
|
* request: The request details either a plain URL e.g. "http://scriptcraft.js/sample.json" or an object with the following properties...
|
||||||
|
|
||||||
|
@ -20,8 +19,8 @@ Parameters
|
||||||
- responseCode: The numeric response code from the server. If the server did not respond with 200 OK then the response parameter will be undefined.
|
- responseCode: The numeric response code from the server. If the server did not respond with 200 OK then the response parameter will be undefined.
|
||||||
- response: A string (if the response is of type text) or object containing the HTTP response body.
|
- response: A string (if the response is of type text) or object containing the HTTP response body.
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
The following example illustrates how to use http.request to make a request to a JSON web service and evaluate its response...
|
The following example illustrates how to use http.request to make a request to a JSON web service and evaluate its response...
|
||||||
|
|
||||||
var jsResponse;
|
var jsResponse;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Utilities Module
|
## Utilities Module
|
||||||
================
|
|
||||||
Miscellaneous utility functions and classes to help with programming.
|
Miscellaneous utility functions and classes to help with programming.
|
||||||
|
|
||||||
* locationToString(Location) - returns a bukkit Location object in string form.
|
* locationToString(Location) - returns a bukkit Location object in string form.
|
||||||
|
@ -56,8 +56,8 @@ exports.getMousePos = function (player) {
|
||||||
return targetedBlock.location;
|
return targetedBlock.location;
|
||||||
};
|
};
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
foreach() function
|
### foreach() function
|
||||||
========================
|
|
||||||
The utils.foreach() function is a utility function for iterating over
|
The utils.foreach() function is a utility function for iterating over
|
||||||
an array of objects (or a java.util.Collection of objects) and processing each object in turn. Where
|
an array of objects (or a java.util.Collection of objects) and processing each object in turn. Where
|
||||||
utils.foreach() differs from other similar functions found in
|
utils.foreach() differs from other similar functions found in
|
||||||
|
@ -70,8 +70,7 @@ package for scheduling processing of arrays.
|
||||||
|
|
||||||
[sched]: http://jd.bukkit.org/beta/apidocs/org/bukkit/scheduler/package-summary.html
|
[sched]: http://jd.bukkit.org/beta/apidocs/org/bukkit/scheduler/package-summary.html
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* array : The array to be processed - It can be a javascript array, a java array or java.util.Collection
|
* array : The array to be processed - It can be a javascript array, a java array or java.util.Collection
|
||||||
* callback : The function to be called to process each item in the
|
* callback : The function to be called to process each item in the
|
||||||
|
@ -100,11 +99,11 @@ subsequent items are processed later). If your code relies on the
|
||||||
completion of the array processing, then provide an `onDone` parameter
|
completion of the array processing, then provide an `onDone` parameter
|
||||||
and put the code there.
|
and put the code there.
|
||||||
|
|
||||||
Example
|
#### Example
|
||||||
-------
|
|
||||||
The following example illustrates how to use foreach for immediate processing of an array...
|
The following example illustrates how to use foreach for immediate processing of an array...
|
||||||
|
|
||||||
var utils = require('./utils/_utils');
|
var utils = require('utils');
|
||||||
var players = ["moe", "larry", "curly"];
|
var players = ["moe", "larry", "curly"];
|
||||||
utils.foreach (players, function(item){
|
utils.foreach (players, function(item){
|
||||||
server.getPlayer(item).sendMessage("Hi " + item);
|
server.getPlayer(item).sendMessage("Hi " + item);
|
||||||
|
@ -124,7 +123,7 @@ without hogging CPU usage...
|
||||||
|
|
||||||
// build a structure 200 wide x 200 tall x 200 long
|
// build a structure 200 wide x 200 tall x 200 long
|
||||||
// (That's 8 Million Blocks - enough to tax any machine!)
|
// (That's 8 Million Blocks - enough to tax any machine!)
|
||||||
var utils = require('./utils/_utils');
|
var utils = require('utils');
|
||||||
|
|
||||||
var a = [];
|
var a = [];
|
||||||
a.length = 200;
|
a.length = 200;
|
||||||
|
@ -159,8 +158,8 @@ var _foreach = function(array, callback, object, delay, onCompletion) {
|
||||||
};
|
};
|
||||||
exports.foreach = _foreach;
|
exports.foreach = _foreach;
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
utils.nicely() function
|
### utils.nicely() function
|
||||||
=======================
|
|
||||||
The utils.nicely() function is for performing processing using the
|
The utils.nicely() function is for performing processing using the
|
||||||
[org.bukkit.scheduler][sched] package/API. utils.nicely() lets you
|
[org.bukkit.scheduler][sched] package/API. utils.nicely() lets you
|
||||||
process with a specified delay between the completion of each `next()`
|
process with a specified delay between the completion of each `next()`
|
||||||
|
@ -168,8 +167,7 @@ function and the start of the next `next()` function.
|
||||||
`utils.nicely()` is a recursive function - that is - it calls itself
|
`utils.nicely()` is a recursive function - that is - it calls itself
|
||||||
(schedules itself actually) repeatedly until `hasNext` returns false.
|
(schedules itself actually) repeatedly until `hasNext` returns false.
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* next : A function which will be called if processing is to be done.
|
* next : A function which will be called if processing is to be done.
|
||||||
* hasNext : A function which is called to determine if the `next`
|
* hasNext : A function which is called to determine if the `next`
|
||||||
|
@ -179,8 +177,8 @@ Parameters
|
||||||
* onDone : A function which is to be called when all processing is complete (hasNext returned false).
|
* onDone : A function which is to be called when all processing is complete (hasNext returned false).
|
||||||
* delay : The delay (in server ticks - 20 per second) between each call.
|
* delay : The delay (in server ticks - 20 per second) between each call.
|
||||||
|
|
||||||
Example
|
#### Example
|
||||||
-------
|
|
||||||
See the source code to utils.foreach for an example of how utils.nicely is used.
|
See the source code to utils.foreach for an example of how utils.nicely is used.
|
||||||
|
|
||||||
***/
|
***/
|
||||||
|
@ -196,25 +194,23 @@ exports.nicely = function(next, hasNext, onDone, delay){
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
utils.at() function
|
### utils.at() function
|
||||||
===================
|
|
||||||
The utils.at() function will perform a given task at a given time every
|
The utils.at() function will perform a given task at a given time every
|
||||||
(minecraft) day.
|
(minecraft) day.
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* time24hr : The time in 24hr form - e.g. 9:30 in the morning is "09:30" while
|
* time24hr : The time in 24hr form - e.g. 9:30 in the morning is "09:30" while
|
||||||
9:30 pm is "21:30", midnight is "00:00" and midday is "12:00"
|
9:30 pm is "21:30", midnight is "00:00" and midday is "12:00"
|
||||||
* callback : A javascript function which will be invoked at the given time.
|
* callback : A javascript function which will be invoked at the given time.
|
||||||
* world : (optional) Each world has its own clock. If no world is specified, the server's first world is used.
|
* world : (optional) Each world has its own clock. If no world is specified, the server's first world is used.
|
||||||
|
|
||||||
Example
|
#### Example
|
||||||
-------
|
|
||||||
|
|
||||||
To warn players when night is approaching...
|
To warn players when night is approaching...
|
||||||
|
|
||||||
var utils = require('./utils/_utils');
|
var utils = require('utils');
|
||||||
|
|
||||||
utils.at( "19:00", function() {
|
utils.at( "19:00", function() {
|
||||||
|
|
||||||
|
@ -246,6 +242,27 @@ exports.at = function(time24hr, callback, world) {
|
||||||
},forever, null, 100);
|
},forever, null, 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
### utils.find() function
|
||||||
|
|
||||||
|
The utils.find() function will return a list of all files starting at
|
||||||
|
a given directory and recursiving trawling all sub-directories.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
* dir : The starting path. Must be a string.
|
||||||
|
* filter : (optional) A [FilenameFilter][fnfltr] object to return only files matching a given pattern.
|
||||||
|
|
||||||
|
[fnfltr]: http://docs.oracle.com/javase/6/docs/api/java/io/FilenameFilter.html
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
|
||||||
|
var utils = require('utils');
|
||||||
|
var jsFiles = utils.find('./', function(dir,name){
|
||||||
|
return name.match(/\.js$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
***/
|
||||||
exports.find = function( dir , filter){
|
exports.find = function( dir , filter){
|
||||||
var result = [];
|
var result = [];
|
||||||
var recurse = function(dir, store){
|
var recurse = function(dir, store){
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
var utils = require('utils');
|
var utils = require('utils');
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Classroom Module
|
## Classroom Module
|
||||||
================
|
|
||||||
The `classroom` object contains a couple of utility functions for use
|
The `classroom` object contains a couple of utility functions for use
|
||||||
in a classroom setting. The goal of these functions is to make it
|
in a classroom setting. The goal of these functions is to make it
|
||||||
easier for tutors to facilitate ScriptCraft for use by students in a
|
easier for tutors to facilitate ScriptCraft for use by students in a
|
||||||
|
@ -17,19 +17,18 @@ The goal of this module is not so much to enforce restrictions
|
||||||
(security or otherwise) but to make it easier for tutors to setup a shared server
|
(security or otherwise) but to make it easier for tutors to setup a shared server
|
||||||
so students can learn Javascript.
|
so students can learn Javascript.
|
||||||
|
|
||||||
classroom.allowScripting() function
|
### classroom.allowScripting() function
|
||||||
===================================
|
|
||||||
Allow or disallow anyone who connects to the server (or is already
|
Allow or disallow anyone who connects to the server (or is already
|
||||||
connected) to use ScriptCraft. This function is preferable to granting 'ops' privileges
|
connected) to use ScriptCraft. This function is preferable to granting 'ops' privileges
|
||||||
to every student in a Minecraft classroom environment.
|
to every student in a Minecraft classroom environment.
|
||||||
|
|
||||||
Parameters
|
#### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* canScript : true or false
|
* canScript : true or false
|
||||||
|
|
||||||
Example
|
#### Example
|
||||||
-------
|
|
||||||
To allow all players (and any players who connect to the server) to
|
To allow all players (and any players who connect to the server) to
|
||||||
use the `js` and `jsp` commands...
|
use the `js` and `jsp` commands...
|
||||||
|
|
||||||
|
@ -77,5 +76,5 @@ events.on('player.PlayerLoginEvent', function(listener, event) {
|
||||||
if (_store.enableScripting){
|
if (_store.enableScripting){
|
||||||
player.addAttachment(__plugin, "scriptcraft.*", true);
|
player.addAttachment(__plugin, "scriptcraft.*", true);
|
||||||
}
|
}
|
||||||
}, "HIGHEST");
|
}, 'HIGHEST');
|
||||||
|
|
||||||
|
|
|
@ -2,19 +2,18 @@ var Drone = require('./drone').Drone;
|
||||||
var blocks = require('blocks');
|
var blocks = require('blocks');
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Drone.blocktype() method
|
## Drone.blocktype() method
|
||||||
========================
|
|
||||||
Creates the text out of blocks. Useful for large-scale in-game signs.
|
Creates the text out of blocks. Useful for large-scale in-game signs.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* message - The message to create - (use `\n` for newlines)
|
* message - The message to create - (use `\n` for newlines)
|
||||||
* foregroundBlock (default: black wool) - The block to use for the foreground
|
* foregroundBlock (default: black wool) - The block to use for the foreground
|
||||||
* backgroundBlock (default: none) - The block to use for the background
|
* backgroundBlock (default: none) - The block to use for the background
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a 2-line high message using glowstone...
|
To create a 2-line high message using glowstone...
|
||||||
|
|
||||||
blocktype("Hello\nWorld",blocks.glowstone);
|
blocktype("Hello\nWorld",blocks.glowstone);
|
||||||
|
|
|
@ -2,17 +2,15 @@ var Drone = require('../drone').Drone;
|
||||||
var blocks = require('blocks');
|
var blocks = require('blocks');
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Drone.rainbow() method
|
## Drone.rainbow() method
|
||||||
======================
|
|
||||||
Creates a Rainbow.
|
Creates a Rainbow.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* radius (optional - default:18) - The radius of the rainbow
|
* radius (optional - default:18) - The radius of the rainbow
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
|
|
||||||
var d = new Drone();
|
var d = new Drone();
|
||||||
d.rainbow(30);
|
d.rainbow(30);
|
||||||
|
|
|
@ -2,12 +2,11 @@ var Drone = require('../drone').Drone;
|
||||||
var blocks = require('blocks');
|
var blocks = require('blocks');
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Drone.spiral_stairs() method
|
## Drone.spiral_stairs() method
|
||||||
============================
|
|
||||||
Constructs a spiral staircase with slabs at each corner.
|
Constructs a spiral staircase with slabs at each corner.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* stairBlock - The block to use for stairs, should be one of the following...
|
* stairBlock - The block to use for stairs, should be one of the following...
|
||||||
- 'oak'
|
- 'oak'
|
||||||
|
@ -24,8 +23,8 @@ Parameters
|
||||||
|
|
||||||
![Spiral Staircase](img/spiralstair1.png)
|
![Spiral Staircase](img/spiralstair1.png)
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To construct a spiral staircase 5 floors high made of oak...
|
To construct a spiral staircase 5 floors high made of oak...
|
||||||
|
|
||||||
spiral_stairs('oak', 5);
|
spiral_stairs('oak', 5);
|
||||||
|
|
|
@ -1,18 +1,17 @@
|
||||||
var Drone = require('./drone').Drone;
|
var Drone = require('./drone').Drone;
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Drone.sphere() method
|
## Drone.sphere() method
|
||||||
=====================
|
|
||||||
Creates a sphere.
|
Creates a sphere.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* block - The block the sphere will be made of.
|
* block - The block the sphere will be made of.
|
||||||
* radius - The radius of the sphere.
|
* radius - The radius of the sphere.
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a sphere of Iron with a radius of 10 blocks...
|
To create a sphere of Iron with a radius of 10 blocks...
|
||||||
|
|
||||||
sphere( blocks.iron, 10);
|
sphere( blocks.iron, 10);
|
||||||
|
@ -68,18 +67,17 @@ Drone.extend('sphere', function(block,radius)
|
||||||
return this.move('sphere');
|
return this.move('sphere');
|
||||||
});
|
});
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Drone.sphere0() method
|
## Drone.sphere0() method
|
||||||
======================
|
|
||||||
Creates an empty sphere.
|
Creates an empty sphere.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* block - The block the sphere will be made of.
|
* block - The block the sphere will be made of.
|
||||||
* radius - The radius of the sphere.
|
* radius - The radius of the sphere.
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a sphere of Iron with a radius of 10 blocks...
|
To create a sphere of Iron with a radius of 10 blocks...
|
||||||
|
|
||||||
sphere0( blocks.iron, 10);
|
sphere0( blocks.iron, 10);
|
||||||
|
@ -168,19 +166,18 @@ Drone.extend('sphere0', function(block,radius)
|
||||||
|
|
||||||
});
|
});
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Drone.hemisphere() method
|
## Drone.hemisphere() method
|
||||||
=========================
|
|
||||||
Creates a hemisphere. Hemispheres can be either north or south.
|
Creates a hemisphere. Hemispheres can be either north or south.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* block - the block the hemisphere will be made of.
|
* block - the block the hemisphere will be made of.
|
||||||
* radius - the radius of the hemisphere
|
* radius - the radius of the hemisphere
|
||||||
* northSouth - whether the hemisphere is 'north' or 'south'
|
* northSouth - whether the hemisphere is 'north' or 'south'
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a wood 'north' hemisphere with a radius of 7 blocks...
|
To create a wood 'north' hemisphere with a radius of 7 blocks...
|
||||||
|
|
||||||
hemisphere(blocks.oak, 7, 'north');
|
hemisphere(blocks.oak, 7, 'north');
|
||||||
|
@ -239,19 +236,18 @@ Drone.extend('hemisphere', function(block,radius, northSouth){
|
||||||
|
|
||||||
});
|
});
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Drone.hemisphere0() method
|
## Drone.hemisphere0() method
|
||||||
=========================
|
|
||||||
Creates a hollow hemisphere. Hemispheres can be either north or south.
|
Creates a hollow hemisphere. Hemispheres can be either north or south.
|
||||||
|
|
||||||
Parameters
|
### Parameters
|
||||||
----------
|
|
||||||
|
|
||||||
* block - the block the hemisphere will be made of.
|
* block - the block the hemisphere will be made of.
|
||||||
* radius - the radius of the hemisphere
|
* radius - the radius of the hemisphere
|
||||||
* northSouth - whether the hemisphere is 'north' or 'south'
|
* northSouth - whether the hemisphere is 'north' or 'south'
|
||||||
|
|
||||||
Example
|
### Example
|
||||||
-------
|
|
||||||
To create a glass 'north' hemisphere with a radius of 20 blocks...
|
To create a glass 'north' hemisphere with a radius of 20 blocks...
|
||||||
|
|
||||||
hemisphere0(blocks.glass, 20, 'north');
|
hemisphere0(blocks.glass, 20, 'north');
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
var utils = require('utils');
|
var utils = require('utils');
|
||||||
|
/*
|
||||||
|
TODO: Document this plugin!
|
||||||
|
*/
|
||||||
var _store = {
|
var _store = {
|
||||||
houses: {},
|
houses: {},
|
||||||
openHouses: {},
|
openHouses: {},
|
||||||
|
|
Reference in a new issue