From e95e92253701fc51060f1caa2f00b596afe2dda8 Mon Sep 17 00:00:00 2001 From: Eclipse Date: Thu, 16 Oct 2025 08:46:47 +0000 Subject: [PATCH] Log problems in datagen --- .../geysermc/rainbow/client/PackManager.java | 3 ++- .../rainbow/datagen/RainbowModelProvider.java | 9 ++++++++- .../geysermc/rainbow/pack/BedrockPack.java | 20 ++++++++++++------- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/client/src/main/java/org/geysermc/rainbow/client/PackManager.java b/client/src/main/java/org/geysermc/rainbow/client/PackManager.java index f3e92ab..4cba01b 100644 --- a/client/src/main/java/org/geysermc/rainbow/client/PackManager.java +++ b/client/src/main/java/org/geysermc/rainbow/client/PackManager.java @@ -3,6 +3,7 @@ package org.geysermc.rainbow.client; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.SplashRenderer; +import net.minecraft.util.ProblemReporter; import net.minecraft.util.RandomSource; import net.minecraft.util.StringUtil; import org.geysermc.rainbow.CodecUtil; @@ -81,7 +82,7 @@ public final class PackManager { } private static String createPackSummary(BedrockPack pack) { - String problems = pack.getReporter().getTreeReport(); + String problems = ((ProblemReporter.Collector) pack.getReporter()).getTreeReport(); if (StringUtil.isBlank(problems)) { problems = "Well that's odd... there's nothing here!"; } diff --git a/datagen/src/main/java/org/geysermc/rainbow/datagen/RainbowModelProvider.java b/datagen/src/main/java/org/geysermc/rainbow/datagen/RainbowModelProvider.java index c807130..c3c70f3 100644 --- a/datagen/src/main/java/org/geysermc/rainbow/datagen/RainbowModelProvider.java +++ b/datagen/src/main/java/org/geysermc/rainbow/datagen/RainbowModelProvider.java @@ -19,14 +19,18 @@ import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.util.ProblemReporter; import net.minecraft.world.item.Item; import net.minecraft.world.item.equipment.EquipmentAsset; +import org.geysermc.rainbow.Rainbow; import org.geysermc.rainbow.mapping.AssetResolver; import org.geysermc.rainbow.mapping.PackSerializer; import org.geysermc.rainbow.pack.BedrockPack; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.IOException; @@ -39,6 +43,8 @@ import java.util.Optional; import java.util.concurrent.CompletableFuture; public abstract class RainbowModelProvider extends FabricModelProvider { + private static final Logger PROBLEM_LOGGER = LoggerFactory.getLogger(Rainbow.MOD_ID); + private final CompletableFuture registries; private final Map, EquipmentClientInfo> equipmentInfos; private final Path outputRoot; @@ -84,7 +90,8 @@ public abstract class RainbowModelProvider extends FabricModelProvider { } protected BedrockPack.Builder createBedrockPack(Path outputRoot, PackSerializer serializer, AssetResolver resolver) { - return BedrockPack.builder("rainbow", outputRoot.resolve("geyser_mappings.json"), outputRoot.resolve("pack"), serializer, resolver); + return BedrockPack.builder("rainbow", outputRoot.resolve("geyser_mappings.json"), outputRoot.resolve("pack"), serializer, resolver) + .withReporter(path -> new ProblemReporter.ScopedCollector(path, PROBLEM_LOGGER)); } protected abstract Item getVanillaItem(Item modded); diff --git a/rainbow/src/main/java/org/geysermc/rainbow/pack/BedrockPack.java b/rainbow/src/main/java/org/geysermc/rainbow/pack/BedrockPack.java index 182855b..0cafc54 100644 --- a/rainbow/src/main/java/org/geysermc/rainbow/pack/BedrockPack.java +++ b/rainbow/src/main/java/org/geysermc/rainbow/pack/BedrockPack.java @@ -50,10 +50,10 @@ public class BedrockPack { private final IntSet customModelDataMapped = new IntOpenHashSet(); private final PackContext context; - private final ProblemReporter.Collector reporter; + private final ProblemReporter reporter; public BedrockPack(String name, PackManifest manifest, PackPaths paths, PackSerializer serializer, AssetResolver assetResolver, - Optional geometryRenderer, ProblemReporter.Collector reporter, + Optional geometryRenderer, ProblemReporter reporter, boolean reportSuccesses) { this.name = name; this.manifest = manifest; @@ -163,6 +163,12 @@ public class BedrockPack { } } + if (reporter instanceof AutoCloseable closeable) { + try { + closeable.close(); + } catch (Exception ignored) {} + } + return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)); } @@ -178,7 +184,7 @@ public class BedrockPack { return itemTextures.build().size(); } - public ProblemReporter.Collector getReporter() { + public ProblemReporter getReporter() { return reporter; } @@ -207,14 +213,14 @@ public class BedrockPack { private UnaryOperator itemAtlasPath = resolve(ITEM_ATLAS_FILE); private Path packZipFile = null; private GeometryRenderer geometryRenderer = null; - private ProblemReporter.Collector reporter; + private Function reporter; private boolean reportSuccesses = false; public Builder(String name, Path mappingsPath, Path packRootPath, PackSerializer packSerializer, AssetResolver assetResolver) { this.name = name; this.mappingsPath = mappingsPath; this.packRootPath = packRootPath; - this.reporter = new ProblemReporter.Collector(() -> "Bedrock pack " + name + " "); + this.reporter = ProblemReporter.Collector::new; this.packSerializer = packSerializer; this.assetResolver = assetResolver; manifest = defaultManifest(name); @@ -280,7 +286,7 @@ public class BedrockPack { return this; } - public Builder withReporter(ProblemReporter.Collector reporter) { + public Builder withReporter(Function reporter) { this.reporter = reporter; return this; } @@ -294,7 +300,7 @@ public class BedrockPack { PackPaths paths = new PackPaths(mappingsPath, packRootPath, attachablesPath.apply(packRootPath), geometryPath.apply(packRootPath), animationPath.apply(packRootPath), manifestPath.apply(packRootPath), itemAtlasPath.apply(packRootPath), Optional.ofNullable(packZipFile)); - return new BedrockPack(name, manifest, paths, packSerializer, assetResolver, Optional.ofNullable(geometryRenderer), reporter, reportSuccesses); + return new BedrockPack(name, manifest, paths, packSerializer, assetResolver, Optional.ofNullable(geometryRenderer), reporter.apply(() -> "Bedrock pack " + name + " "), reportSuccesses); } private static UnaryOperator resolve(Path child) {