Kick off render loop from client tick

This commit is contained in:
2026-08-11 00:14:21 +01:00
parent 1f94923ab4
commit 05e4380996
@@ -15,6 +15,7 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.Screenshot; import net.minecraft.client.Screenshot;
import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.GuiGraphicsExtractor;
@@ -35,6 +36,7 @@ public final class RenderCatalogClient implements ClientModInitializer {
private Path outputDir; private Path outputDir;
private int currentJobIndex; private int currentJobIndex;
private RenderScreen renderScreen; private RenderScreen renderScreen;
private boolean renderStarted;
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
@@ -64,6 +66,14 @@ public final class RenderCatalogClient implements ClientModInitializer {
client.setScreenAndShow(renderScreen); client.setScreenAndShow(renderScreen);
}); });
ClientTickEvents.END_CLIENT_TICK.register(tickedClient -> {
if (!renderStarted && tickedClient.screen == renderScreen) {
renderStarted = true;
System.out.println("[renderer] starting render loop from client tick");
renderCurrentJob(tickedClient, renderScreen);
}
});
Thread activationWatchdog = new Thread(() -> { Thread activationWatchdog = new Thread(() -> {
try { try {
Thread.sleep(SCREEN_ACTIVATION_TIMEOUT_MILLIS); Thread.sleep(SCREEN_ACTIVATION_TIMEOUT_MILLIS);