Added items to API docs, added recipes. added utils.players() and utils.playerNames() functions.
This commit is contained in:
parent
b091c33fbf
commit
70282e278d
10 changed files with 1624 additions and 1279 deletions
18
build.xml
18
build.xml
|
@ -53,9 +53,21 @@
|
||||||
<arg value="src/docs/js/generateApiDocs.js"/>
|
<arg value="src/docs/js/generateApiDocs.js"/>
|
||||||
<arg value="${dist}/js"/>
|
<arg value="${dist}/js"/>
|
||||||
</java>
|
</java>
|
||||||
|
<java classname="jscript" failonerror="true" fork="true" output="${dist}/items.md" error="${dist}/genitemserror.log">
|
||||||
|
<classpath>
|
||||||
|
<pathelement path="${build}"/>
|
||||||
|
<pathelement path="lib/canary.jar"/>
|
||||||
|
</classpath>
|
||||||
|
<arg value="src/docs/js/generateItemsDoc.js"/>
|
||||||
|
</java>
|
||||||
|
<concat destfile="${dist}/apiref-con.md">
|
||||||
|
<fileset file="${dist}/apiref.md" />
|
||||||
|
<fileset file="${dist}/items.md" />
|
||||||
|
</concat>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<target name="gen-events-helper-canary" depends="compile-docs,init">
|
<target name="gen-events-helper-canary" depends="compile-docs,init">
|
||||||
<mkdir dir="${dist}/js/lib"/>
|
<mkdir dir="${dist}/js/lib"/>
|
||||||
<java classname="jscript" failonerror="true" fork="true" output="${dist}/js/lib/events-helper.js" error="${dist}/geneventserror.log">
|
<java classname="jscript" failonerror="true" fork="true" output="${dist}/js/lib/events-helper.js" error="${dist}/geneventserror.log">
|
||||||
|
@ -99,7 +111,7 @@ Walter Higgins
|
||||||
|
|
||||||
</header>
|
</header>
|
||||||
<fileset file="${dist}/toc-apiref.md" />
|
<fileset file="${dist}/toc-apiref.md" />
|
||||||
<fileset file="${dist}/apiref.md" />
|
<fileset file="${dist}/apiref-con.md" />
|
||||||
</concat>
|
</concat>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
@ -109,7 +121,7 @@ Walter Higgins
|
||||||
<pathelement path="${build}"/>
|
<pathelement path="${build}"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
<arg value="src/docs/js/generateTOC.js"/>
|
<arg value="src/docs/js/generateTOC.js"/>
|
||||||
<arg value="${dist}/apiref.md"/>
|
<arg value="${dist}/apiref-con.md"/>
|
||||||
</java>
|
</java>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,135 +1,138 @@
|
||||||
/*
|
/*
|
||||||
This script is run at build time to generate api.md - a single Markdown document containing documentation for ScriptCraft's API
|
This script is run at build time to generate api.md - a single Markdown document containing documentation for ScriptCraft's API
|
||||||
*/
|
*/
|
||||||
|
function foreach(array, func){
|
||||||
|
for (var i =0; i < array.length; i++){
|
||||||
|
func(array[i],i,array);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
find - a (very) basic implementation of the unix command line tool.
|
||||||
|
*/
|
||||||
|
function find(dir,store,re) {
|
||||||
|
var files = dir.listFiles();
|
||||||
|
foreach (files, function(filename){
|
||||||
|
filename = "" + filename;
|
||||||
|
var file = new File(filename);
|
||||||
|
if (file.isDirectory()) {
|
||||||
|
find(file,store,re);
|
||||||
|
} else {
|
||||||
|
if (typeof re == "undefined")
|
||||||
|
store.push(filename);
|
||||||
|
else if (filename.match(re))
|
||||||
|
store.push(filename);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
the main module file for a given directory
|
||||||
|
(assuming the main module is in a file with the same name as the parent
|
||||||
|
directory) - e.g. drone/drone.js
|
||||||
|
*/
|
||||||
|
function sorter( precedence ){
|
||||||
|
return function(a,b)
|
||||||
|
{
|
||||||
|
// convert from Java string to JS string
|
||||||
|
a = '' + a;
|
||||||
|
b = '' + b;
|
||||||
|
var aparts = a.split(/\//);
|
||||||
|
var bparts = b.split(/\//);
|
||||||
|
var adir = aparts.slice(3,aparts.length-1).join('/');
|
||||||
|
var afile = aparts[aparts.length-1];
|
||||||
|
var bdir = bparts.slice(3,bparts.length-1).join('/');
|
||||||
|
var bfile = bparts[bparts.length-1];
|
||||||
|
|
||||||
|
for (var i = 0;i < precedence.length; i++){
|
||||||
|
var re = precedence[i];
|
||||||
|
if (a.match(re) && b.match(re)){
|
||||||
|
if (afile < bfile)
|
||||||
|
return -1;
|
||||||
|
if (afile > bfile)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (a.match(re))
|
||||||
|
return -1;
|
||||||
|
if (b.match(re))
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if(adir<bdir) return -1;
|
||||||
|
if(adir>bdir) return 1;
|
||||||
|
afile = afile.replace(/\.js$/,'');
|
||||||
|
if (afile == adir){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var result = 0;
|
||||||
|
if (afile < bfile){
|
||||||
|
result = -1;
|
||||||
|
}
|
||||||
|
if (afile > bfile){
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
//err.println("afile: " + afile + ", bfile:" + bfile + ",result=" + result);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function sortByModule(a,b)
|
||||||
|
{
|
||||||
|
var aparts = (''+a).split(/\//);
|
||||||
|
var bparts = (''+b).split(/\//);
|
||||||
|
var adir = aparts[aparts.length-2];
|
||||||
|
var afile = aparts[aparts.length-1];
|
||||||
|
var bdir = bparts[bparts.length-2];
|
||||||
|
var bfile = bparts[bparts.length-1];
|
||||||
|
if (afile == '_scriptcraft.js')
|
||||||
|
return -1;
|
||||||
|
if (bfile == '_scriptcraft.js')
|
||||||
|
return 1;
|
||||||
|
if(adir<bdir) return -1;
|
||||||
|
if(adir>bdir) return 1;
|
||||||
|
if (afile.indexOf(adir) == 0)
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var err = java.lang.System.err;
|
var err = java.lang.System.err;
|
||||||
|
|
||||||
args = Array.prototype.slice.call(args,1);
|
args = Array.prototype.slice.call(args,1);
|
||||||
|
|
||||||
if (typeof importPackage == 'undefined'){
|
if (typeof importPackage == 'undefined'){
|
||||||
// load compatibility script
|
// load compatibility script
|
||||||
load('nashorn:mozilla_compat.js');
|
load('nashorn:mozilla_compat.js');
|
||||||
}
|
}
|
||||||
var dir = args[0];
|
var dir = args[0];
|
||||||
var foreach = function(array, func){
|
|
||||||
for (var i =0; i < array.length; i++){
|
|
||||||
func(array[i],i,array);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
importPackage(java.io);
|
importPackage(java.io);
|
||||||
/*
|
|
||||||
find - a (very) basic implementation of the unix command line tool.
|
|
||||||
*/
|
|
||||||
var find = function(dir,store,re)
|
|
||||||
{
|
|
||||||
var files = dir.listFiles();
|
|
||||||
foreach (files, function(filename){
|
|
||||||
filename = "" + filename;
|
|
||||||
var file = new File(filename);
|
|
||||||
if (file.isDirectory()) {
|
|
||||||
find(file,store,re);
|
|
||||||
} else {
|
|
||||||
if (typeof re == "undefined")
|
|
||||||
store.push(filename);
|
|
||||||
else if (filename.match(re))
|
|
||||||
store.push(filename);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
/*
|
|
||||||
the main module file for a given directory
|
|
||||||
(assuming the main module is in a file with the same name as the parent
|
|
||||||
directory) - e.g. drone/drone.js
|
|
||||||
*/
|
|
||||||
var sorter = function( precedence ){
|
|
||||||
return function(a,b)
|
|
||||||
{
|
|
||||||
// convert from Java string to JS string
|
|
||||||
a = '' + a;
|
|
||||||
b = '' + b;
|
|
||||||
var aparts = a.split(/\//);
|
|
||||||
var bparts = b.split(/\//);
|
|
||||||
var adir = aparts.slice(3,aparts.length-1).join('/');
|
|
||||||
var afile = aparts[aparts.length-1];
|
|
||||||
var bdir = bparts.slice(3,bparts.length-1).join('/');
|
|
||||||
var bfile = bparts[bparts.length-1];
|
|
||||||
|
|
||||||
for (var i = 0;i < precedence.length; i++){
|
|
||||||
var re = precedence[i];
|
|
||||||
if (a.match(re) && b.match(re)){
|
|
||||||
if (afile < bfile)
|
|
||||||
return -1;
|
|
||||||
if (afile > bfile)
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (a.match(re))
|
|
||||||
return -1;
|
|
||||||
if (b.match(re))
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if(adir<bdir) return -1;
|
|
||||||
if(adir>bdir) return 1;
|
|
||||||
afile = afile.replace(/\.js$/,'');
|
|
||||||
if (afile == adir){
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var result = 0;
|
|
||||||
if (afile < bfile){
|
|
||||||
result = -1;
|
|
||||||
}
|
|
||||||
if (afile > bfile){
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
//err.println("afile: " + afile + ", bfile:" + bfile + ",result=" + result);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
var sortByModule = function(a,b)
|
|
||||||
{
|
|
||||||
var aparts = (''+a).split(/\//);
|
|
||||||
var bparts = (''+b).split(/\//);
|
|
||||||
var adir = aparts[aparts.length-2];
|
|
||||||
var afile = aparts[aparts.length-1];
|
|
||||||
var bdir = bparts[bparts.length-2];
|
|
||||||
var bfile = bparts[bparts.length-1];
|
|
||||||
if (afile == '_scriptcraft.js')
|
|
||||||
return -1;
|
|
||||||
if (bfile == '_scriptcraft.js')
|
|
||||||
return 1;
|
|
||||||
if(adir<bdir) return -1;
|
|
||||||
if(adir>bdir) return 1;
|
|
||||||
if (afile.indexOf(adir) == 0)
|
|
||||||
return -1;
|
|
||||||
else
|
|
||||||
return 1;
|
|
||||||
};
|
|
||||||
var store = [];
|
var store = [];
|
||||||
find(new File(dir),store,/\/[a-zA-Z0-9_\-]+\.js$/);
|
find(new File(dir),store,/\/[a-zA-Z0-9_\-]+\.js$/);
|
||||||
|
|
||||||
store.sort(sorter([
|
store.sort(sorter([
|
||||||
/lib\/scriptcraft\.js$/,
|
/lib\/scriptcraft\.js$/,
|
||||||
/lib\/require\.js$/,
|
/lib\/require\.js$/,
|
||||||
/lib\/plugin\.js$/,
|
/lib\/plugin\.js$/,
|
||||||
/lib\/events\.js$/,
|
/lib\/events\.js$/,
|
||||||
/lib\//,
|
/lib\//,
|
||||||
/modules\//,
|
/modules\//,
|
||||||
/drone\.js/,
|
/drone\.js/,
|
||||||
/drone\//,
|
/drone\//,
|
||||||
/examples\//
|
/examples\//
|
||||||
]));
|
]));
|
||||||
//err.println("store=" + JSON.stringify(store));
|
//err.println("store=" + JSON.stringify(store));
|
||||||
|
|
||||||
var contents = [];
|
var contents = [];
|
||||||
foreach(store, function(filename){
|
foreach(store, function(filename){
|
||||||
var br = new BufferedReader(new FileReader(filename));
|
var br = new BufferedReader(new FileReader(filename));
|
||||||
var line ;
|
var line ;
|
||||||
while ( (line = br.readLine()) != null){
|
while ( (line = br.readLine()) != null){
|
||||||
contents.push(line);
|
contents.push(line);
|
||||||
}
|
}
|
||||||
br.close();
|
br.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
var len = contents.length;
|
var len = contents.length;
|
||||||
|
@ -138,16 +141,16 @@ var startComment = /^\/\*{10}/;
|
||||||
var endComment = /^\*{3}\//;
|
var endComment = /^\*{3}\//;
|
||||||
|
|
||||||
for (var i = 0;i < contents.length; i++){
|
for (var i = 0;i < contents.length; i++){
|
||||||
var line = contents[i];
|
var line = contents[i];
|
||||||
if (line.match(startComment)){
|
if (line.match(startComment)){
|
||||||
writeComment = true;
|
writeComment = true;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (line.match(endComment)){
|
if (line.match(endComment)){
|
||||||
writeComment = false;
|
writeComment = false;
|
||||||
}
|
}
|
||||||
if (writeComment){
|
if (writeComment){
|
||||||
java.lang.System.out.println(contents[i]);
|
java.lang.System.out.println(contents[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
45
src/docs/js/generateItemsDoc.js
Normal file
45
src/docs/js/generateItemsDoc.js
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
args = Array.prototype.slice.call(args,1);
|
||||||
|
// [0] = type, [1] = lib.jar [2] = blockX, [3] = classX
|
||||||
|
var out = java.lang.System.out,
|
||||||
|
err = java.lang.System.err,
|
||||||
|
entry = null;
|
||||||
|
var content = [
|
||||||
|
'/*********************',
|
||||||
|
'## Items module',
|
||||||
|
'The Items module provides a suite of functions - one for each possible item.',
|
||||||
|
'See https://ci.visualillusionsent.net/job/CanaryLib/javadoc/net/canarymod/api/inventory/ItemType.html for a list of possible items',
|
||||||
|
'',
|
||||||
|
'### Usage',
|
||||||
|
'',
|
||||||
|
' items.book(); // returns net.canarymod.api.inventory.ItemType.Book',
|
||||||
|
' items.book(2); // returns a new net.canarymod.api.inventory.Item object with an amount 2 (2 books)',
|
||||||
|
' items.book( itemType ); // compares itemType parameter to ItemType.Book or an Item of type book',
|
||||||
|
'',
|
||||||
|
'The following functions are provided:',
|
||||||
|
''
|
||||||
|
];
|
||||||
|
|
||||||
|
//var ItemType = java.lang.Class.forName('net.canarymod.api.inventory.ItemType');
|
||||||
|
var ItemType = Packages.net.canarymod.api.inventory.ItemType;
|
||||||
|
var materials = ItemType.class.getDeclaredFields();
|
||||||
|
|
||||||
|
var enumVals = [];
|
||||||
|
for (var i = 0;i < materials.length; i++ ){
|
||||||
|
|
||||||
|
if (materials[i].type != ItemType.class) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var materialField = materials[i];
|
||||||
|
var name = (''+materialField.name).replace(/^(.)/,function(a){ return a.toLowerCase() });
|
||||||
|
enumVals.push(' * ' + name + '()');
|
||||||
|
}
|
||||||
|
enumVals.sort();
|
||||||
|
content = content.concat(enumVals);
|
||||||
|
content.push('');
|
||||||
|
content.push('***/');
|
||||||
|
for (var i = 0; i< content.length; i++){
|
||||||
|
out.println(content[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,21 +16,24 @@ import net.canarymod.commandsys.Command;
|
||||||
import net.canarymod.commandsys.TabComplete;
|
import net.canarymod.commandsys.TabComplete;
|
||||||
import net.canarymod.chat.MessageReceiver;
|
import net.canarymod.chat.MessageReceiver;
|
||||||
import net.canarymod.Canary;
|
import net.canarymod.Canary;
|
||||||
|
import net.canarymod.api.inventory.recipes.CraftingRecipe;
|
||||||
|
import net.canarymod.api.inventory.recipes.RecipeRow;
|
||||||
|
import net.canarymod.api.inventory.Item;
|
||||||
|
|
||||||
public class ScriptCraftPlugin extends Plugin implements PluginListener, CommandListener
|
public class ScriptCraftPlugin extends Plugin implements PluginListener, CommandListener
|
||||||
{
|
{
|
||||||
public boolean canary = true;
|
public boolean canary = true;
|
||||||
public boolean bukkit = false;
|
public boolean bukkit = false;
|
||||||
private String NO_JAVASCRIPT_MESSAGE = "No JavaScript Engine available. " +
|
private String NO_JAVASCRIPT_MESSAGE = "No JavaScript Engine available. " +
|
||||||
"ScriptCraft will not work without Javascript.";
|
"ScriptCraft will not work without Javascript.";
|
||||||
protected ScriptEngine engine = null;
|
protected ScriptEngine engine = null;
|
||||||
@Override
|
@Override
|
||||||
public void disable(){
|
public void disable(){
|
||||||
try {
|
try {
|
||||||
((Invocable)this.engine).invokeFunction("__onDisable", this.engine, this);
|
((Invocable)this.engine).invokeFunction("__onDisable", this.engine, this);
|
||||||
}catch ( Exception e) {
|
}catch ( Exception e) {
|
||||||
this.getLogman().error(e.getMessage());
|
this.getLogman().error(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean enable()
|
public boolean enable()
|
||||||
|
@ -38,50 +41,57 @@ public class ScriptCraftPlugin extends Plugin implements PluginListener, Command
|
||||||
try{
|
try{
|
||||||
ScriptEngineManager factory = new ScriptEngineManager();
|
ScriptEngineManager factory = new ScriptEngineManager();
|
||||||
this.engine = factory.getEngineByName("JavaScript");
|
this.engine = factory.getEngineByName("JavaScript");
|
||||||
if (this.engine == null){
|
if (this.engine == null){
|
||||||
this.getLogman().error(NO_JAVASCRIPT_MESSAGE);
|
this.getLogman().error(NO_JAVASCRIPT_MESSAGE);
|
||||||
} else {
|
} else {
|
||||||
Invocable inv = (Invocable)this.engine;
|
Invocable inv = (Invocable)this.engine;
|
||||||
//File f = new File(this.getJarPath());
|
//File f = new File(this.getJarPath());
|
||||||
InputStreamReader reader = new InputStreamReader(getClass()
|
InputStreamReader reader = new InputStreamReader(getClass()
|
||||||
.getClassLoader()
|
.getClassLoader()
|
||||||
.getResourceAsStream("boot.js"));
|
.getResourceAsStream("boot.js"));
|
||||||
this.engine.eval(reader);
|
this.engine.eval(reader);
|
||||||
inv.invokeFunction("__scboot", this, engine, getClass().getClassLoader());
|
inv.invokeFunction("__scboot", this, engine, getClass().getClassLoader());
|
||||||
}
|
}
|
||||||
|
|
||||||
Canary.commands().registerCommands(this, this, false);
|
Canary.commands().registerCommands(this, this, false);
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
this.getLogman().error(e.getMessage());
|
this.getLogman().error(e.getMessage());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
public CraftingRecipe makeShapedRecipe(Item resultingItem, RecipeRow... rows){
|
||||||
|
CraftingRecipe result = new CraftingRecipe(resultingItem, rows);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public CraftingRecipe makeShapelessRecipe(Item resultingItem, Item... items){
|
||||||
|
CraftingRecipe result = new CraftingRecipe(resultingItem, items);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static class ScriptCraftTask extends ServerTask {
|
static class ScriptCraftTask extends ServerTask {
|
||||||
private Runnable runnable = null;
|
private Runnable runnable = null;
|
||||||
public ScriptCraftTask(Runnable runnable, TaskOwner owner, long delay, boolean continuous){
|
public ScriptCraftTask(Runnable runnable, TaskOwner owner, long delay, boolean continuous){
|
||||||
super(owner, delay, continuous);
|
super(owner, delay, continuous);
|
||||||
this.runnable = runnable;
|
this.runnable = runnable;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void run(){
|
public void run(){
|
||||||
this.runnable.run();
|
this.runnable.run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ServerTask createServerTask(Runnable runnable, long delay, boolean continuous){
|
public ServerTask createServerTask(Runnable runnable, long delay, boolean continuous){
|
||||||
return new ScriptCraftTask(runnable, this, delay, continuous);
|
return new ScriptCraftTask(runnable, this, delay, continuous);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void executeCommand( MessageReceiver sender, String[] args) {
|
private void executeCommand( MessageReceiver sender, String[] args) {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
String javascriptCode = "";
|
String javascriptCode = "";
|
||||||
Object jsResult = null;
|
Object jsResult = null;
|
||||||
if (this.engine == null){
|
if (this.engine == null){
|
||||||
this.getLogman().error(NO_JAVASCRIPT_MESSAGE);
|
this.getLogman().error(NO_JAVASCRIPT_MESSAGE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
jsResult = ((Invocable)this.engine).invokeFunction("__onCommand", sender, args);
|
jsResult = ((Invocable)this.engine).invokeFunction("__onCommand", sender, args);
|
||||||
}catch (Exception se){
|
}catch (Exception se){
|
||||||
|
@ -95,34 +105,34 @@ public class ScriptCraftPlugin extends Plugin implements PluginListener, Command
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "js" },
|
aliases = { "js" },
|
||||||
description = "Execute Javascript code",
|
description = "Execute Javascript code",
|
||||||
permissions = { "canary.super.js", "canary.command.super.js" },
|
permissions = { "scriptcraft.evaluate", "*" },
|
||||||
toolTip = "/js javascript expression")
|
toolTip = "/js javascript expression")
|
||||||
public void jsCommand(MessageReceiver sender, String[] args) {
|
public void jsCommand(MessageReceiver sender, String[] args) {
|
||||||
|
|
||||||
executeCommand(sender, args);
|
executeCommand(sender, args);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
groupmod permission add visitors canary.jsp
|
groupmod permission add visitors canary.jsp
|
||||||
groupmod permission add visitors canary.command.jsp
|
groupmod permission add visitors canary.command.jsp
|
||||||
*/
|
*/
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "jsp" },
|
aliases = { "jsp" },
|
||||||
description = "Run javascript-provided command",
|
description = "Run javascript-provided command",
|
||||||
permissions = { "canary.jsp", "canary.command.jsp" },
|
permissions = { "" },
|
||||||
toolTip = "/jsp command")
|
toolTip = "/jsp command")
|
||||||
public void jspCommand(MessageReceiver sender, String[] args) {
|
public void jspCommand(MessageReceiver sender, String[] args) {
|
||||||
|
|
||||||
executeCommand(sender, args);
|
executeCommand(sender, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> complete(MessageReceiver sender, String[] args, String cmd){
|
private List<String> complete(MessageReceiver sender, String[] args, String cmd){
|
||||||
List<String> result = new ArrayList<String>();
|
List<String> result = new ArrayList<String>();
|
||||||
if (this.engine == null){
|
if (this.engine == null){
|
||||||
this.getLogman().error(NO_JAVASCRIPT_MESSAGE);
|
this.getLogman().error(NO_JAVASCRIPT_MESSAGE);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Invocable inv = (Invocable)this.engine;
|
Invocable inv = (Invocable)this.engine;
|
||||||
inv.invokeFunction("__onTabComplete", result, sender, args, cmd);
|
inv.invokeFunction("__onTabComplete", result, sender, args, cmd);
|
||||||
|
@ -134,10 +144,10 @@ public class ScriptCraftPlugin extends Plugin implements PluginListener, Command
|
||||||
}
|
}
|
||||||
@TabComplete (commands = { "js" })
|
@TabComplete (commands = { "js" })
|
||||||
public List<String> jsComplete(MessageReceiver sender, String[] args){
|
public List<String> jsComplete(MessageReceiver sender, String[] args){
|
||||||
return complete(sender, args, "js");
|
return complete(sender, args, "js");
|
||||||
}
|
}
|
||||||
@TabComplete (commands = { "jsp" })
|
@TabComplete (commands = { "jsp" })
|
||||||
public List<String> jspComplete(MessageReceiver sender, String[] args){
|
public List<String> jspComplete(MessageReceiver sender, String[] args){
|
||||||
return complete(sender, args, "jsp");
|
return complete(sender, args, "jsp");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -678,7 +678,7 @@ function __onEnable ( __engine, __plugin, __script ) {
|
||||||
configFile = new File(configFile,'global-config.json');
|
configFile = new File(configFile,'global-config.json');
|
||||||
var config = _load( configFile );
|
var config = _load( configFile );
|
||||||
if ( !config ) {
|
if ( !config ) {
|
||||||
config = { verbose: true };
|
config = { verbose: false };
|
||||||
}
|
}
|
||||||
global.config = config;
|
global.config = config;
|
||||||
global.__plugin = __plugin;
|
global.__plugin = __plugin;
|
||||||
|
|
15
src/main/js/modules/bukkit/recipes.js
Normal file
15
src/main/js/modules/bukkit/recipes.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
var items = require('items');
|
||||||
|
var bkShapedRecipe = org.bukkit.inventory.ShapedRecipe;
|
||||||
|
|
||||||
|
exports.add = function( recipe ){
|
||||||
|
var result = new bkShapedRecipe( recipe.result );
|
||||||
|
result.shape( recipe.shape );
|
||||||
|
for (var i in recipe.ingredients ){
|
||||||
|
result.setIngredient( i, recipe.ingredients[i] );
|
||||||
|
}
|
||||||
|
server.addRecipe(result);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
exports.remove = function( recipe ) {
|
||||||
|
server.removeRecipe(recipe);
|
||||||
|
};
|
36
src/main/js/modules/canary/recipes.js
Normal file
36
src/main/js/modules/canary/recipes.js
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
var cm = Packages.net.canarymod;
|
||||||
|
var cmRecipe = cm.api.inventory.recipes.CraftingRecipe;
|
||||||
|
var cmRecipeRow = cm.api.inventory.recipes.RecipeRow;
|
||||||
|
|
||||||
|
function addRecipe( recipe ){
|
||||||
|
if (!recipe){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var result,
|
||||||
|
rows,
|
||||||
|
i,j,
|
||||||
|
cells,
|
||||||
|
rr;
|
||||||
|
if (recipe.shape){
|
||||||
|
rows = [];
|
||||||
|
for (i = 0; i < recipe.shape.length; i++){
|
||||||
|
cells = recipe.shape[i].split('');
|
||||||
|
rr = [];
|
||||||
|
for ( j = 0; j < cells.length ; j++){
|
||||||
|
if (cells[j] != ' '){
|
||||||
|
rr.push(recipe.ingredients[cells[j]]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rows.push( new cmRecipeRow(recipe.shape[i], rr) );
|
||||||
|
}
|
||||||
|
result = __plugin.makeShapedRecipe( recipe.result, rows);
|
||||||
|
} else {
|
||||||
|
result = __plugin.makeShapelessRecipe( recipe.result, recipe.ingredients );
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function removeRecipe( recipe ){
|
||||||
|
server.removeRecipe( recipe );
|
||||||
|
}
|
||||||
|
exports.add = addRecipe;
|
||||||
|
exports.remove = removeRecipe;
|
32
src/main/js/modules/recipes.js
Normal file
32
src/main/js/modules/recipes.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/*************************************************************************
|
||||||
|
## The recipes module
|
||||||
|
|
||||||
|
The Recipes module provides convenience functions for adding and removing recipes
|
||||||
|
from the game.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
To add an EnderBow to the game (assumes there's an enchanted Item variable called enderBow)...
|
||||||
|
|
||||||
|
var recipes = require('recipes');
|
||||||
|
var items = require('items');
|
||||||
|
...
|
||||||
|
var enderBowRecipe = recipes.add( {
|
||||||
|
result: enderBow,
|
||||||
|
ingredients: {
|
||||||
|
E: items.enderPearl(1),
|
||||||
|
S: items.stick(1),
|
||||||
|
W: items.string(1)
|
||||||
|
},
|
||||||
|
shape: [ 'ESW',
|
||||||
|
'SEW',
|
||||||
|
'ESW' ]
|
||||||
|
} );
|
||||||
|
// to remove...
|
||||||
|
recipes.remove( enderBowRecipe );
|
||||||
|
|
||||||
|
***/
|
||||||
|
if (__plugin.canary) {
|
||||||
|
module.exports = require('./canary/recipes');
|
||||||
|
} else {
|
||||||
|
module.exports = require('./bukkit/recipes');
|
||||||
|
}
|
|
@ -746,6 +746,16 @@ exports.array = function( ){
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
/*************************************************************************
|
||||||
|
### utils.players() function
|
||||||
|
|
||||||
|
This function returns a javascript array of all online players on the server.
|
||||||
|
|
||||||
|
### utils.playerNames() function
|
||||||
|
|
||||||
|
This function returns a javascript array of player names (as javascript strings)
|
||||||
|
|
||||||
|
***/
|
||||||
function getPlayersBukkit(){
|
function getPlayersBukkit(){
|
||||||
var result = [];
|
var result = [];
|
||||||
for (var i = 0; i < server.onlinePlayers.length; i++){
|
for (var i = 0; i < server.onlinePlayers.length; i++){
|
||||||
|
@ -761,6 +771,13 @@ function getPlayersCanary(){
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
var getPlayers = null;
|
||||||
|
if (__plugin.canary) {
|
||||||
|
getPlayers = getPlayersCanary;
|
||||||
|
} else {
|
||||||
|
getPlayers = getPlayersBukkit;
|
||||||
|
}
|
||||||
|
|
||||||
function getStatBukkit(player, stat){
|
function getStatBukkit(player, stat){
|
||||||
return player.getStatistic(org.bukkit.Statistic[stat.toUpperCase()]);
|
return player.getStatistic(org.bukkit.Statistic[stat.toUpperCase()]);
|
||||||
}
|
}
|
||||||
|
@ -768,7 +785,12 @@ function getStatCanary(player, stat){
|
||||||
var cmStatistics = Packages.net.canarymod.api.statistics.Statistics;
|
var cmStatistics = Packages.net.canarymod.api.statistics.Statistics;
|
||||||
return player.getStat(cmStatistics[stat.toUpperCase()].instance);
|
return player.getStat(cmStatistics[stat.toUpperCase()].instance);
|
||||||
}
|
}
|
||||||
exports.players = __plugin.canary ? getPlayersCanary: getPlayersBukkit;
|
function getPlayerNames(){
|
||||||
|
return getPlayers().map(function(p){ return p.name; });
|
||||||
|
}
|
||||||
|
exports.players = getPlayers;
|
||||||
|
exports.playerNames = getPlayerNames;
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
### utils.stat() function
|
### utils.stat() function
|
||||||
|
|
||||||
|
|
Reference in a new issue