This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
ScriptCraft/src/main/java/com/thebrokenrail/scriptcraft/ScriptCraft.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;
}
});
}
}