Skip to content

Commit 8bd9dca

Browse files
committed
Add default color override for pale oak leaves
1 parent 5591fac commit 8bd9dca

File tree

5 files changed

+50
-21
lines changed

5 files changed

+50
-21
lines changed

common/src/main/java/xyz/jpenilla/squaremap/common/config/Advanced.java

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,37 @@
11
package xyz.jpenilla.squaremap.common.config;
22

3-
import io.leangen.geantyref.TypeToken;
4-
import java.util.HashMap;
53
import java.util.List;
64
import java.util.Map;
7-
import org.spongepowered.configurate.ConfigurationNode;
85
import org.spongepowered.configurate.NodePath;
96
import org.spongepowered.configurate.transformation.ConfigurationTransformation;
107
import xyz.jpenilla.squaremap.common.data.DirectoryProvider;
118
import xyz.jpenilla.squaremap.common.util.ReflectionUtil;
129

1310
@SuppressWarnings("unused")
1411
public final class Advanced extends AbstractConfig {
15-
private static final int LATEST_VERSION = 3;
12+
private static final int LATEST_VERSION = 4;
1613

1714
Advanced(final DirectoryProvider directoryProvider) {
1815
super(directoryProvider.dataDirectory(), Advanced.class, "advanced.yml", LATEST_VERSION);
1916
}
2017

2118
@Override
2219
protected void addVersions(ConfigurationTransformation.VersionedBuilder versionedBuilder) {
23-
final ConfigurationTransformation oneToTwo = ConfigurationTransformation.builder()
24-
.addAction(NodePath.path("world-settings", "default", "color-overrides"), (path, node) -> {
25-
final TypeToken<Map<String, String>> type = new TypeToken<>() {};
26-
27-
final ConfigurationNode foliageNode = node.node("biomes", "foliage");
28-
final Map<String, String> foliageMap = foliageNode.get(type, new HashMap<>());
29-
foliageMap.put("minecraft:mangrove_swamp", "#6f9623");
30-
foliageNode.set(type, foliageMap);
20+
final NodePath defaultColorOverridesPath = NodePath.path("world-settings", "default", "color-overrides");
3121

32-
final ConfigurationNode blocksNode = node.node("blocks");
33-
final Map<String, String> blocksMap = blocksNode.get(type, new HashMap<>());
34-
blocksMap.put("minecraft:pink_petals", "#FFB4DB");
35-
blocksNode.set(type, blocksMap);
36-
return null;
37-
})
22+
final ConfigurationTransformation oneToTwo = ConfigurationTransformation.builder()
23+
.addAction(
24+
defaultColorOverridesPath.withAppendedChild("biomes").withAppendedChild("foliage"),
25+
Transformations.modifyStringMap(map -> {
26+
map.put("minecraft:mangrove_swamp", "#6f9623");
27+
})
28+
)
29+
.addAction(
30+
defaultColorOverridesPath.withAppendedChild("blocks"),
31+
Transformations.modifyStringMap(map -> {
32+
map.put("minecraft:pink_petals", "#FFB4DB");
33+
})
34+
)
3835
.build();
3936
final ConfigurationTransformation twoToThree = ConfigurationTransformation.builder()
4037
.addAction(NodePath.path("world-settings"), Transformations.eachMapChild(worldSection -> {
@@ -50,9 +47,17 @@ protected void addVersions(ConfigurationTransformation.VersionedBuilder versione
5047
);
5148
}))
5249
.build();
50+
final ConfigurationTransformation threeToFour = ConfigurationTransformation.builder()
51+
.addAction(
52+
defaultColorOverridesPath.withAppendedChild("blocks"),
53+
Transformations.modifyStringMap(map -> {
54+
map.put("minecraft:pale_oak_leaves", "#626760");
55+
}))
56+
.build();
5357

5458
versionedBuilder.addVersion(2, oneToTwo);
55-
versionedBuilder.addVersion(LATEST_VERSION, twoToThree);
59+
versionedBuilder.addVersion(3, twoToThree);
60+
versionedBuilder.addVersion(LATEST_VERSION, threeToFour);
5661
}
5762

5863
static Advanced config;

common/src/main/java/xyz/jpenilla/squaremap/common/config/Transformations.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package xyz.jpenilla.squaremap.common.config;
22

3+
import io.leangen.geantyref.TypeFactory;
34
import io.leangen.geantyref.TypeToken;
5+
import java.lang.reflect.Type;
6+
import java.util.HashMap;
47
import java.util.List;
58
import java.util.Map;
69
import java.util.Objects;
710
import java.util.Set;
11+
import java.util.function.Consumer;
812
import org.checkerframework.checker.nullness.qual.NonNull;
913
import org.checkerframework.checker.nullness.qual.Nullable;
1014
import org.checkerframework.framework.qual.DefaultQualifier;
@@ -34,6 +38,27 @@ static TransformAction eachMapChild(final CheckedConsumer<ConfigurationNode, Con
3438
};
3539
}
3640

41+
static TransformAction modifyStringMap(
42+
final Consumer<Map<String, String>> consumer
43+
) {
44+
return modifyMap(String.class, String.class, consumer);
45+
}
46+
47+
@SuppressWarnings("unchecked")
48+
static <K, V> TransformAction modifyMap(
49+
final Class<K> keyType,
50+
final Class<V> valueType,
51+
final Consumer<Map<K, V>> consumer
52+
) {
53+
return (path, node) -> {
54+
final Type type = TypeFactory.parameterizedClass(Map.class, keyType, valueType);
55+
final Map<K, V> map = (Map<K, V>) node.get(type, new HashMap<>());
56+
consumer.accept(map);
57+
node.set(type, map);
58+
return null;
59+
};
60+
}
61+
3762
// expects nodes to be round-trip representable as List<String> or Map<String, String>
3863
static void applyMapKeyOrListValueRenames(final List<ConfigurationNode> sections, final Map<Set<String>, String> renames) throws SerializationException {
3964
for (final ConfigurationNode sectionNode : sections) {

common/src/main/java/xyz/jpenilla/squaremap/common/config/WorldAdvanced.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ private void colorOverrideBlocksSettings() {
150150
Map.entry("minecraft:attached_pumpkin_stem", "#E0C71C"),
151151
Map.entry("minecraft:spruce_leaves", "#619961"),
152152
Map.entry("minecraft:birch_leaves", "#80A755"),
153+
Map.entry("minecraft:pale_oak_leaves", "#626760"),
153154
Map.entry("minecraft:lava", "#EA5C0F"),
154155
Map.entry("minecraft:glass", "#FFFFFF")
155156
)

common/src/main/java/xyz/jpenilla/squaremap/common/data/BiomeColors.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import xyz.jpenilla.squaremap.common.util.Colors;
2222
import xyz.jpenilla.squaremap.common.util.chunksnapshot.ChunkSnapshot;
2323

24-
// TODO(1.21.2): pale forest colors, general foliage colors (dark forest?)
2524
@DefaultQualifier(NonNull.class)
2625
public final class BiomeColors {
2726
private static final int BLOCKPOS_BIOME_CACHE_SIZE = 4096;

common/src/main/java/xyz/jpenilla/squaremap/common/util/AbstractFluidColorExporter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.spongepowered.configurate.yaml.YamlConfigurationLoader;
2020
import xyz.jpenilla.squaremap.common.data.DirectoryProvider;
2121

22-
// TODO(1.21.2): test fabric & neoforge
2322
@DefaultQualifier(NonNull.class)
2423
public abstract class AbstractFluidColorExporter {
2524
private final DirectoryProvider directoryProvider;

0 commit comments

Comments
 (0)