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
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)
throw new InternalExpressionException("Unable to locate package: "+name);
return module;
@@ -41,9 +41,9 @@ public class CarpetScriptServer
public final CarpetEventServer events;
private static final List<Module> bundledModuleData = new ArrayList<Module>(){{
add(new BundledModule("camera"));
add(new BundledModule("event_test"));
add(new BundledModule("stats_test"));
add(new BundledModule("camera", false));
add(new BundledModule("event_test", false));
add(new BundledModule("stats_test", false));
}};
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(
CarpetServer.minecraft_server.getLevelName(), "scripts");
@@ -81,10 +81,14 @@ public class CarpetScriptServer
{
return new FileModule(script);
}
if (allowLibraries && script.getName().equalsIgnoreCase(name+".scl"))
{
return new FileModule(script);
}
}
for (Module moduleData : bundledModuleData)
{
if (moduleData.getName().equalsIgnoreCase(name))
if (moduleData.getName().equalsIgnoreCase(name) && (allowLibraries || !moduleData.isLibrary()))
{
return moduleData;
}
@@ -99,7 +103,7 @@ public class CarpetScriptServer
{
for (Module mi : bundledModuleData)
{
moduleNames.add(mi.getName());
if (!mi.isLibrary()) moduleNames.add(mi.getName());
}
}
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
name = name.toLowerCase(Locale.ROOT);
Module module = getModule(name);
Module module = getModule(name, false);
if (module == null)
{
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)
{
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?
modules.put(module.getName(), 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
@@ -10,13 +10,15 @@ public class BundledModule extends Module
{
private String name;
private String code;
public BundledModule(String scriptName)
private boolean library;
public BundledModule(String scriptName, boolean isLibrary)
{
library = isLibrary;
try
{
name = scriptName.toLowerCase(Locale.ROOT);
code = IOUtils.toString(
getClass().getClassLoader().getResourceAsStream("assets/carpet/scripts/"+name+".sc"),
getClass().getClassLoader().getResourceAsStream("assets/carpet/scripts/"+name+(isLibrary?".scl":".sc")),
StandardCharsets.UTF_8
);
}
@@ -26,15 +28,13 @@ public class BundledModule extends Module
code = null;
}
}
@Override
public String getName()
{
return name;
}
@Override
public String getCode()
{
return code;
}
public boolean isLibrary() { return library; }
@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 code;
private boolean library;
public FileModule(File sourceFile)
{
library = sourceFile.getName().endsWith(".scl");
try
{
name = sourceFile.getName().replaceFirst("\\.sc","").toLowerCase(Locale.ROOT);
name = sourceFile.getName().replaceFirst("\\.scl?","").toLowerCase(Locale.ROOT);
code = new String(Files.readAllBytes(sourceFile.toPath()));
}
catch ( IOException e)
@@ -31,12 +33,6 @@ public class FileModule extends Module
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
public String getName()
{
@@ -50,9 +46,9 @@ public class FileModule extends Module
}
@Override
public boolean isInternal()
public boolean isLibrary()
{
return false;
return library;
}
//copied private method from net.minecraft.nbt.NbtIo.read()
@@ -14,7 +14,7 @@ public abstract class Module
{
public abstract String getName();
public abstract String getCode();
public boolean isInternal() {return true; }
public abstract boolean isLibrary();
public Tag getData(String file)
{