Merge branch 'master' into 1.15

This commit is contained in:
gnembon committed 2020-01-09 00:54:10 -04:00
commit d82ec46d30
6 files changed
+32 -32

No files matched your search

@@ -96,9 +96,9 @@ public class CarpetScriptHost extends ScriptHost
} }
@Override @Override
protected Module getModuleByName(String name) protected Module getModuleOrLibraryByName(String name)
{ {
Module module = scriptServer.getModule(name); Module module = scriptServer.getModule(name, true);
if (module == null || module.getCode() == null) if (module == null || module.getCode() == null)
throw new InternalExpressionException("Unable to locate package: "+name); throw new InternalExpressionException("Unable to locate package: "+name);
return module; return module;
@@ -41,9 +41,9 @@ public class CarpetScriptServer
public final CarpetEventServer events; public final CarpetEventServer events;
private static final List<Module> bundledModuleData = new ArrayList<Module>(){{ private static final List<Module> bundledModuleData = new ArrayList<Module>(){{
add(new BundledModule("camera")); add(new BundledModule("camera", false));
add(new BundledModule("event_test")); add(new BundledModule("event_test", false));
add(new BundledModule("stats_test")); add(new BundledModule("stats_test", false));
}}; }};
public CarpetScriptServer() public CarpetScriptServer()
@@ -69,7 +69,7 @@ public class CarpetScriptServer
} }
public Module getModule(String name) public Module getModule(String name, boolean allowLibraries)
{ {
File folder = CarpetServer.minecraft_server.getLevelStorage().resolveFile( File folder = CarpetServer.minecraft_server.getLevelStorage().resolveFile(
CarpetServer.minecraft_server.getLevelName(), "scripts"); CarpetServer.minecraft_server.getLevelName(), "scripts");
@@ -81,10 +81,14 @@ public class CarpetScriptServer
{ {
return new FileModule(script); return new FileModule(script);
} }
if (allowLibraries && script.getName().equalsIgnoreCase(name+".scl"))
{
return new FileModule(script);
}
} }
for (Module moduleData : bundledModuleData) for (Module moduleData : bundledModuleData)
{ {
if (moduleData.getName().equalsIgnoreCase(name)) if (moduleData.getName().equalsIgnoreCase(name) && (allowLibraries || !moduleData.isLibrary()))
{ {
return moduleData; return moduleData;
} }
@@ -99,7 +103,7 @@ public class CarpetScriptServer
{ {
for (Module mi : bundledModuleData) for (Module mi : bundledModuleData)
{ {
moduleNames.add(mi.getName()); if (!mi.isLibrary()) moduleNames.add(mi.getName());
} }
} }
File folder = CarpetServer.minecraft_server.getLevelStorage().resolveFile( File folder = CarpetServer.minecraft_server.getLevelStorage().resolveFile(
@@ -129,7 +133,7 @@ public class CarpetScriptServer
{ {
//TODO add per player modules to support player actions better on a server //TODO add per player modules to support player actions better on a server
name = name.toLowerCase(Locale.ROOT); name = name.toLowerCase(Locale.ROOT);
Module module = getModule(name); Module module = getModule(name, false);
if (module == null) if (module == null)
{ {
Messenger.m(source, "r Failed to add "+name+" app"); Messenger.m(source, "r Failed to add "+name+" app");
+2 -2
View File
@@ -93,7 +93,7 @@ public abstract class ScriptHost
public void importModule(Context c, String moduleName) public void importModule(Context c, String moduleName)
{ {
if (modules.containsKey(moduleName)) return; // aready imported if (modules.containsKey(moduleName)) return; // aready imported
Module module = getModuleByName(moduleName); Module module = getModuleOrLibraryByName(moduleName);
if (modules.containsKey(module.getName())) return; // aready imported, once again, in case some discrepancies in names? if (modules.containsKey(module.getName())) return; // aready imported, once again, in case some discrepancies in names?
modules.put(module.getName(), module); modules.put(module.getName(), module);
ModuleData data = new ModuleData(module); ModuleData data = new ModuleData(module);
@@ -134,7 +134,7 @@ public abstract class ScriptHost
} }
} }
protected abstract Module getModuleByName(String name); // this should be shell out in the executor protected abstract Module getModuleOrLibraryByName(String name); // this should be shell out in the executor
protected abstract void runModuleCode(Context c, Module module); // this should be shell out in the executor protected abstract void runModuleCode(Context c, Module module); // this should be shell out in the executor
@@ -10,13 +10,15 @@ public class BundledModule extends Module
{ {
private String name; private String name;
private String code; private String code;
public BundledModule(String scriptName) private boolean library;
public BundledModule(String scriptName, boolean isLibrary)
{ {
library = isLibrary;
try try
{ {
name = scriptName.toLowerCase(Locale.ROOT); name = scriptName.toLowerCase(Locale.ROOT);
code = IOUtils.toString( code = IOUtils.toString(
getClass().getClassLoader().getResourceAsStream("assets/carpet/scripts/"+name+".sc"), getClass().getClassLoader().getResourceAsStream("assets/carpet/scripts/"+name+(isLibrary?".scl":".sc")),
StandardCharsets.UTF_8 StandardCharsets.UTF_8
); );
} }
@@ -26,15 +28,13 @@ public class BundledModule extends Module
code = null; code = null;
} }
} }
@Override
public String getName()
{
return name;
}
@Override @Override
public String getCode() public boolean isLibrary() { return library; }
{
return code; @Override
} public String getName() { return name; }
@Override
public String getCode() { return code; }
} }
@@ -18,11 +18,13 @@ public class FileModule extends Module
{ {
private String name; private String name;
private String code; private String code;
private boolean library;
public FileModule(File sourceFile) public FileModule(File sourceFile)
{ {
library = sourceFile.getName().endsWith(".scl");
try try
{ {
name = sourceFile.getName().replaceFirst("\\.sc","").toLowerCase(Locale.ROOT); name = sourceFile.getName().replaceFirst("\\.scl?","").toLowerCase(Locale.ROOT);
code = new String(Files.readAllBytes(sourceFile.toPath())); code = new String(Files.readAllBytes(sourceFile.toPath()));
} }
catch ( IOException e) catch ( IOException e)
@@ -31,12 +33,6 @@ public class FileModule extends Module
code = null; code = null;
} }
} }
public FileModule fromName(String name)
{
File sourceFile = CarpetServer.minecraft_server.getLevelStorage().resolveFile(
CarpetServer.minecraft_server.getLevelName(), "scripts/"+name+".sc");
return new FileModule(sourceFile);
}
@Override @Override
public String getName() public String getName()
{ {
@@ -50,9 +46,9 @@ public class FileModule extends Module
} }
@Override @Override
public boolean isInternal() public boolean isLibrary()
{ {
return false; return library;
} }
//copied private method from net.minecraft.nbt.NbtIo.read() //copied private method from net.minecraft.nbt.NbtIo.read()
@@ -14,7 +14,7 @@ public abstract class Module
{ {
public abstract String getName(); public abstract String getName();
public abstract String getCode(); public abstract String getCode();
public boolean isInternal() {return true; } public abstract boolean isLibrary();
public Tag getData(String file) public Tag getData(String file)
{ {