From 035a60dae2e1b51faddeca24cbc8bf8eb0525e31 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Thu, 3 Jun 2021 22:17:15 +0200 Subject: [PATCH] fix infinite ticking after disconnect --- .../protocol/network/connection/PlayConnection.kt | 15 +++++++-------- .../bixilon/minosoft/util/task/time/TimeWorker.kt | 3 ++- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/PlayConnection.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/PlayConnection.kt index 12204ca24..2dcb82881 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/PlayConnection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/PlayConnection.kt @@ -79,7 +79,7 @@ class PlayConnection( private set private lateinit var entityTickTask: TimeWorkerTask - private lateinit var blockEntityTickTask: TimeWorkerTask + private lateinit var worldTickTask: TimeWorkerTask private lateinit var randomTickTask: TimeWorkerTask val collisionDetector = CollisionDetector(this) var retry = true @@ -124,18 +124,17 @@ class PlayConnection( if (CLI.getCurrentConnection() == null) { CLI.setCurrentConnection(this) } - entityTickTask = TimeWorkerTask(ProtocolDefinition.TICK_TIME / 5) { + entityTickTask = TimeWorker.addTask(TimeWorkerTask(ProtocolDefinition.TICK_TIME / 5) { for (entity in world.entities) { entity.tick() } - } - TimeWorker.addTask(entityTickTask) + }) - TimeWorker.addTask(TimeWorkerTask(ProtocolDefinition.TICK_TIME, maxDelayTime = ProtocolDefinition.TICK_TIME / 2) { + worldTickTask = TimeWorker.addTask(TimeWorkerTask(ProtocolDefinition.TICK_TIME, maxDelayTime = ProtocolDefinition.TICK_TIME / 2) { world.realTick() }) - TimeWorker.addTask(TimeWorkerTask(ProtocolDefinition.TICK_TIME, maxDelayTime = ProtocolDefinition.TICK_TIME / 2) { + randomTickTask = TimeWorker.addTask(TimeWorkerTask(ProtocolDefinition.TICK_TIME, maxDelayTime = ProtocolDefinition.TICK_TIME / 2) { world.randomTick() }) @@ -162,8 +161,8 @@ class PlayConnection( if (this::entityTickTask.isInitialized) { TimeWorker.removeTask(entityTickTask) } - if (this::blockEntityTickTask.isInitialized) { - TimeWorker.removeTask(blockEntityTickTask) + if (this::worldTickTask.isInitialized) { + TimeWorker.removeTask(worldTickTask) } if (this::randomTickTask.isInitialized) { TimeWorker.removeTask(randomTickTask) diff --git a/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorker.kt b/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorker.kt index 89fdf8c5c..a29cb4609 100644 --- a/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorker.kt +++ b/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorker.kt @@ -56,8 +56,9 @@ object TimeWorker { TASKS += task } - fun addTask(task: TimeWorkerTask) { + fun addTask(task: TimeWorkerTask): TimeWorkerTask { TASKS += task + return task } fun removeTask(task: TimeWorkerTask) {