From 187e1f5848fbdd77df06ca9d18eda471edbfea92 Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Wed, 29 Jan 2020 23:52:58 +0000 Subject: [PATCH 01/17] create new branch --- core/src/mindustry/mod/Mods.java | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 8ddd3c3300..d39060eddd 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -460,10 +460,26 @@ public class Mods implements Loadable{ eachEnabled(mod -> { if(mod.root.child("scripts").exists()){ content.setCurrentMod(mod); - mod.scripts = mod.root.child("scripts").findAll(f -> f.extension().equals("js")); - Log.debug("[{0}] Found {1} scripts.", mod.meta.name, mod.scripts.size); + if(mod.meta.mainScript == null){ + mod.scripts = mod.root.child("scripts").findAll(f -> f.extension().equals("js")); + Log.debug("[{0}] Found {1} scripts.", mod.meta.name, mod.scripts.size); - for(Fi file : mod.scripts){ + for(Fi file : mod.scripts){ + try{ + if(scripts == null){ + scripts = platform.createScripts(); + } + scripts.run(mod, file); + }catch(Throwable e){ + Core.app.post(() -> { + Log.err("Error loading script {0} for mod {1}.", file.name(), mod.meta.name); + e.printStackTrace(); + }); + break; + } + } + }else{ + Fi file = new Fi(mod.meta.mainscript + ".js"); try{ if(scripts == null){ scripts = platform.createScripts(); @@ -471,10 +487,9 @@ public class Mods implements Loadable{ scripts.run(mod, file); }catch(Throwable e){ Core.app.post(() -> { - Log.err("Error loading script {0} for mod {1}.", file.name(), mod.meta.name); - e.printStackTrace(); + Log.err("Error loading main script {0} for mod {1}.", file.name(), mod.meta.name); + e.printStacktrace(); }); - break; } } } @@ -794,7 +809,7 @@ public class Mods implements Loadable{ /** Plugin metadata information.*/ public static class ModMeta{ - public String name, displayName, author, description, version, main, minGameVersion; + public String name, displayName, author, description, version, main, minGameVersion, mainScript; public Array dependencies = Array.with(); /** Hidden mods are only server-side or client-side, and do not support adding new content. */ public boolean hidden; From 9ed7719464642960af913f4466dcb900ee67ca43 Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Thu, 30 Jan 2020 00:04:42 +0000 Subject: [PATCH 02/17] compile dammit --- core/src/mindustry/mod/Mods.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index d39060eddd..9e1cb24efa 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -479,7 +479,7 @@ public class Mods implements Loadable{ } } }else{ - Fi file = new Fi(mod.meta.mainscript + ".js"); + Fi file = new Fi(mod.meta.mainScript + ".js"); try{ if(scripts == null){ scripts = platform.createScripts(); @@ -488,7 +488,7 @@ public class Mods implements Loadable{ }catch(Throwable e){ Core.app.post(() -> { Log.err("Error loading main script {0} for mod {1}.", file.name(), mod.meta.name); - e.printStacktrace(); + e.printStackTrace(); }); } } From 864c73f7919e65b980d6f6bd6be8aefcd311635d Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Thu, 30 Jan 2020 00:21:50 +0000 Subject: [PATCH 03/17] make it semi work maybe still completely insecure --- core/src/mindustry/mod/Mods.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 9e1cb24efa..9de67c14bb 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -479,7 +479,7 @@ public class Mods implements Loadable{ } } }else{ - Fi file = new Fi(mod.meta.mainScript + ".js"); + Fi file = mod.root.child("scripts").child(mod.meta.mainScript + ".js"); try{ if(scripts == null){ scripts = platform.createScripts(); From 677debd475a77b1bb33ae214f4f3e886aee3fa1b Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Thu, 30 Jan 2020 00:38:51 +0000 Subject: [PATCH 04/17] testing script loading stuff is not allowed in console, only from `LoadedMod`s. --- core/src/mindustry/mod/Scripts.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index 6d70437dbb..b862e89149 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -68,6 +68,10 @@ public class Scripts implements Disposable{ } public void run(LoadedMod mod, Fi file){ + new RequireBuilder() + .setModuleScriptProvider(new SoftCachingModuleScriptProvider( + new UrlModuleSourceProvider(Arrays.asList(new URI[] {file.child("scripts").file().toURI()}), null))) + .setSandboxed(true).createRequire(context, scope).install(scope); run(wrapper.replace("$SCRIPT_NAME$", mod.name + "/" + file.nameWithoutExtension()).replace("$CODE$", file.readString()).replace("$MOD_NAME$", mod.name), file.name()); } From 9da505119b2fad0456019a04f501e76ab0101a79 Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Thu, 30 Jan 2020 00:53:05 +0000 Subject: [PATCH 05/17] it compiles but cant find module help --- core/src/mindustry/mod/Scripts.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index b862e89149..b490928616 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -5,9 +5,13 @@ import arc.files.*; import arc.struct.*; import arc.util.*; import arc.util.Log.*; +import java.net.URI; +import java.util.Arrays; import mindustry.*; import mindustry.mod.Mods.*; import org.mozilla.javascript.*; +import org.mozilla.javascript.commonjs.module.*; +import org.mozilla.javascript.commonjs.module.provider.*; public class Scripts implements Disposable{ private final Array blacklist = Array.with("net", "files", "reflect", "javax", "rhino", "file", "channels", "jdk", From d872656bc5e68dc2fa6651ffaedcdcde41382e78 Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Fri, 31 Jan 2020 23:51:33 +0000 Subject: [PATCH 06/17] it works sorta! --- core/src/mindustry/mod/Scripts.java | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index b490928616..d8ca80d1dc 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -5,8 +5,9 @@ import arc.files.*; import arc.struct.*; import arc.util.*; import arc.util.Log.*; +import java.io.IOException; import java.net.URI; -import java.util.Arrays; +import java.net.URISyntaxException; import mindustry.*; import mindustry.mod.Mods.*; import org.mozilla.javascript.*; @@ -22,6 +23,7 @@ public class Scripts implements Disposable{ private final String wrapper; private Scriptable scope; private boolean errored; + public static LoadedMod loadedMod = null; public Scripts(){ Time.mark(); @@ -29,8 +31,12 @@ public class Scripts implements Disposable{ context = Vars.platform.getScriptContext(); context.setClassShutter(type -> !blacklist.contains(type.toLowerCase()::contains) || whitelist.contains(type.toLowerCase()::contains)); context.getWrapFactory().setJavaPrimitiveWrap(false); - + scope = new ImporterTopLevel(context); + + new RequireBuilder() + .setModuleScriptProvider(new SoftCachingModuleScriptProvider(new ScriptModuleProvider())) + .setSandboxed(true).createRequire(context, scope).install(scope); wrapper = Core.files.internal("scripts/wrapper.js").readString(); if(!run(Core.files.internal("scripts/global.js").readString(), "global.js")){ @@ -72,10 +78,7 @@ public class Scripts implements Disposable{ } public void run(LoadedMod mod, Fi file){ - new RequireBuilder() - .setModuleScriptProvider(new SoftCachingModuleScriptProvider( - new UrlModuleSourceProvider(Arrays.asList(new URI[] {file.child("scripts").file().toURI()}), null))) - .setSandboxed(true).createRequire(context, scope).install(scope); + loadedMod = mod; run(wrapper.replace("$SCRIPT_NAME$", mod.name + "/" + file.nameWithoutExtension()).replace("$CODE$", file.readString()).replace("$MOD_NAME$", mod.name), file.name()); } @@ -93,4 +96,18 @@ public class Scripts implements Disposable{ public void dispose(){ Context.exit(); } + + private class ScriptModuleProvider extends UrlModuleSourceProvider{ + public ScriptModuleProvider(){ + super(null, null); + } + + @Override + public ModuleSource loadSource(String moduleId, Scriptable paths, Object validator) throws IOException, URISyntaxException{ + if(loadedMod == null) return null; + Fi module = Scripts.loadedMod.root.child("scripts").child(moduleId + ".js"); + if(!module.exists() || module.isDirectory()) return null; + return new ModuleSource(module.reader(), null, module.file().toURI(), null, validator); + } + } } From e1a215ae0b6ccdf48c88ef25096291e462e70086 Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Sat, 1 Feb 2020 01:18:18 +0000 Subject: [PATCH 07/17] wrapper works now --- core/src/mindustry/mod/Scripts.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index d8ca80d1dc..07edc2ace4 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -5,7 +5,8 @@ import arc.files.*; import arc.struct.*; import arc.util.*; import arc.util.Log.*; -import java.io.IOException; + +import java.io.*; import java.net.URI; import java.net.URISyntaxException; import mindustry.*; @@ -23,7 +24,7 @@ public class Scripts implements Disposable{ private final String wrapper; private Scriptable scope; private boolean errored; - public static LoadedMod loadedMod = null; + private LoadedMod loadedMod = null; public Scripts(){ Time.mark(); @@ -79,7 +80,7 @@ public class Scripts implements Disposable{ public void run(LoadedMod mod, Fi file){ loadedMod = mod; - run(wrapper.replace("$SCRIPT_NAME$", mod.name + "/" + file.nameWithoutExtension()).replace("$CODE$", file.readString()).replace("$MOD_NAME$", mod.name), file.name()); + run(fillWrapper(file), file.name()); } private boolean run(String script, String file){ @@ -92,6 +93,12 @@ public class Scripts implements Disposable{ } } + private String fillWrapper(Fi file){ + return wrapper.replace("$SCRIPT_NAME$", loadedMod.name + "/" + file.nameWithoutExtension()) + .replace("$CODE$", file.readString()) + .replace("$MOD_NAME$", loadedMod.name); + } + @Override public void dispose(){ Context.exit(); @@ -105,9 +112,11 @@ public class Scripts implements Disposable{ @Override public ModuleSource loadSource(String moduleId, Scriptable paths, Object validator) throws IOException, URISyntaxException{ if(loadedMod == null) return null; - Fi module = Scripts.loadedMod.root.child("scripts").child(moduleId + ".js"); + Fi module = loadedMod.root.child("scripts").child(moduleId + ".js"); if(!module.exists() || module.isDirectory()) return null; - return new ModuleSource(module.reader(), null, module.file().toURI(), null, validator); + return new ModuleSource( + new InputStreamReader(new ByteArrayInputStream((fillWrapper(module)).getBytes())), + null, module.file().toURI(), null, validator); } } } From a45a14025d785dc8a796747c4d2fee8d425cfedf Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Sat, 1 Feb 2020 18:26:38 +0000 Subject: [PATCH 08/17] oops --- core/src/mindustry/mod/Scripts.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index 07edc2ace4..bcea674a1c 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -81,6 +81,7 @@ public class Scripts implements Disposable{ public void run(LoadedMod mod, Fi file){ loadedMod = mod; run(fillWrapper(file), file.name()); + loadedMod = null; } private boolean run(String script, String file){ From 51bc5c3b74a11bfd1ae41d263f3e124ec3c4b0d6 Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Sat, 1 Feb 2020 18:28:25 +0000 Subject: [PATCH 09/17] local changes --- core/src/mindustry/mod/Scripts.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index bcea674a1c..c1791446ef 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -117,7 +117,7 @@ public class Scripts implements Disposable{ if(!module.exists() || module.isDirectory()) return null; return new ModuleSource( new InputStreamReader(new ByteArrayInputStream((fillWrapper(module)).getBytes())), - null, module.file().toURI(), null, validator); + null, new URI(moduleId), module.parent().file().toURI(), validator); } } } From 4c45716149327846debb077a83b83e417aa71a2f Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sun, 2 Feb 2020 02:49:47 +0000 Subject: [PATCH 10/17] first part of what cat wants --- core/src/mindustry/mod/Mods.java | 2 +- core/src/mindustry/mod/Scripts.java | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 9de67c14bb..bef3332ac2 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -317,7 +317,7 @@ public class Mods implements Loadable{ return result; } - private LoadedMod locateMod(String name){ + public LoadedMod locateMod(String name){ return mods.find(mod -> mod.enabled() && mod.name.equals(name)); } diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index c1791446ef..4a4af17133 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -9,6 +9,7 @@ import arc.util.Log.*; import java.io.*; import java.net.URI; import java.net.URISyntaxException; +import java.util.regex.*; import mindustry.*; import mindustry.mod.Mods.*; import org.mozilla.javascript.*; @@ -106,6 +107,7 @@ public class Scripts implements Disposable{ } private class ScriptModuleProvider extends UrlModuleSourceProvider{ + private Pattern directory = Pattern.compile("^(.+?)/(.+)"); public ScriptModuleProvider(){ super(null, null); } @@ -113,11 +115,27 @@ public class Scripts implements Disposable{ @Override public ModuleSource loadSource(String moduleId, Scriptable paths, Object validator) throws IOException, URISyntaxException{ if(loadedMod == null) return null; - Fi module = loadedMod.root.child("scripts").child(moduleId + ".js"); + return loadSource(loadedMod, moduleId, loadedMod.root.child("scripts"), validator); + } + + private ModuleSource loadSource(LoadedMod mod, String moduleId, Fi root, Object validator) throws IOException, URISyntaxException{ + Matcher matched = directory.matcher(moduleId); + if(matched.find()){ + LoadedMod required = Vars.mods.locateMod(matched.group(1)); + String script = matched.group(2); + if(required == null || root == required.root.child("scripts")){ // Mod not found, or already using a mod + Fi dir = root.child(matched.group(1)); + if(dir == null) return null; // Mod and folder not found + return loadSource(mod, script, dir, validator); + } + return loadSource(required, script, required.root.child("scripts"), validator); + } + + Fi module = root.child(moduleId + ".js"); if(!module.exists() || module.isDirectory()) return null; return new ModuleSource( new InputStreamReader(new ByteArrayInputStream((fillWrapper(module)).getBytes())), - null, new URI(moduleId), module.parent().file().toURI(), validator); + null, new URI(moduleId), root.file().toURI(), validator); } } } From 49ab7ceb77cab154218f5950eee61fe8e3a86c5c Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sun, 2 Feb 2020 12:44:37 +0000 Subject: [PATCH 11/17] main.js required now --- core/src/mindustry/mod/Mods.java | 50 ++++++++++++-------------------- 1 file changed, 18 insertions(+), 32 deletions(-) diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index bef3332ac2..51bfc09567 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -460,38 +460,24 @@ public class Mods implements Loadable{ eachEnabled(mod -> { if(mod.root.child("scripts").exists()){ content.setCurrentMod(mod); - if(mod.meta.mainScript == null){ - mod.scripts = mod.root.child("scripts").findAll(f -> f.extension().equals("js")); - Log.debug("[{0}] Found {1} scripts.", mod.meta.name, mod.scripts.size); - - for(Fi file : mod.scripts){ - try{ - if(scripts == null){ - scripts = platform.createScripts(); - } - scripts.run(mod, file); - }catch(Throwable e){ - Core.app.post(() -> { - Log.err("Error loading script {0} for mod {1}.", file.name(), mod.meta.name); - e.printStackTrace(); - }); - break; - } - } - }else{ - Fi file = mod.root.child("scripts").child(mod.meta.mainScript + ".js"); - try{ - if(scripts == null){ - scripts = platform.createScripts(); - } - scripts.run(mod, file); - }catch(Throwable e){ - Core.app.post(() -> { - Log.err("Error loading main script {0} for mod {1}.", file.name(), mod.meta.name); - e.printStackTrace(); - }); - } - } + Fi main = mod.root.child("scripts").child("main.js"); + if(main.exists() && !main.isDirectory()){ + try{ + if(scripts == null){ + scripts = platform.createScripts(); + } + scripts.run(mod, main); + }catch(Throwable e){ + Core.app.post(() -> { + Log.err("Error loading main script {0} for mod {1}.", main.name(), mod.meta.name); + e.printStackTrace(); + }); + } + }else{ + Core.app.post(() -> { + Log.err("No main.js found for mod {1}.", mod.meta.name); + }); + } } }); }finally{ From d84217300cafd63ad5dd6dd674b8dbaf8fd2379f Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sun, 2 Feb 2020 12:58:00 +0000 Subject: [PATCH 12/17] fixed error message --- core/src/mindustry/mod/Mods.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 51bfc09567..c50bddb839 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -475,7 +475,7 @@ public class Mods implements Loadable{ } }else{ Core.app.post(() -> { - Log.err("No main.js found for mod {1}.", mod.meta.name); + Log.err("No main.js found for mod {0}.", mod.meta.name); }); } } From b93692ad41db8d3be1b9a482b1b89d885bcdf397 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sun, 2 Feb 2020 13:40:38 +0000 Subject: [PATCH 13/17] yes --- core/src/mindustry/mod/Scripts.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index 4a4af17133..8062c9cdc2 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -131,7 +131,7 @@ public class Scripts implements Disposable{ return loadSource(required, script, required.root.child("scripts"), validator); } - Fi module = root.child(moduleId + ".js"); + Fi module = root.child(moduleId + ".js"); if(!module.exists() || module.isDirectory()) return null; return new ModuleSource( new InputStreamReader(new ByteArrayInputStream((fillWrapper(module)).getBytes())), From c458c77322a4b2a73cd4a43a70ad4401a8d8cdf9 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sun, 2 Feb 2020 13:40:53 +0000 Subject: [PATCH 14/17] cleanup --- core/src/mindustry/mod/Scripts.java | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index 8062c9cdc2..ad67fb3b8d 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -107,7 +107,7 @@ public class Scripts implements Disposable{ } private class ScriptModuleProvider extends UrlModuleSourceProvider{ - private Pattern directory = Pattern.compile("^(.+?)/(.+)"); + private Pattern directory = Pattern.compile("^(.+?)/(.+)"); public ScriptModuleProvider(){ super(null, null); } @@ -119,19 +119,19 @@ public class Scripts implements Disposable{ } private ModuleSource loadSource(LoadedMod mod, String moduleId, Fi root, Object validator) throws IOException, URISyntaxException{ - Matcher matched = directory.matcher(moduleId); - if(matched.find()){ - LoadedMod required = Vars.mods.locateMod(matched.group(1)); - String script = matched.group(2); - if(required == null || root == required.root.child("scripts")){ // Mod not found, or already using a mod - Fi dir = root.child(matched.group(1)); - if(dir == null) return null; // Mod and folder not found - return loadSource(mod, script, dir, validator); - } - return loadSource(required, script, required.root.child("scripts"), validator); - } + Matcher matched = directory.matcher(moduleId); + if(matched.find()){ + LoadedMod required = Vars.mods.locateMod(matched.group(1)); + String script = matched.group(2); + if(required == null || root == required.root.child("scripts")){ // Mod not found, or already using a mod + Fi dir = root.child(matched.group(1)); + if(dir == null) return null; // Mod and folder not found + return loadSource(mod, script, dir, validator); + } + return loadSource(required, script, required.root.child("scripts"), validator); + } - Fi module = root.child(moduleId + ".js"); + Fi module = root.child(moduleId + ".js"); if(!module.exists() || module.isDirectory()) return null; return new ModuleSource( new InputStreamReader(new ByteArrayInputStream((fillWrapper(module)).getBytes())), From a9f07f360329c23e52111bf18b3300f6f28512b6 Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Sun, 2 Feb 2020 15:49:10 +0000 Subject: [PATCH 15/17] formatting --- core/src/mindustry/mod/Mods.java | 36 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index c50bddb839..ac9e2cd099 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -460,24 +460,24 @@ public class Mods implements Loadable{ eachEnabled(mod -> { if(mod.root.child("scripts").exists()){ content.setCurrentMod(mod); - Fi main = mod.root.child("scripts").child("main.js"); - if(main.exists() && !main.isDirectory()){ - try{ - if(scripts == null){ - scripts = platform.createScripts(); - } - scripts.run(mod, main); - }catch(Throwable e){ - Core.app.post(() -> { - Log.err("Error loading main script {0} for mod {1}.", main.name(), mod.meta.name); - e.printStackTrace(); - }); - } - }else{ - Core.app.post(() -> { - Log.err("No main.js found for mod {0}.", mod.meta.name); - }); - } + Fi main = mod.root.child("scripts").child("main.js"); + if(main.exists() && !main.isDirectory()){ + try{ + if(scripts == null){ + scripts = platform.createScripts(); + } + scripts.run(mod, main); + }catch(Throwable e){ + Core.app.post(() -> { + Log.err("Error loading main script {0} for mod {1}.", main.name(), mod.meta.name); + e.printStackTrace(); + }); + } + }else{ + Core.app.post(() -> { + Log.err("No main.js found for mod {0}.", mod.meta.name); + }); + } } }); }finally{ From 4709b5dddc6ed65a9ded313ec1277b3e5bbda32d Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Mon, 3 Feb 2020 18:35:24 +0000 Subject: [PATCH 16/17] remove old mainScript, it is always main.js --- core/src/mindustry/mod/Mods.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index ac9e2cd099..aa3c2fc0cd 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -795,7 +795,7 @@ public class Mods implements Loadable{ /** Plugin metadata information.*/ public static class ModMeta{ - public String name, displayName, author, description, version, main, minGameVersion, mainScript; + public String name, displayName, author, description, version, main, minGameVersion; public Array dependencies = Array.with(); /** Hidden mods are only server-side or client-side, and do not support adding new content. */ public boolean hidden; From fea9f51513fa99c4d5c43395af2ce3d4d23acb7b Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Mon, 3 Feb 2020 18:36:17 +0000 Subject: [PATCH 17/17] !dir.exists() and new line --- core/src/mindustry/mod/Scripts.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index ad67fb3b8d..3926e48496 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -108,6 +108,7 @@ public class Scripts implements Disposable{ private class ScriptModuleProvider extends UrlModuleSourceProvider{ private Pattern directory = Pattern.compile("^(.+?)/(.+)"); + public ScriptModuleProvider(){ super(null, null); } @@ -125,7 +126,7 @@ public class Scripts implements Disposable{ String script = matched.group(2); if(required == null || root == required.root.child("scripts")){ // Mod not found, or already using a mod Fi dir = root.child(matched.group(1)); - if(dir == null) 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(required, script, required.root.child("scripts"), validator);