Merge branch 'master' into 1.15
This commit is contained in:
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");
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user