create_ponder_wonder

Exports Create ponders to disk.
git clone git://git.oshgnacknak.de/create_ponder_wonder.git
Log | Files | Refs | README

commit 51f269ca74c081b241d9dd4ed8aaf921c4bae70f
parent e9d8fceb80d65a5e11eead88a63729b031afc2e4
Author: Oshgnacknak <osh@oshgnacknak.de>
Date:   Sat, 10 Apr 2021 16:49:25 +0200

Remove old command

Diffstat:
Dsrc/main/java/de/oshgnacknak/create_ponder_wonder/PonderIndexer.java | 21---------------------
Msrc/main/java/de/oshgnacknak/create_ponder_wonder/RenderUtils.java | 2+-
Msrc/main/java/de/oshgnacknak/create_ponder_wonder/commands/AllCommands.java | 10+++++++---
Dsrc/main/java/de/oshgnacknak/create_ponder_wonder/commands/DumpPonsersCommand.java | 82-------------------------------------------------------------------------------
4 files changed, 8 insertions(+), 107 deletions(-)

diff --git a/src/main/java/de/oshgnacknak/create_ponder_wonder/PonderIndexer.java b/src/main/java/de/oshgnacknak/create_ponder_wonder/PonderIndexer.java @@ -1,21 +0,0 @@ -package de.oshgnacknak.create_ponder_wonder; - -import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderScene; - -import java.util.List; -import java.util.stream.Stream; - -public class PonderIndexer { - - private PonderIndexer() {} - - public static Stream<PonderScene> getPonders() { - return PonderRegistry.all - .values() - .stream() - .map(PonderRegistry::compile) - .flatMap(List::stream); - } - -} diff --git a/src/main/java/de/oshgnacknak/create_ponder_wonder/RenderUtils.java b/src/main/java/de/oshgnacknak/create_ponder_wonder/RenderUtils.java @@ -4,7 +4,6 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.FogRenderer; -import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.texture.NativeImage; import net.minecraft.client.shader.Framebuffer; import net.minecraft.util.ScreenShotHelper; @@ -61,4 +60,5 @@ public class RenderUtils { return ScreenShotHelper.createScreenshot(WIDTH, HEIGHT, fb); } + } diff --git a/src/main/java/de/oshgnacknak/create_ponder_wonder/commands/AllCommands.java b/src/main/java/de/oshgnacknak/create_ponder_wonder/commands/AllCommands.java @@ -11,8 +11,12 @@ public class AllCommands { public static void register(RegisterCommandsEvent event) { event.getDispatcher().register( literal("pw") - .then(argument("path", - StringArgumentType.greedyString()).executes(new DumpPonsersCommand())) - ); + .then(literal("start") + .then(argument("path", StringArgumentType.greedyString()) + .executes(new StartRenderingCommand())))); + event.getDispatcher().register( + literal("pw") + .then(literal("stop") + .executes(new StopRenderingCommand()))); } } \ No newline at end of file diff --git a/src/main/java/de/oshgnacknak/create_ponder_wonder/commands/DumpPonsersCommand.java b/src/main/java/de/oshgnacknak/create_ponder_wonder/commands/DumpPonsersCommand.java @@ -1,82 +0,0 @@ -package de.oshgnacknak.create_ponder_wonder.commands; - -import com.mojang.brigadier.Command; -import com.mojang.brigadier.arguments.StringArgumentType; -import com.mojang.brigadier.context.CommandContext; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.simibubi.create.foundation.ponder.PonderWonderUI; -import de.oshgnacknak.create_ponder_wonder.CreatePonderWonder; -import de.oshgnacknak.create_ponder_wonder.PonderIndexer; -import de.oshgnacknak.create_ponder_wonder.RenderUtils; -import io.netty.util.concurrent.GlobalEventExecutor; -import io.netty.util.concurrent.Promise; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.NativeImage; -import net.minecraft.command.CommandSource; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.concurrent.ExecutionException; - -public class DumpPonsersCommand implements Command<CommandSource> { - - private static final int FPS = 60; - private static final int MAX_FRAMES = 3; - private static final long MAX_PONDERS = 1; - - @Override - public int run(CommandContext<CommandSource> context) throws CommandSyntaxException { - String path = StringArgumentType.getString(context, "path"); - - PonderIndexer - .getPonders() - .limit(MAX_PONDERS) - .map(PonderWonderUI::new) - .forEach(ui -> renderPonderUI(path, ui)); - - return 0; - } - - private void renderPonderUI(String basePath, PonderWonderUI ponderWonderUI) { - try { - for (int frame = 0; frame < MAX_FRAMES; frame++) { - Promise<NativeImage> promise = renderFrame(ponderWonderUI, frame); - NativeImage img = promise.get(); - - Path path = Paths.get( - basePath, - CreatePonderWonder.MODID, - ponderWonderUI.getActiveScene().getString("out"), - String.format("%06d.png", frame)); - - Files.createDirectories(path.getParent()); - img.write(path); - - if (frame % 3 == 2) { - ponderWonderUI.tick(); - } - } - } catch (IOException | InterruptedException | ExecutionException e) { - CreatePonderWonder.LOGGER.error("Could not save image", e); - } - } - - private Promise<NativeImage> renderFrame(PonderWonderUI ponderWonderUI, int frame) { - Promise<NativeImage> promise = GlobalEventExecutor.INSTANCE.newPromise(); - - float pt = (frame % FPS) / (FPS / 3.0f); - Minecraft.getInstance().field_213275_aU.add(() -> { - try { - NativeImage img = RenderUtils.render(ms -> - ponderWonderUI.ponderWonderRenderWindow(ms, pt)); - promise.setSuccess(img); - } catch (Exception e) { - promise.setFailure(e); - } - }); - - return promise; - } -}