Skip to content

Commit d029eaa

Browse files
committed
fix: Fix fabric config saving of ResourceLocation and Set types
1 parent 0109f14 commit d029eaa

File tree

2 files changed

+33
-19
lines changed

2 files changed

+33
-19
lines changed

fabric/src/main/java/net/blay09/mods/balm/fabric/config/notoml/NotomlSerializer.java

+29-19
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package net.blay09.mods.balm.fabric.config.notoml;
22

3+
import net.minecraft.resources.ResourceLocation;
4+
35
import java.io.IOException;
46
import java.io.Writer;
5-
import java.util.List;
7+
import java.util.Collection;
68
import java.util.Map;
79

810
public class NotomlSerializer {
@@ -44,7 +46,9 @@ private static String serializeToString(Notoml notoml) {
4446
} else {
4547
sb.append("\"").append(stringValue.replace("\"", "\\\"")).append("\"");
4648
}
47-
} else if (value instanceof List<?> listValue) {
49+
} else if (value instanceof ResourceLocation resourceLocationValue) {
50+
sb.append("\"").append(resourceLocationValue).append("\"");
51+
} else if (value instanceof Collection<?> listValue) {
4852
serializeList(listValue, sb);
4953
} else if (value instanceof Enum<?> enumValue) {
5054
sb.append("\"").append(enumValue.name()).append("\"");
@@ -59,31 +63,37 @@ private static String serializeToString(Notoml notoml) {
5963
return sb.toString();
6064
}
6165

62-
private static String serializeList(List<?> list, StringBuilder sb) {
66+
private static String serializeList(Collection<?> list, StringBuilder sb) {
6367
sb.append("[ ");
6468
boolean newLines = list.size() > 3;
65-
if (newLines) {
66-
sb.append("\n");
67-
}
68-
for (int i = 0; i < list.size(); i++) {
69-
if (newLines) {
70-
sb.append(" ");
71-
}
72-
if (list.get(i) instanceof String) {
73-
sb.append("\"").append(((String) list.get(i)).replace("\"", "\\\"")).append("\"");
74-
} else if (list.get(i) instanceof Enum<?>) {
75-
sb.append("\"").append(((Enum<?>) list.get(i)).name()).append("\"");
76-
} else {
77-
sb.append(list.get(i));
78-
}
79-
if (i != list.size() - 1) {
69+
var first = true;
70+
for (final var value : list) {
71+
if (!first) {
8072
sb.append(", ");
8173
}
74+
first = false;
75+
8276
if (newLines) {
8377
sb.append("\n");
8478
}
79+
if (newLines) {
80+
sb.append(" ");
81+
}
82+
if (value instanceof String stringValue) {
83+
sb.append("\"").append(stringValue.replace("\"", "\\\"")).append("\"");
84+
} else if (value instanceof ResourceLocation resourceLocationValue) {
85+
sb.append("\"").append(resourceLocationValue).append("\"");
86+
} else if (value instanceof Enum<?> enumValue) {
87+
sb.append("\"").append(enumValue.name()).append("\"");
88+
} else {
89+
sb.append(value);
90+
}
91+
}
92+
if (newLines) {
93+
sb.append("\n]");
94+
} else {
95+
sb.append(" ]");
8596
}
86-
sb.append(" ]");
8797
return sb.toString();
8898
}
8999

shared/src/main/java/net/blay09/mods/balm/config/ExampleConfigData.java

+4
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
import net.blay09.mods.balm.api.config.Comment;
55
import net.blay09.mods.balm.api.config.Config;
66
import net.blay09.mods.balm.api.config.ExpectedType;
7+
import net.minecraft.resources.ResourceLocation;
78

89
import java.util.Arrays;
910
import java.util.List;
11+
import java.util.Set;
1012

1113
@Config("balm")
1214
public class ExampleConfigData implements BalmConfigData {
@@ -24,6 +26,8 @@ public enum ExampleEnum {
2426
public ExampleEnum exampleEnum = ExampleEnum.Hello;
2527
@ExpectedType(String.class)
2628
public List<String> exampleStringList = Arrays.asList("Hello", "World");
29+
@ExpectedType(ResourceLocation.class)
30+
public Set<ResourceLocation> exampleResourceLocationSet = Set.of(new ResourceLocation("dirt"), new ResourceLocation("diamond"));
2731
@ExpectedType(Integer.class)
2832
public List<Integer> exampleIntList = Arrays.asList(12, 24);
2933
@ExpectedType(ExampleEnum.class)

0 commit comments

Comments
 (0)