Allow replay to be started in sync mode (required for #349)
This commit is contained in:
@@ -225,7 +225,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
||||
/**
|
||||
* Whether we're currently reading packets from the login phase.
|
||||
*/
|
||||
private boolean loginPhase;
|
||||
private boolean loginPhase = true;
|
||||
|
||||
/**
|
||||
* Whether we need to restart the current replay. E.g. when jumping backwards in time
|
||||
|
||||
@@ -167,24 +167,34 @@ public class ReplayModReplay implements Module {
|
||||
}
|
||||
|
||||
public void startReplay(ReplayFile replayFile) throws IOException {
|
||||
startReplay(replayFile, true);
|
||||
startReplay(replayFile, true, true);
|
||||
}
|
||||
|
||||
public void startReplay(ReplayFile replayFile, boolean checkModCompat) throws IOException {
|
||||
public ReplayHandler startReplay(ReplayFile replayFile, boolean checkModCompat, boolean asyncMode) throws IOException {
|
||||
if (replayHandler != null) {
|
||||
replayHandler.endReplay();
|
||||
}
|
||||
if (checkModCompat) {
|
||||
ModCompat.ModInfoDifference modDifference = new ModCompat.ModInfoDifference(replayFile.getModInfo());
|
||||
if (!modDifference.getMissing().isEmpty() || !modDifference.getDiffering().isEmpty()) {
|
||||
new GuiModCompatWarning(this, replayFile, modDifference).display();
|
||||
return;
|
||||
GuiModCompatWarning screen = new GuiModCompatWarning(modDifference);
|
||||
screen.loadButton.onClick(() -> {
|
||||
try {
|
||||
startReplay(replayFile, false, asyncMode);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
screen.display();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
replayHandler = new ReplayHandler(replayFile, true);
|
||||
replayHandler = new ReplayHandler(replayFile, asyncMode);
|
||||
//#if MC>=11400
|
||||
KeyBinding.updateKeysByCode(); // see Mixin_ContextualKeyBindings
|
||||
//#endif
|
||||
|
||||
return replayHandler;
|
||||
}
|
||||
|
||||
public void forcefullyStopReplay() {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package com.replaymod.replay.gui.screen;
|
||||
|
||||
import com.replaymod.core.utils.ModCompat;
|
||||
import com.replaymod.replay.ReplayModReplay;
|
||||
import com.replaymod.replaystudio.data.ModInfo;
|
||||
import com.replaymod.replaystudio.replay.ReplayFile;
|
||||
import com.replaymod.replaystudio.util.I18n;
|
||||
import de.johni0702.minecraft.gui.container.AbstractGuiScreen;
|
||||
import de.johni0702.minecraft.gui.container.GuiPanel;
|
||||
@@ -14,7 +12,6 @@ import de.johni0702.minecraft.gui.layout.CustomLayout;
|
||||
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
|
||||
import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
public class GuiModCompatWarning extends AbstractGuiScreen<GuiModCompatWarning> {
|
||||
@@ -38,7 +35,7 @@ public class GuiModCompatWarning extends AbstractGuiScreen<GuiModCompatWarning>
|
||||
content.getListLayout().setSpacing(8);
|
||||
}
|
||||
|
||||
public GuiModCompatWarning(ReplayModReplay mod, ReplayFile replayFile, ModCompat.ModInfoDifference difference) {
|
||||
public GuiModCompatWarning(ModCompat.ModInfoDifference difference) {
|
||||
VerticalLayout.Data data = new VerticalLayout.Data(0.5);
|
||||
GuiPanel content = this.content.getListPanel();
|
||||
content.addElements(data, new GuiLabel().setI18nText("replaymod.gui.modwarning.message1"));
|
||||
@@ -82,13 +79,6 @@ public class GuiModCompatWarning extends AbstractGuiScreen<GuiModCompatWarning>
|
||||
}
|
||||
|
||||
cancelButton.onClick(() -> getMinecraft().openScreen(null));
|
||||
loadButton.onClick(() -> {
|
||||
try {
|
||||
mod.startReplay(replayFile, false);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user