diff --git a/MinecraftClient/Protocol/ReplayHandler.cs b/MinecraftClient/Protocol/ReplayHandler.cs index 3e97cf8b..a759f7fe 100644 --- a/MinecraftClient/Protocol/ReplayHandler.cs +++ b/MinecraftClient/Protocol/ReplayHandler.cs @@ -31,6 +31,7 @@ namespace MinecraftClient.Protocol private BinaryWriter recordStream; private DateTime recordStartTime; private DateTime lastPacketTime; + private bool prepareCleanUp = false; private bool cleanedUp = false; private static bool logOutput = true; @@ -111,8 +112,7 @@ namespace MinecraftClient.Protocol { if (!cleanedUp) { - MetaData.duration = Convert.ToInt32((lastPacketTime - recordStartTime).TotalMilliseconds); - MetaData.SaveToFile(); + prepareCleanUp = true; CloseRecordStream(); CreateReplayFile(); cleanedUp = true; @@ -136,6 +136,9 @@ namespace MinecraftClient.Protocol { WriteLog("Creating replay file."); + MetaData.duration = Convert.ToInt32((lastPacketTime - recordStartTime).TotalMilliseconds); + MetaData.SaveToFile(); + using (Stream recordingFile = new FileStream(Path.Combine(temporaryCache, recordingTmpFileName), FileMode.Open)) { using (Stream metaDataFile = new FileStream(Path.Combine(temporaryCache, MetaData.MetaDataFileName), FileMode.Open)) @@ -163,7 +166,7 @@ namespace MinecraftClient.Protocol /// public void CreateBackupReplay(string replayFileName) { - if (cleanedUp) + if (cleanedUp || prepareCleanUp) return; WriteDebugLog("Creating backup replay file.");