fix infinite ticking after disconnect

This commit is contained in:
Bixilon 2021-06-03 22:17:15 +02:00 committed by Lukas
parent cd5d438743
commit 035a60dae2
2 changed files with 9 additions and 9 deletions

View File

@ -79,7 +79,7 @@ class PlayConnection(
private set private set
private lateinit var entityTickTask: TimeWorkerTask private lateinit var entityTickTask: TimeWorkerTask
private lateinit var blockEntityTickTask: TimeWorkerTask private lateinit var worldTickTask: TimeWorkerTask
private lateinit var randomTickTask: TimeWorkerTask private lateinit var randomTickTask: TimeWorkerTask
val collisionDetector = CollisionDetector(this) val collisionDetector = CollisionDetector(this)
var retry = true var retry = true
@ -124,18 +124,17 @@ class PlayConnection(
if (CLI.getCurrentConnection() == null) { if (CLI.getCurrentConnection() == null) {
CLI.setCurrentConnection(this) CLI.setCurrentConnection(this)
} }
entityTickTask = TimeWorkerTask(ProtocolDefinition.TICK_TIME / 5) { entityTickTask = TimeWorker.addTask(TimeWorkerTask(ProtocolDefinition.TICK_TIME / 5) {
for (entity in world.entities) { for (entity in world.entities) {
entity.tick() 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() 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() world.randomTick()
}) })
@ -162,8 +161,8 @@ class PlayConnection(
if (this::entityTickTask.isInitialized) { if (this::entityTickTask.isInitialized) {
TimeWorker.removeTask(entityTickTask) TimeWorker.removeTask(entityTickTask)
} }
if (this::blockEntityTickTask.isInitialized) { if (this::worldTickTask.isInitialized) {
TimeWorker.removeTask(blockEntityTickTask) TimeWorker.removeTask(worldTickTask)
} }
if (this::randomTickTask.isInitialized) { if (this::randomTickTask.isInitialized) {
TimeWorker.removeTask(randomTickTask) TimeWorker.removeTask(randomTickTask)

View File

@ -56,8 +56,9 @@ object TimeWorker {
TASKS += task TASKS += task
} }
fun addTask(task: TimeWorkerTask) { fun addTask(task: TimeWorkerTask): TimeWorkerTask {
TASKS += task TASKS += task
return task
} }
fun removeTask(task: TimeWorkerTask) { fun removeTask(task: TimeWorkerTask) {