From 4b229a170da15e584473f48429df13e37ea38da8 Mon Sep 17 00:00:00 2001 From: Eclipse Date: Wed, 2 Jul 2025 11:23:04 +0000 Subject: [PATCH] Provide more info in pack report --- .../command/ItemSuggestionMapper.java | 3 +- .../command/PackGeneratorCommand.java | 1 - .../mapping/geyser/GeyserMappings.java | 4 +++ .../mixin/SplashRendererAccessor.java | 12 ++++++++ .../packgenerator/pack/BedrockPack.java | 29 ++++++++++++++++++- .../packgenerator/pack/BedrockTextures.java | 4 +++ .../geyser-mappings-generator.mixins.json | 3 +- 7 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/geysermc/packgenerator/mixin/SplashRendererAccessor.java diff --git a/src/main/java/org/geysermc/packgenerator/command/ItemSuggestionMapper.java b/src/main/java/org/geysermc/packgenerator/command/ItemSuggestionMapper.java index da031e8..082aa7e 100644 --- a/src/main/java/org/geysermc/packgenerator/command/ItemSuggestionMapper.java +++ b/src/main/java/org/geysermc/packgenerator/command/ItemSuggestionMapper.java @@ -11,13 +11,14 @@ import java.util.List; public final class ItemSuggestionMapper { private static final ItemSuggestionMapper INSTANCE = new ItemSuggestionMapper(); - private List remainingCommands = new ArrayList<>(); + private final List remainingCommands = new ArrayList<>(); private boolean waitingOnItem = false; private boolean waitingOnClear = false; private int mapped = 0; private ItemSuggestionMapper() {} + // TODO public boolean start(List commands) { if (remainingCommands.isEmpty()) { remainingCommands.addAll(commands); diff --git a/src/main/java/org/geysermc/packgenerator/command/PackGeneratorCommand.java b/src/main/java/org/geysermc/packgenerator/command/PackGeneratorCommand.java index d4db82d..30d53e1 100644 --- a/src/main/java/org/geysermc/packgenerator/command/PackGeneratorCommand.java +++ b/src/main/java/org/geysermc/packgenerator/command/PackGeneratorCommand.java @@ -55,7 +55,6 @@ public class PackGeneratorCommand { .executes(context -> { if (!PackManager.getInstance().finish()) { context.getSource().sendError(Component.literal("Errors occurred whilst trying to write the pack to disk!")); - return -1; } context.getSource().sendFeedback(Component.literal("Wrote pack to disk")); return 0; diff --git a/src/main/java/org/geysermc/packgenerator/mapping/geyser/GeyserMappings.java b/src/main/java/org/geysermc/packgenerator/mapping/geyser/GeyserMappings.java index 33687c6..2132f41 100644 --- a/src/main/java/org/geysermc/packgenerator/mapping/geyser/GeyserMappings.java +++ b/src/main/java/org/geysermc/packgenerator/mapping/geyser/GeyserMappings.java @@ -49,6 +49,10 @@ public class GeyserMappings { mappings.put(item, mapping); } + public int size() { + return mappings.size(); + } + public void map(ItemStack stack, ProblemReporter reporter, Consumer mappingConsumer) { Optional patchedModel = stack.getComponentsPatch().get(DataComponents.ITEM_MODEL); //noinspection OptionalAssignedToNull - annoying Mojang diff --git a/src/main/java/org/geysermc/packgenerator/mixin/SplashRendererAccessor.java b/src/main/java/org/geysermc/packgenerator/mixin/SplashRendererAccessor.java new file mode 100644 index 0000000..4a23c40 --- /dev/null +++ b/src/main/java/org/geysermc/packgenerator/mixin/SplashRendererAccessor.java @@ -0,0 +1,12 @@ +package org.geysermc.packgenerator.mixin; + +import net.minecraft.client.gui.components.SplashRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SplashRenderer.class) +public interface SplashRendererAccessor { + + @Accessor + String getSplash(); +} diff --git a/src/main/java/org/geysermc/packgenerator/pack/BedrockPack.java b/src/main/java/org/geysermc/packgenerator/pack/BedrockPack.java index 0764811..7c4ffa1 100644 --- a/src/main/java/org/geysermc/packgenerator/pack/BedrockPack.java +++ b/src/main/java/org/geysermc/packgenerator/pack/BedrockPack.java @@ -2,6 +2,7 @@ package org.geysermc.packgenerator.pack; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.SplashRenderer; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ProblemReporter; import net.minecraft.world.item.ItemStack; @@ -10,6 +11,7 @@ import org.geysermc.packgenerator.CodecUtil; import org.geysermc.packgenerator.PackConstants; import org.geysermc.packgenerator.mapping.attachable.AttachableMapper; import org.geysermc.packgenerator.mapping.geyser.GeyserMappings; +import org.geysermc.packgenerator.mixin.SplashRendererAccessor; import org.geysermc.packgenerator.pack.attachable.BedrockAttachable; import org.jetbrains.annotations.NotNull; @@ -132,13 +134,38 @@ public class BedrockPack { } try { - Files.writeString(exportPath.resolve(REPORT_FILE), reporter.getTreeReport()); + Files.writeString(exportPath.resolve(REPORT_FILE), createPackSummary()); } catch (IOException exception) { // TODO log } return success; } + private String createPackSummary() { + return """ +-- PACK GENERATION REPORT -- +// %s + +Generated pack: %s +Mappings written: %d +Item texture atlas size: %d +Attachables: %d +Textures tried to export: %d + +-- PROBLEM REPORT -- +%s +""".formatted(randomSummaryComment(), name, mappings.size(), itemTextures.build().size(), + attachables.size(), texturesToExport.size(), reporter.getTreeReport()); + } + + private static String randomSummaryComment() { + SplashRenderer splash = Minecraft.getInstance().getSplashManager().getSplash(); + if (splash == null) { + return "Undefined Undefined :("; + } + return ((SplashRendererAccessor) splash).getSplash(); + } + private static Path createPackDirectory(String name) throws IOException { Path path = EXPORT_DIRECTORY.resolve(name); CodecUtil.ensureDirectoryExists(path); diff --git a/src/main/java/org/geysermc/packgenerator/pack/BedrockTextures.java b/src/main/java/org/geysermc/packgenerator/pack/BedrockTextures.java index f118885..860f81b 100644 --- a/src/main/java/org/geysermc/packgenerator/pack/BedrockTextures.java +++ b/src/main/java/org/geysermc/packgenerator/pack/BedrockTextures.java @@ -22,6 +22,10 @@ public record BedrockTextures(Map textures) { return builder; } + public int size() { + return textures.size(); + } + public static Builder builder() { return new Builder(); } diff --git a/src/main/resources/geyser-mappings-generator.mixins.json b/src/main/resources/geyser-mappings-generator.mixins.json index 13f0d14..9d4aeee 100644 --- a/src/main/resources/geyser-mappings-generator.mixins.json +++ b/src/main/resources/geyser-mappings-generator.mixins.json @@ -11,7 +11,8 @@ "EntityRenderDispatcherAccessor", "SelectItemModelAccessor", "SelectItemModelMixin", - "SelectItemModelMixin$UnbakedSwitchMixin" + "SelectItemModelMixin$UnbakedSwitchMixin", + "SplashRendererAccessor" ], "injectors": { "defaultRequire": 1