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
|
@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");
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in new issue
Block a user