diff --git a/src/main/java/com/replaymod/core/ReplayMod.java b/src/main/java/com/replaymod/core/ReplayMod.java index d9de8456..28879196 100755 --- a/src/main/java/com/replaymod/core/ReplayMod.java +++ b/src/main/java/com/replaymod/core/ReplayMod.java @@ -378,6 +378,18 @@ public class ReplayMod implements }); } + public void runSync(Runnable runnable) { + //#if MC>=11400 + if (mc.isOnThread()) { + //#else + //$$ if (mc.isCallingFromMinecraftThread()) { + //#endif + runnable.run(); + } else { + runLater(runnable); + } + } + /** * Set when the currently running code has been scheduled by runLater. * If this is the case, subsequent calls to runLater have to be delayed until all scheduled tasks have been diff --git a/src/main/java/com/replaymod/replay/ReplayHandler.java b/src/main/java/com/replaymod/replay/ReplayHandler.java index 927c5c01..53baaaae 100755 --- a/src/main/java/com/replaymod/replay/ReplayHandler.java +++ b/src/main/java/com/replaymod/replay/ReplayHandler.java @@ -162,7 +162,7 @@ public class ReplayHandler { channel.close(); // Force re-creation of camera entity by unloading the previous world - ReplayMod.instance.runLater(() -> { + ReplayMod.instance.runSync(() -> { //#if MC>=11300 mc.mouse.unlockCursor(); //#else