From a840cadfb700d7ed70ebe6a6e650ae8f5b4ad440 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Fri, 14 Jun 2019 15:04:11 +0200 Subject: [PATCH] Fix camera event handler staying registered leading to lack of HUD When unloading the camera without killing it first (e.g. jumping back in time), the event handler wouldn't ever get unregistered. --- .../replaymod/replay/camera/CameraEntity.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/replaymod/replay/camera/CameraEntity.java b/src/main/java/com/replaymod/replay/camera/CameraEntity.java index 61382e9e..f59d2992 100755 --- a/src/main/java/com/replaymod/replay/camera/CameraEntity.java +++ b/src/main/java/com/replaymod/replay/camera/CameraEntity.java @@ -116,7 +116,7 @@ public class CameraEntity * Therefore we cannot register any event handlers directly in the CameraEntity class and * instead have this inner class. */ - private final EventHandler eventHandler = new EventHandler(); + private EventHandler eventHandler = new EventHandler(); public CameraEntity( MinecraftClient mcIn, @@ -525,10 +525,22 @@ public class CameraEntity @Override public void remove() { super.remove(); - eventHandler.unregister(); + if (eventHandler != null) { + eventHandler.unregister(); + eventHandler = null; + } } private void update() { + MinecraftClient mc = MinecraftClient.getInstance(); + if (mc.world != this.world) { + if (eventHandler != null) { + eventHandler.unregister(); + eventHandler = null; + } + return; + } + long now = System.currentTimeMillis(); long timePassed = now - lastControllerUpdate; cameraController.update(timePassed / 50f);