Fail stuck render captures

This commit is contained in:
2026-08-10 23:49:01 +01:00
parent 3294a2ef77
commit 89a971ebe3
@@ -28,6 +28,7 @@ import net.minecraft.world.item.ItemStack;
public final class RenderCatalogClient implements ClientModInitializer { public final class RenderCatalogClient implements ClientModInitializer {
private static final Gson GSON = new Gson(); private static final Gson GSON = new Gson();
private static final long CAPTURE_TIMEOUT_MILLIS = 120_000L;
private final List<RenderJob> jobs = new ArrayList<>(); private final List<RenderJob> jobs = new ArrayList<>();
private Path outputDir; private Path outputDir;
@@ -213,6 +214,7 @@ public final class RenderCatalogClient implements ClientModInitializer {
private final class RenderScreen extends Screen { private final class RenderScreen extends Screen {
private boolean captureQueued; private boolean captureQueued;
private long captureQueuedAtMillis;
private RenderScreen() { private RenderScreen() {
super(Component.literal("Rendering renameable items")); super(Component.literal("Rendering renameable items"));
@@ -220,10 +222,12 @@ public final class RenderCatalogClient implements ClientModInitializer {
private void markCaptureQueued() { private void markCaptureQueued() {
captureQueued = true; captureQueued = true;
captureQueuedAtMillis = System.currentTimeMillis();
} }
private void resetCaptureState() { private void resetCaptureState() {
captureQueued = false; captureQueued = false;
captureQueuedAtMillis = 0L;
} }
@Override @Override
@@ -234,6 +238,10 @@ public final class RenderCatalogClient implements ClientModInitializer {
if (currentJobIndex < jobs.size()) { if (currentJobIndex < jobs.size()) {
Minecraft client = Minecraft.getInstance(); Minecraft client = Minecraft.getInstance();
RenderJob job = jobs.get(currentJobIndex); RenderJob job = jobs.get(currentJobIndex);
if (captureQueued && captureQueuedAtMillis > 0L && System.currentTimeMillis() - captureQueuedAtMillis > CAPTURE_TIMEOUT_MILLIS) {
throw new RuntimeException("Timed out waiting for screenshot capture for " + job.outputPath());
}
ItemStack stack = createStack(job); ItemStack stack = createStack(job);
if (stack.isEmpty()) { if (stack.isEmpty()) {
client.execute(() -> advanceJob()); client.execute(() -> advanceJob());