mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-01-10 15:19:24 +07:00
Single-script mod case
This commit is contained in:
parent
9c2569d4f5
commit
eb87e5f265
@ -460,7 +460,9 @@ public class Mods implements Loadable{
|
|||||||
eachEnabled(mod -> {
|
eachEnabled(mod -> {
|
||||||
if(mod.root.child("scripts").exists()){
|
if(mod.root.child("scripts").exists()){
|
||||||
content.setCurrentMod(mod);
|
content.setCurrentMod(mod);
|
||||||
Fi main = mod.root.child("scripts").child("main.js");
|
//if there's only one script file, use it (for backwards compatibility); if there isn't, use "main.js"
|
||||||
|
Array<Fi> allScripts = mod.root.child("scripts").findAll(f -> f.extEquals("js"));
|
||||||
|
Fi main = allScripts.size == 1 ? allScripts.first() : mod.root.child("scripts").child("main.js");
|
||||||
if(main.exists() && !main.isDirectory()){
|
if(main.exists() && !main.isDirectory()){
|
||||||
try{
|
try{
|
||||||
if(scripts == null){
|
if(scripts == null){
|
||||||
|
@ -5,17 +5,16 @@ import arc.files.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.Log.*;
|
import arc.util.Log.*;
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URISyntaxException;
|
|
||||||
import java.util.regex.*;
|
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.mod.Mods.*;
|
import mindustry.mod.Mods.*;
|
||||||
import org.mozilla.javascript.*;
|
import org.mozilla.javascript.*;
|
||||||
import org.mozilla.javascript.commonjs.module.*;
|
import org.mozilla.javascript.commonjs.module.*;
|
||||||
import org.mozilla.javascript.commonjs.module.provider.*;
|
import org.mozilla.javascript.commonjs.module.provider.*;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.*;
|
||||||
|
import java.util.regex.*;
|
||||||
|
|
||||||
public class Scripts implements Disposable{
|
public class Scripts implements Disposable{
|
||||||
private final Array<String> blacklist = Array.with("net", "files", "reflect", "javax", "rhino", "file", "channels", "jdk",
|
private final Array<String> blacklist = Array.with("net", "files", "reflect", "javax", "rhino", "file", "channels", "jdk",
|
||||||
"runtime", "util.os", "rmi", "security", "org.", "sun.", "beans", "sql", "http", "exec", "compiler", "process", "system",
|
"runtime", "util.os", "rmi", "security", "org.", "sun.", "beans", "sql", "http", "exec", "compiler", "process", "system",
|
||||||
@ -116,20 +115,20 @@ public class Scripts implements Disposable{
|
|||||||
@Override
|
@Override
|
||||||
public ModuleSource loadSource(String moduleId, Scriptable paths, Object validator) throws IOException, URISyntaxException{
|
public ModuleSource loadSource(String moduleId, Scriptable paths, Object validator) throws IOException, URISyntaxException{
|
||||||
if(loadedMod == null) return null;
|
if(loadedMod == null) return null;
|
||||||
return loadSource(loadedMod, moduleId, loadedMod.root.child("scripts"), validator);
|
return loadSource(moduleId, loadedMod.root.child("scripts"), validator);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ModuleSource loadSource(LoadedMod mod, String moduleId, Fi root, Object validator) throws IOException, URISyntaxException{
|
private ModuleSource loadSource(String moduleId, Fi root, Object validator) throws URISyntaxException{
|
||||||
Matcher matched = directory.matcher(moduleId);
|
Matcher matched = directory.matcher(moduleId);
|
||||||
if(matched.find()){
|
if(matched.find()){
|
||||||
LoadedMod required = Vars.mods.locateMod(matched.group(1));
|
LoadedMod required = Vars.mods.locateMod(matched.group(1));
|
||||||
String script = matched.group(2);
|
String script = matched.group(2);
|
||||||
if(required == null || root == required.root.child("scripts")){ // Mod not found, or already using a mod
|
if(required == null || root.equals(required.root.child("scripts"))){ // Mod not found, or already using a mod
|
||||||
Fi dir = root.child(matched.group(1));
|
Fi dir = root.child(matched.group(1));
|
||||||
if(!dir.exists()) return null; // Mod and folder not found
|
if(!dir.exists()) return null; // Mod and folder not found
|
||||||
return loadSource(mod, script, dir, validator);
|
return loadSource(script, dir, validator);
|
||||||
}
|
}
|
||||||
return loadSource(required, script, required.root.child("scripts"), validator);
|
return loadSource(script, required.root.child("scripts"), validator);
|
||||||
}
|
}
|
||||||
|
|
||||||
Fi module = root.child(moduleId + ".js");
|
Fi module = root.child(moduleId + ".js");
|
||||||
|
Loading…
Reference in New Issue
Block a user