36 lines
1.4 KiB
Java
36 lines
1.4 KiB
Java
package com.thebrokenrail.scriptcraft;
|
|
|
|
import com.thebrokenrail.scriptcraft.quickjs.QuickJS;
|
|
import com.thebrokenrail.scriptcraft.quickjs.QuickJSManager;
|
|
import com.thebrokenrail.scriptcraft.util.ScriptCraftEntrypoint;
|
|
import net.fabricmc.api.ModInitializer;
|
|
import net.fabricmc.loader.api.FabricLoader;
|
|
|
|
import java.util.List;
|
|
import java.util.regex.Pattern;
|
|
|
|
public class ScriptCraft implements ModInitializer {
|
|
public static final String NAMESPACE = "scriptcraft";
|
|
public static final Pattern MOD_ID_PATTERN = Pattern.compile("[a-z][a-z0-9-_]{1,63}");
|
|
|
|
@Override
|
|
public void onInitialize() {
|
|
QuickJSManager.init(new QuickJSManager.Task() {
|
|
@Override
|
|
protected Object run(QuickJS quickjs) {
|
|
List<ScriptCraftEntrypoint> mods = FabricLoader.getInstance().getEntrypoints(NAMESPACE, ScriptCraftEntrypoint.class);
|
|
for (ScriptCraftEntrypoint mod : mods) {
|
|
if (MOD_ID_PATTERN.matcher(mod.getModID()).matches()) {
|
|
if (mod.shouldAutoLoad()) {
|
|
quickjs.run("import '" + mod.getModID() + "';");
|
|
}
|
|
} else {
|
|
throw new RuntimeException("Invalid Mod ID: " + mod.getModID());
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
});
|
|
}
|
|
}
|