Javadocs, cleanup, extension's client rules, built-in BundledModules generators, etc (#544)

* Add javadocs to many methods

* Added built-in ways to generate BundledModules and documented them

* Add Eclipse launch files to .gitignore and fix 11 warnings

* Remove many unused imports

* Remove some dead and unused code around app loading

* Allow extensions to have client-side rules in their SettingsManager

Also change tabs to spaces when those changed

* Remove unnecessary classloader param in BundledModule

* Change max tickwarp duration to Integer.MAX_VALUE

* Move RulePrinter into the source so it can be managed by the IDE

* Properly reset hopperCounters when changing worlds

Also change tabs to spaces again and minor tweaks to javadocs

* Run mergedocs even if Full.md was modified

* Update src/main/java/carpet/commands/TickCommand.java

Co-authored-by: gnembon <41132274+gnembon@users.noreply.github.com>
This commit is contained in:
altrisiandgnembon authored and GitHub committed 2020-11-16 09:30:59 -04:00
1 parent f444fab183
commit ba1071a8d1
35 files changed
+315 -91

No files matched your search

@@ -50,6 +50,13 @@ public class CarpetScriptServer
private static final List<Module> bundledModuleData = new ArrayList<>();
private static final List<Module> ruleModuleData = new ArrayList<>();
/**
* Registers a Scarpet App to be always available to be loaded
* in the /script load list.
* @see BundledModule#fromPath(ClassLoader, String, String, boolean)
*
* @param app The {@link BundledModule} of the app
*/
public static void registerBuiltInScript(BundledModule app)
{
bundledModuleData.add(app);
@@ -57,10 +64,11 @@ public class CarpetScriptServer
/**
* Registers a Scarpet App to be used as a Rule App
* (to be controlled with the value of a Carpet rule)
* (to be controlled with the value of a Carpet rule).
* Libraries should be registered with {@link #registerBuiltInScript(BundledModule)} instead
* @see BundledModule#fromPath(ClassLoader, String, String, boolean)
*
* @param app is the BundledModule of an app. Libraries
* should be registered as builtInScripts instead
* @param app The {@link BundledModule} of the app.
*/
public static void registerSettingsApp(BundledModule app) {
ruleModuleData.add(app);
@@ -214,13 +222,6 @@ public class CarpetScriptServer
// Messenger.m(source, "r Failed to add "+name+" app: invalid app config (via '__config()' function)");
// return false;
//}
if (module == null)
{
Messenger.m(source, "r Unable to locate the app, but created empty "+name+" app instead");
modules.put(name, newHost);
return true;
}
String code = module.getCode();
if (module.getCode() == null)
{
Messenger.m(source, "r Unable to load "+name+" app - not found");
-1
View File
@@ -1,7 +1,6 @@
package carpet.script;
import carpet.script.exception.ExpressionException;
import carpet.script.exception.InternalExpressionException;
import carpet.script.value.Value;
import java.util.ArrayList;
@@ -17,14 +17,46 @@ public class BundledModule extends Module
this.name = name;
this.code = code;
}
/**
* Creates a new {@link BundledModule} with an app located in Carpet's script storage.
* @param scriptName A {@link String} being the name of the script. The extension will be autocompleted
* @param isLibrary A {@link boolean} indicating whether or not the script is a library
* @return The created {@link BundledModule}
*/
public static BundledModule carpetNative(String scriptName, boolean isLibrary)
{
BundledModule module = new BundledModule(null, null, isLibrary);
try
{
module.name = scriptName.toLowerCase(Locale.ROOT);
return fromPath("assets/carpet/scripts/", scriptName, isLibrary);
}
/**
* Creates a new {@link BundledModule} with an app located at a specified place.
* @see #fromPathWithCustomName(ClassLoader, String, String, boolean)
*
* @param path A {@link String} being the path to the directory where the app is located.
* @param scriptName A {@link String} being the name of the script. The extension will be autocompleted
* @param isLibrary A {@link boolean} indicating whether or not the script is a library
* @return The created {@link BundledModule}
*/
public static BundledModule fromPath(String path, String scriptName, boolean isLibrary) {
return fromPathWithCustomName(path+scriptName+(isLibrary?".scl":".sc"), scriptName, isLibrary);
}
/**
* Creates a new {@link BundledModule} with an app located at the specified fullPath with a custom name.
* @see #fromPath(ClassLoader, String, String, boolean)
*
* @param fullPath A {@link String} being the full path to the app's code, including file and extension.
* @param scriptName A {@link String} being the custom name for the script.
* @param isLibrary A {@link boolean} indicating whether or not the script is a library
* @return The created {@link BundledModule}
*/
public static BundledModule fromPathWithCustomName(String fullPath, String customName, boolean isLibrary) {
BundledModule module = new BundledModule(null, null, isLibrary);
try
{
module.name = customName.toLowerCase(Locale.ROOT);
module.code = IOUtils.toString(
BundledModule.class.getClassLoader().getResourceAsStream("assets/carpet/scripts/"+scriptName+(isLibrary?".scl":".sc")),
BundledModule.class.getClassLoader().getResourceAsStream(fullPath),
StandardCharsets.UTF_8
);
}
@@ -1,7 +1,6 @@
package carpet.script.value;
import carpet.script.CarpetContext;
import carpet.script.LazyValue;
import carpet.script.exception.InternalExpressionException;
import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
@@ -13,7 +13,6 @@ import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.LongTag;
import net.minecraft.nbt.StringTag;
import net.minecraft.nbt.Tag;
import net.minecraft.util.registry.Registry;
import java.util.ArrayList;
import java.util.Arrays;
@@ -25,7 +24,6 @@ import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import static carpet.script.value.NBTSerializableValue.nameFromRegistryId;
import static java.lang.Math.abs;
public class ListValue extends AbstractListValue implements ContainerValueInterface
@@ -2,7 +2,6 @@ package carpet.script.value;
import carpet.script.Context;
import carpet.script.Expression;
import carpet.script.LazyValue;
import carpet.script.Tokenizer;
import carpet.script.exception.ExitStatement;
import carpet.script.exception.ExpressionException;