From 852139d936d6fcf312a7d2d5dcacc76560518c02 Mon Sep 17 00:00:00 2001 From: altrisi Date: Thu, 14 Jan 2021 02:57:39 +0100 Subject: [PATCH 1/3] Make split split lists in list of single elements list without delimiter --- src/main/java/carpet/script/language/DataStructures.java | 2 +- src/main/java/carpet/script/value/ListValue.java | 2 +- src/main/java/carpet/script/value/Value.java | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/script/language/DataStructures.java b/src/main/java/carpet/script/language/DataStructures.java index 90d02d99..59418de5 100644 --- a/src/main/java/carpet/script/language/DataStructures.java +++ b/src/main/java/carpet/script/language/DataStructures.java @@ -57,7 +57,7 @@ public class DataStructures { if (lv.size() == 1) { hwat = lv.get(0); - delimiter = StringValue.EMPTY; + delimiter = null; } else if (lv.size() == 2) { diff --git a/src/main/java/carpet/script/value/ListValue.java b/src/main/java/carpet/script/value/ListValue.java index c3b23438..d5662d11 100644 --- a/src/main/java/carpet/script/value/ListValue.java +++ b/src/main/java/carpet/script/value/ListValue.java @@ -355,7 +355,7 @@ public class ListValue extends AbstractListValue implements ContainerValueInterf for (Value val : this.items) { index++; - if (val.equals(delimiter)) + if (val.equals(delimiter) || delimiter == null) { result.items.add(ListValue.wrap(this.items.subList(startIndex, index-1))); startIndex = index; diff --git a/src/main/java/carpet/script/value/Value.java b/src/main/java/carpet/script/value/Value.java index b9ac965c..5f228c7d 100644 --- a/src/main/java/carpet/script/value/Value.java +++ b/src/main/java/carpet/script/value/Value.java @@ -193,7 +193,11 @@ public abstract class Value implements Comparable, Cloneable public Value split(Value delimiter) { - try + if (delimiter == null) + { + delimiter = StringValue.EMPTY; + } + try { return ListValue.wrap(Arrays.stream(getString().split(delimiter.getString())).map(StringValue::new).collect(Collectors.toList())); } From 9eea3b47a6d67da9eb0cc026dedf35922253dfdb Mon Sep 17 00:00:00 2001 From: altrisi Date: Thu, 14 Jan 2021 03:08:33 +0100 Subject: [PATCH 2/3] Actually return those lists --- src/main/java/carpet/script/value/ListValue.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/carpet/script/value/ListValue.java b/src/main/java/carpet/script/value/ListValue.java index d5662d11..7fd693eb 100644 --- a/src/main/java/carpet/script/value/ListValue.java +++ b/src/main/java/carpet/script/value/ListValue.java @@ -350,12 +350,17 @@ public class ListValue extends AbstractListValue implements ContainerValueInterf @Override public Value split(Value delimiter) { ListValue result = new ListValue(); + if (delimiter == null) + { + this.forEach(item -> result.items.add(of(item))); + return result; + } int startIndex = 0; int index = 0; for (Value val : this.items) { index++; - if (val.equals(delimiter) || delimiter == null) + if (val.equals(delimiter)) { result.items.add(ListValue.wrap(this.items.subList(startIndex, index-1))); startIndex = index; From ecbd7f1dd7def8ac1d9683a12dacdd3ce4f0d89e Mon Sep 17 00:00:00 2001 From: altrisi Date: Thu, 14 Jan 2021 20:40:31 +0100 Subject: [PATCH 3/3] Fix NbtIo crash when loading appdata --- src/main/java/carpet/script/bundled/FileModule.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/carpet/script/bundled/FileModule.java b/src/main/java/carpet/script/bundled/FileModule.java index 8c32034e..4684b0fa 100644 --- a/src/main/java/carpet/script/bundled/FileModule.java +++ b/src/main/java/carpet/script/bundled/FileModule.java @@ -76,9 +76,14 @@ public class FileModule extends Module } catch (IOException e) { - try + // Copy of NbtIo.read(File) because that's now client-side only + if (!file.exists()) { - return NbtIo.read(file); + return null; + } + try (DataInputStream in = new DataInputStream(new FileInputStream(file))) + { + return NbtIo.read(in); } catch (IOException ioException) {