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.
This commit is contained in:
Jonas Herzig
2019-06-14 15:04:11 +02:00
parent 2a08c11598
commit a840cadfb7

View File

@@ -116,7 +116,7 @@ public class CameraEntity
* Therefore we cannot register any event handlers directly in the CameraEntity class and * Therefore we cannot register any event handlers directly in the CameraEntity class and
* instead have this inner class. * instead have this inner class.
*/ */
private final EventHandler eventHandler = new EventHandler(); private EventHandler eventHandler = new EventHandler();
public CameraEntity( public CameraEntity(
MinecraftClient mcIn, MinecraftClient mcIn,
@@ -525,10 +525,22 @@ public class CameraEntity
@Override @Override
public void remove() { public void remove() {
super.remove(); super.remove();
eventHandler.unregister(); if (eventHandler != null) {
eventHandler.unregister();
eventHandler = null;
}
} }
private void update() { 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 now = System.currentTimeMillis();
long timePassed = now - lastControllerUpdate; long timePassed = now - lastControllerUpdate;
cameraController.update(timePassed / 50f); cameraController.update(timePassed / 50f);