NOREFLECT WORKING!!!!!!!!!!!!!
This commit is contained in:
parent
02b7958928
commit
66706815cf
|
@ -4,14 +4,14 @@ BaseData reflect_%classname% = new ModData();
|
|||
|
||||
ArrayList<BaseData> reflect_%classname%_constructors = new ArrayList<BaseData>();
|
||||
%constructordefs%
|
||||
BaseData[] reflect_%classname%_constructors_arr = new BaseData[reflectProfiles.size()];
|
||||
BaseData[] reflect_%classname%_constructors_arr = new BaseData[reflect_%classname%_constructors.size()];
|
||||
for (int i = 0; i < reflect_%classname%_constructors_arr.length; i++) {
|
||||
reflect_%classname%_constructors_arr[i] = reflect_%classname%_constructors.get(i);
|
||||
}
|
||||
|
||||
ArrayList<BaseData> reflect_%classname%_methods = new ArrayList<BaseData>();
|
||||
%methoddefs%
|
||||
BaseData[] reflect_%classname%_methods_arr = new BaseData[reflectProfiles.size()];
|
||||
BaseData[] reflect_%classname%_methods_arr = new BaseData[reflect_%classname%_methods.size()];
|
||||
for (int i = 0; i < reflect_%classname%_methods_arr.length; i++) {
|
||||
reflect_%classname%_methods_arr[i] = reflect_%classname%_methods.get(i);
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ BaseData reflect_%classname%_constructor_%constructorname%_%idx% = new ModData()
|
|||
reflect_%classname%_constructor_%constructorname%_%idx%.set("returnType", %returntype%);
|
||||
reflect_%classname%_constructor_%constructorname%_%idx%.set("argnames", %argkeys%);
|
||||
reflect_%classname%_constructor_%constructorname%_%idx%.set("argtypes", %argvalues%);
|
||||
reflect_%classname%_constructors_%idx%.%constructorimpl%
|
||||
reflect_%classname%_constructor_%constructorname%_%idx%.%constructorimpl%
|
||||
reflect_%classname%_constructors.add(reflect_%classname%_constructor_%constructorname%_%idx%);
|
||||
|
||||
`;
|
||||
|
@ -49,6 +49,11 @@ reflect_%classname%_methods.add(reflect_%classname%_method_%methodname%_%idx%);
|
|||
const templateManager = `
|
||||
import net.eaglerforge.api.*;
|
||||
import java.util.ArrayList;
|
||||
import java.lang.Exception;
|
||||
|
||||
//AUTOGENERATED BY NOREFLECT
|
||||
//Made by ZXMushroom63
|
||||
|
||||
public class PLReflect {
|
||||
public static ModData makeModData() {
|
||||
ModData plReflectGlobal = new ModData();
|
||||
|
@ -209,7 +214,6 @@ async function generate(fileList) {
|
|||
var classToLocationMap = new Map();
|
||||
var cfg;
|
||||
var output = new JSZip();
|
||||
const reader = new FileReader();
|
||||
var classDataDump = {};
|
||||
logClear();
|
||||
logTxt("[INIT] Build @ "+(new Date()));
|
||||
|
@ -234,13 +238,14 @@ async function generate(fileList) {
|
|||
classToLocationMap.set(className, classId);
|
||||
if (cfg.targetFiles.includes(classId)) {
|
||||
logTxt("Found "+classId+" ["+file.name+"], processing...");
|
||||
var javaFileContent = await process(file, reader, classDataDump, className);
|
||||
var javaFileContent = await process(file, new FileReader(), classDataDump, className);
|
||||
if (cfg.includeReadFiles) {
|
||||
output.file(file.webkitRelativePath.replaceAll("java/", ""), javaFileContent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(classDataDump);
|
||||
logTxt(`Creating manager file...`);
|
||||
createManagerFile(templateManager, cfg, output, classDataDump, classToLocationMap);
|
||||
|
||||
|
|
|
@ -7,6 +7,15 @@ const getStatements = {
|
|||
"char": "params.getChar(%s)",
|
||||
"double": "params.getDouble(%s)",
|
||||
}
|
||||
const primitiveDefaultValues = {
|
||||
"int": "0",
|
||||
"String": "\"\"",
|
||||
"boolean": "false",
|
||||
"float": "0.0f",
|
||||
"byte": "(byte) 0",
|
||||
"char": "\'a\'",
|
||||
"double": "0.0d",
|
||||
}
|
||||
const callbackStatements = {
|
||||
"boolean": "setCallbackBooleanWithDataArg",
|
||||
"int": "setCallbackIntWithDataArg",
|
||||
|
@ -26,7 +35,7 @@ function reconJ(java, className) {
|
|||
let constructorRegex = /(public|protected|private|static|\s) +(\w+) *\(([^)]*)\)/g;
|
||||
|
||||
let constructors = [...javaText.matchAll(constructorRegex).filter((line)=>{
|
||||
return !line[0].includes(" private ") && !line[0].includes(" protected ");
|
||||
return !line[0].includes(" private ") && !line[0].includes(" protected ") && !line[0].includes("\n\t\t") && line[1] !== "private" && line[1] !== "protected";
|
||||
})];
|
||||
|
||||
let constructorDetails = constructors.map((constructor) => {
|
||||
|
@ -56,7 +65,7 @@ function reconJ(java, className) {
|
|||
}
|
||||
|
||||
|
||||
let impl = `setCallbackReflectiveWithArgs("${constructorName}", (BaseData params) -> {
|
||||
let impl = `setCallbackReflectiveWithDataArg("${constructorName}", (BaseData params) -> {
|
||||
return new ${className}(${argStr});
|
||||
});
|
||||
`;
|
||||
|
@ -65,14 +74,15 @@ function reconJ(java, className) {
|
|||
name: constructorName,
|
||||
idx: constructors.indexOf(constructor),
|
||||
arguments: arguments,
|
||||
impl: impl
|
||||
impl: impl,
|
||||
data: constructor
|
||||
};
|
||||
});
|
||||
|
||||
let methodRegex = /(public|static|\s)* +([\w\<\>\[\]]+)\s+(\w+) *\(([^)]*)\)/g;
|
||||
let methodRegex = /(public|static|private|protected|\s)* +([\w\<\>\[\]]+)\s+(\w+) *\(([^)]*)\)/g;
|
||||
|
||||
let methods = [...javaText.matchAll(methodRegex).filter((line)=>{
|
||||
return !line[0].includes("> ") && !line[0].startsWith(" else ") && !line[0].startsWith(" new ") && !line[0].includes(" private ") && !line[0].includes(" protected ");
|
||||
return !line[0].includes("> ") && !line[0].startsWith(" else ") && !line[0].startsWith(" new ") && !line[0].includes(" private ") && !line[0].includes("\tprotected ") && !line[0].includes("\tprivate ") && !line[0].includes(" protected ") && !line[0].includes("\n\t\t");
|
||||
//Doesn't support Type<Subtype> yet
|
||||
})];
|
||||
|
||||
|
@ -106,19 +116,31 @@ function reconJ(java, className) {
|
|||
let prefix = isStatic ? className : `((${className}) params.getReflective("_self"))`;
|
||||
let impl;
|
||||
if (returnType === "void") {
|
||||
impl = `setCallbackVoidWithArgs("${methodName}", (BaseData params) -> {
|
||||
${prefix}.${methodName}(${argStr});
|
||||
impl = `setCallbackVoidWithDataArg("${methodName}", (BaseData params) -> {
|
||||
try {
|
||||
${prefix}.${methodName}(${argStr});
|
||||
} catch (Exception _exception_reflect_) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
`;
|
||||
} else if (callbackStatementsTypes.includes(returnType)) {
|
||||
impl = `${callbackStatements[returnType]}("${methodName}", (BaseData params) -> {
|
||||
return (${returnType}) ${prefix}.${methodName}(${argStr});
|
||||
try {
|
||||
return (${returnType}) ${prefix}.${methodName}(${argStr});
|
||||
} catch (Exception _exception_reflect_) {
|
||||
return ${primitiveDefaultValues[returnType]};
|
||||
}
|
||||
});
|
||||
`;
|
||||
} else {
|
||||
usedClasses.push(returnType);
|
||||
impl = `setCallbackReflectiveWithArgs("${methodName}", (BaseData params) -> {
|
||||
return (${returnType}) ${prefix}.${methodName}(${argStr});
|
||||
impl = `setCallbackReflectiveWithDataArg("${methodName}", (BaseData params) -> {
|
||||
try {
|
||||
return (${returnType}) ${prefix}.${methodName}(${argStr});
|
||||
} catch (Exception _exception_reflect_) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
`;
|
||||
}
|
||||
|
@ -130,7 +152,8 @@ function reconJ(java, className) {
|
|||
isStatic: isStatic,
|
||||
arguments: arguments,
|
||||
impl: impl,
|
||||
idx: methods.indexOf(method)
|
||||
idx: methods.indexOf(method),
|
||||
data: method
|
||||
};
|
||||
});
|
||||
return {
|
||||
|
|
Loading…
Reference in New Issue