Made chunk loading block independent from computer's performance

Fixed UI glitch in Survival caused by incorrect usage of the GL Manager
This commit is contained in:
Marius Metzger
2015-04-11 10:58:00 +02:00
parent 352fcbde4e
commit 96fa350bc6
5 changed files with 83 additions and 21 deletions

View File

@@ -4,10 +4,12 @@ import java.awt.image.BufferedImage;
import java.lang.reflect.Field;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiDownloadTerrain;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.ChunkRenderContainer;
import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.client.renderer.chunk.RenderChunk;
import net.minecraft.client.renderer.entity.RenderEntity;
import eu.crushedpixel.replaymod.ReplayMod;
import eu.crushedpixel.replaymod.chat.ChatMessageRequests;
import eu.crushedpixel.replaymod.chat.ChatMessageRequests.ChatMessageType;
@@ -57,6 +59,8 @@ public class ReplayProcess {
public static void startReplayProcess(boolean record) {
ReplayHandler.selectKeyframe(null);
firstTime = true;
isVideoRecording = record;
lastPosition = null;
motionSpline = null;
@@ -64,6 +68,8 @@ public class ReplayProcess {
timeLinear = null;
calculated = false;
requestFinish = false;
ReplayHandler.resetToleratedTimestamp();
ChatMessageRequests.initialize();
if(ReplayHandler.getPosKeyframeCount() < 2 && ReplayHandler.getTimeKeyframeCount() < 2) {
@@ -96,8 +102,6 @@ public class ReplayProcess {
ChatMessageRequests.addChatMessage("Replay started!", ChatMessageType.INFORMATION);
mc.renderGlobal.loadRenderers();
if(isVideoRecording()) {
MCTimerHandler.setTimerSpeed(1f);
MCTimerHandler.setPassiveTimer();
@@ -135,23 +139,50 @@ public class ReplayProcess {
pathTick(isVideoRecording(), justCheck);
}
private static float lastPartialTicks, lastRenderPartialTicks;
private static int lastTicks;
private static boolean resetTimer = false;
private static boolean firstTime = false;
private static void pathTick(boolean recording, boolean justCheck) {
if(ReplayHandler.isHurrying()) {
lastRealTime = System.currentTimeMillis();
return;
}
if(firstTime) {
firstTime = false;
lastPartialTicks = 100;
lastRenderPartialTicks = 100;
lastTicks = 100;
MCTimerHandler.setRenderPartialTicks(100);
MCTimerHandler.setPartialTicks(100);
MCTimerHandler.setTicks(100);
System.out.println(ReplayHandler.getReplayTime());
}
if(recording && ((ReplayMod.replaySettings.getWaitForChunks() && RenderChunk.renderChunksUpdated != 0) || mc.currentScreen instanceof GuiCancelRender)) {
MCTimerHandler.setTimerSpeed(0f);
MCTimerHandler.setPartialTicks(0f);
MCTimerHandler.setRenderPartialTicks(0f);
MCTimerHandler.setTicks(0);
if(!firstTime) {
MCTimerHandler.setTimerSpeed(0f);
MCTimerHandler.setPartialTicks(0f);
MCTimerHandler.setRenderPartialTicks(0f);
MCTimerHandler.setTicks(0);
resetTimer = true;
}
return;
} else if (recording && ReplayMod.replaySettings.getWaitForChunks()) {
MCTimerHandler.setTimerSpeed((float)lastSpeed);
//MCTimerHandler.setRenderPartialTicks(lastRenderPartialTicks);
if(resetTimer) {
MCTimerHandler.setPartialTicks(lastPartialTicks);
MCTimerHandler.setRenderPartialTicks(lastRenderPartialTicks);
MCTimerHandler.setTicks(lastTicks);
resetTimer = false;
}
}
if(justCheck) return;
if(recording) {
@@ -317,6 +348,10 @@ public class ReplayProcess {
EnchantmentTimer.increaseRecordingTime((1000/ReplayMod.replaySettings.getVideoFramerate()));
}
lastPartialTicks = MCTimerHandler.getPartialTicks();
lastRenderPartialTicks = MCTimerHandler.getRenderTicks();
lastTicks = MCTimerHandler.getTicks();
if(curTimestamp != null && curTimestamp != ReplayHandler.getDesiredTimestamp()) ReplayHandler.setReplayTime(curTimestamp);
//splinePos = (index of last entry + add) / total entries