Pause path playback while resource pack is loading (closes #540)

This commit is contained in:
Jonas Herzig
2021-08-15 18:55:10 +02:00
parent 612a90681e
commit de3f4dab7e

View File

@@ -3,6 +3,7 @@ package com.replaymod.pathing.player;
import com.google.common.util.concurrent.ListenableFuture;
import com.replaymod.replay.ReplayHandler;
import com.replaymod.replaystudio.pathing.path.Timeline;
import net.minecraft.client.MinecraftClient;
/**
* Timeline player using the system time.
@@ -21,6 +22,9 @@ public class RealtimeTimelinePlayer extends AbstractTimelinePlayer {
*/
private long startTime;
private boolean loadingResources;
private long timeBeforeResourceLoading;
public RealtimeTimelinePlayer(ReplayHandler replayHandler) {
super(replayHandler);
}
@@ -28,6 +32,7 @@ public class RealtimeTimelinePlayer extends AbstractTimelinePlayer {
@Override
public ListenableFuture<Void> start(Timeline timeline) {
firstFrame = true;
loadingResources = false;
return super.start(timeline);
}
@@ -35,9 +40,25 @@ public class RealtimeTimelinePlayer extends AbstractTimelinePlayer {
public void onTick() {
if (secondFrame) {
secondFrame = false;
startTime = System.currentTimeMillis();
startTime = System.currentTimeMillis() - startOffset;
}
//#if MC>=11400
if (MinecraftClient.getInstance().getOverlay() != null) {
if (!loadingResources) {
timeBeforeResourceLoading = getTimePassed();
loadingResources = true;
}
super.onTick();
return;
} else if (loadingResources && !firstFrame) {
startTime = System.currentTimeMillis() - timeBeforeResourceLoading;
loadingResources = false;
}
//#endif
super.onTick();
if (firstFrame) {
firstFrame = false;
secondFrame = true;
@@ -46,6 +67,8 @@ public class RealtimeTimelinePlayer extends AbstractTimelinePlayer {
@Override
public long getTimePassed() {
return startOffset + (firstFrame ? 0 : System.currentTimeMillis() - startTime);
if (firstFrame) return 0;
if (loadingResources) return timeBeforeResourceLoading;
return System.currentTimeMillis() - startTime;
}
}