Skip to content

Commit 1533341

Browse files
committed
Scripts without the config element load succesfully.
Also added REGEX_SPLIT_TEXT (this is the only reason I increased the version number)
1 parent b6b7fe8 commit 1533341

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

src/main/java/io/github/techstreet/dfscript/script/Script.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.apache.logging.log4j.Logger;
3535

3636
public class Script {
37-
public static int scriptVersion = 3;
37+
public static int scriptVersion = 4;
3838

3939
private String name;
4040
private String owner;
@@ -359,7 +359,7 @@ public Script deserialize(JsonElement json, Type typeOfT, JsonDeserializationCon
359359
Script script = new Script(name, owner, serverId, parts, disabled, version);
360360
script.setDescription(description);
361361

362-
for (JsonElement element : object.get("config").getAsJsonArray()) {
362+
if (object.get("config") != null) for (JsonElement element : object.get("config").getAsJsonArray()) {
363363
ScriptNamedOption option = context.deserialize(element, ScriptNamedOption.class);
364364
script.addOption(script.getOptions().size(), option);
365365
}

src/main/java/io/github/techstreet/dfscript/script/ScriptMigrator.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ public static void migrate(Script script) {
2323
script.setVersion(3);
2424
}
2525

26+
if (script.getVersion() == 3) {
27+
script.replaceAction(ScriptActionType.SPLIT_TEXT, ScriptActionType.REGEX_SPLIT_TEXT);
28+
29+
script.setVersion(4);
30+
}
31+
2632
if (previousVer != script.getVersion()) {
2733
ScriptManager.LOGGER.info("Migrated script '" + script.getName() + "' from version " + previousVer + " to version " + script.getVersion() + "!");
2834
ScriptManager.getInstance().saveScript(script);

src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.nio.file.Path;
3636
import java.util.*;
3737
import java.util.function.Consumer;
38+
import java.util.regex.Pattern;
3839
import java.util.stream.Collectors;
3940

4041
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
@@ -1019,13 +1020,32 @@ public enum ScriptActionType {
10191020
String separator = ctx.value("Separator").asText();
10201021
List<ScriptValue> split = new ArrayList<>();
10211022

1022-
for (String s : text.split(separator)) {
1023+
for (String s : text.split(Pattern.quote(separator))) {
10231024
split.add(new ScriptTextValue(s));
10241025
}
10251026

10261027
ctx.context().setVariable(ctx.variable("Result").name(), new ScriptListValue(split));
10271028
})),
10281029

1030+
REGEX_SPLIT_TEXT(builder -> builder.name("Split Text by Regex")
1031+
.description("Splits a text into a list of texts\nusing a regex as a separator.")
1032+
.icon(Items.SHEARS, true)
1033+
.category(ScriptActionCategory.TEXTS)
1034+
.arg("Result", ScriptActionArgumentType.VARIABLE)
1035+
.arg("Text", ScriptActionArgumentType.TEXT)
1036+
.arg("Separator (Regex)", ScriptActionArgumentType.TEXT)
1037+
.action(ctx -> {
1038+
String text = ctx.value("Text").asText();
1039+
String separator = ctx.value("Separator (Regex)").asText();
1040+
List<ScriptValue> split = new ArrayList<>();
1041+
1042+
for (String s : text.split(separator)) {
1043+
split.add(new ScriptTextValue(s));
1044+
}
1045+
1046+
ctx.context().setVariable(ctx.variable("Result").name(), new ScriptListValue(split));
1047+
})),
1048+
10291049
STOP(builder -> builder.name("Stop Codeline")
10301050
.description("Stops the current codeline.")
10311051
.icon(Items.BARRIER)

0 commit comments

Comments
 (0)