Skip to content

Instantly share code, notes, and snippets.

@boy0001
Created August 20, 2018 05:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save boy0001/a622074e937fdb663462883e9bd1d2fe to your computer and use it in GitHub Desktop.
Save boy0001/a622074e937fdb663462883e9bd1d2fe to your computer and use it in GitHub Desktop.
{
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var ARGUMENT_NAMES = /([^\s,]+)/g;
function getParamNames(func) {
var a = func.toString().replace(STRIP_COMMENTS, '');
var r = a.slice(a.indexOf('(')+1, a.indexOf(')')).match(ARGUMENT_NAMES);
var l = new java.util.ArrayList();
if(r !== null) {
for (var i = 0; i < r.length; i++) {
l.add(r[i]);
}
}
return l;
}
function getAllFunctions(){
var a = new java.util.ArrayList();
for (var f in this){
if (this.hasOwnProperty(f) && this[f] instanceof Function && !/a/i.test(f)){
a.add(this[f]);
}
}
return a;
}
var functions = getAllFunctions();
for (var i = 0; i < functions.length; i++) {
var f = functions[i];
if (f.hasOwnProperty('desc'))
{
print("Function: " + functions[i].name);
if (!f.hasOwnProperty('aliases')) f.aliases = [f.name];
var cmd = com.boydti.fawe.config.Commands.fromArgs(f.aliases, f.usage, f.desc, f.min, f.max, f.flags, f.help);
var man = com.sk89q.worldedit.extension.platform.CommandManager.getInstance();
var builder = man.getBuilder();
var args = getParamNames(f);
var wrap = Java.extend(java.util.function.Function, {
apply: function(a) {
print("Apply: " + a);
return f.apply(null, a);
}
});
var w2 = new wrap();
print("New callable...?");
var callable = new com.sk89q.worldedit.util.command.parametric.FunctionParametricCallable(builder, "", cmd, "fawe.use", args, w2);
print("New callable done!");
man.registerCommand([], cmd, callable);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment