Skip to content

Commit 240ca1a

Browse files
committed
Only update preview state once preview is rendering
1 parent 10e1fb7 commit 240ca1a

5 files changed

Lines changed: 13 additions & 3 deletions

File tree

src/main/java/me/voidxwalker/worldpreview/WorldPreview.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class WorldPreview implements ClientModInitializer {
2222
public static ClientPlayerEntity player;
2323
public static ClientWorld clientWord;
2424
public static boolean inPreview;
25+
public static boolean renderingPreview;
2526
public static BlockPos spawnPos;
2627
public static int kill=0;
2728
public static int playerSpawn;

src/main/java/me/voidxwalker/worldpreview/mixin/client/MinecraftClientMixin.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,14 @@ private void worldpreview_outputInWorldState(CallbackInfo info) {
144144
StateOutputHelper.outputState("inworld,gamescreenopen");
145145
}
146146
}
147+
148+
@Inject(method = "render", at = @At(value = "INVOKE", target="Lnet/minecraft/client/util/Window;swapBuffers()V", shift = At.Shift.AFTER))
149+
private void worldpreview_actuallyInPreview(boolean tick, CallbackInfo ci) {
150+
if (WorldPreview.inPreview && !WorldPreview.renderingPreview) {
151+
WorldPreview.renderingPreview = true;
152+
StateOutputHelper.outputState("previewing," + StateOutputHelper.loadingProgress);
153+
WorldPreview.log(Level.INFO, "Starting Preview at (" + WorldPreview.player.getX() + ", " + (double) Math.floor(WorldPreview.player.getY()) + ", " + WorldPreview.player.getZ() + ")");
154+
}
155+
}
156+
147157
}

src/main/java/me/voidxwalker/worldpreview/mixin/client/WorldGenerationProgressLoggerMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public abstract class WorldGenerationProgressLoggerMixin {
1818
private void worldpreview_outputGenerationState(ChunkPos pos, ChunkStatus status, CallbackInfo info) {
1919
// Using the getProgressPercentage to recalculate is slightly unoptimized but prevents needing to do locals capture, making it easier to port this mixin.
2020
StateOutputHelper.loadingProgress = MathHelper.clamp(getProgressPercentage(), 0, 100);
21-
StateOutputHelper.outputState((WorldPreview.inPreview ? "previewing," : "generating,") + StateOutputHelper.loadingProgress);
21+
StateOutputHelper.outputState((WorldPreview.renderingPreview ? "previewing," : "generating,") + StateOutputHelper.loadingProgress);
2222
}
2323

2424
@Shadow

src/main/java/me/voidxwalker/worldpreview/mixin/client/render/LevelLoadingScreenMixin.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,6 @@ public void worldpreview_render(MatrixStack matrices, int mouseX, int mouseY, fl
8989
WorldPreview.camera.update(WorldPreview.world, WorldPreview.player, this.client.options.perspective > 0, this.client.options.perspective == 2, 0.2F);
9090
WorldPreview.player.refreshPositionAndAngles(WorldPreview.player.getX(), WorldPreview.player.getY() - 1.5, WorldPreview.player.getZ(), 0.0F, 0.0F);
9191
WorldPreview.inPreview=true;
92-
StateOutputHelper.outputState("previewing," + StateOutputHelper.loadingProgress);
93-
WorldPreview.log(Level.INFO,"Starting Preview at ("+ WorldPreview.player.getX() + ", "+(double)Math.floor(WorldPreview.player.getY())+ ", "+ WorldPreview.player.getZ()+")");
9492
}
9593
MatrixStack matrixStack = new MatrixStack();
9694
matrixStack.peek().getModel().multiply(this.worldpreview_getBasicProjectionMatrix());

src/main/java/me/voidxwalker/worldpreview/mixin/server/MinecraftServerMixin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ public void worldpreview_kill(CallbackInfo ci){
137137
@Inject(method="runServer",at=@At(value="INVOKE",target="Lnet/minecraft/server/MinecraftServer;setupServer()Z",shift = At.Shift.AFTER), cancellable = true)
138138
public void worldpreview_kill2(CallbackInfo ci){
139139
WorldPreview.inPreview=false;
140+
WorldPreview.renderingPreview=false;
140141
LockSupport.unpark(((MinecraftClientMixin)MinecraftClient.getInstance()).invokeGetThread());
141142
if(WorldPreview.kill==1){
142143
ci.cancel();

0 commit comments

Comments
 (0)