Skip to content

Commit b56ae6d

Browse files
committed
ColorManager: Fix colours being parsed as ints and not hex strings
1 parent 77cde5b commit b56ae6d

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

common/src/main/java/juuxel/adorn/client/resources/ColorManager.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ protected void apply(Map<Identifier, List<JsonObject>> prepared, ResourceManager
6868
for (var json : jsons) {
6969
var partialPalette = PALETTE_CODEC.parse(JsonOps.INSTANCE, json).get()
7070
.map(Function.identity(), partial -> {
71-
LOGGER.error("[Adorn] Could not parse color palette {}", id);
71+
LOGGER.error("[Adorn] Could not parse color palette {}: {}", id, partial.message());
7272
return null;
7373
});
7474
if (partialPalette == null) continue;
@@ -106,13 +106,14 @@ private static DataResult<Integer> parseHexColor(String str) {
106106
public record ColorPair(int bg, int fg) {
107107
private static final int DEFAULT_FG = Colors.SCREEN_TEXT;
108108

109+
private static final Codec<Integer> COLOR_CODEC =
110+
Codec.STRING.comapFlatMap(ColorManager::parseHexColor, color -> HexFormat.of().withUpperCase().toHexDigits(color));
109111
public static final Codec<ColorPair> CODEC = Codecs.alternatively(
110112
RecordCodecBuilder.create(instance -> instance.group(
111-
Codec.INT.fieldOf("bg").forGetter(ColorPair::bg),
112-
Codec.INT.optionalFieldOf("fg", DEFAULT_FG).forGetter(ColorPair::bg)
113+
COLOR_CODEC.fieldOf("bg").forGetter(ColorPair::bg),
114+
COLOR_CODEC.optionalFieldOf("fg", DEFAULT_FG).forGetter(ColorPair::bg)
113115
).apply(instance, ColorPair::new)),
114-
Codec.STRING.comapFlatMap(ColorManager::parseHexColor, color -> HexFormat.of().withUpperCase().toHexDigits(color))
115-
.xmap(bg -> new ColorPair(bg, DEFAULT_FG), ColorPair::bg)
116+
COLOR_CODEC.xmap(bg -> new ColorPair(bg, DEFAULT_FG), ColorPair::bg)
116117
);
117118
}
118119
}

0 commit comments

Comments
 (0)