Skip to content

Commit 2d3dcba

Browse files
committed
Terminate caster's debug sessions on death (close #64)
1 parent 39e83a6 commit 2d3dcba

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
1111
- Update zh_cn translations, by ChuijkYahus in [#60](https://github.com/object-Object/HexDebug/pull/60).
1212
- Source files can now be viewed after the hex that created them finishes debugging.
1313
- Removed the random prefix from source filenames.
14+
- Active debug sessions are now terminated on death.
1415

1516
### Fixed
1617

Common/src/main/kotlin/gay/object/hexdebug/adapter/DebugAdapter.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,19 @@ class DebugAdapter(val player: ServerPlayer) : IDebugProtocolServer {
151151
remoteProxy.terminated(TerminatedEventArguments())
152152
isConnected = false
153153
}
154-
for (debugger in debuggers.values.toList()) {
155-
debugger.debugEnv.terminate()
154+
forceTerminateAll()
155+
}
156+
157+
fun onDeath() {
158+
forceTerminateAll()
159+
}
160+
161+
private fun forceTerminateAll() {
162+
val debugEnvs = debuggers.values.map { it.debugEnv }
163+
debuggers.clear()
164+
threadIds.clear()
165+
for (debugEnv in debugEnvs) {
166+
debugEnv.terminate()
156167
}
157168
}
158169

Common/src/main/kotlin/gay/object/hexdebug/adapter/DebugAdapterManager.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package gay.`object`.hexdebug.adapter
22

33
import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
4+
import dev.architectury.event.EventResult
5+
import dev.architectury.event.events.common.EntityEvent
46
import dev.architectury.event.events.common.LifecycleEvent
57
import dev.architectury.event.events.common.PlayerEvent
68
import gay.`object`.hexdebug.HexDebug
@@ -24,6 +26,12 @@ object DebugAdapterManager {
2426
PlayerEvent.PLAYER_QUIT.register { player ->
2527
remove(player)
2628
}
29+
EntityEvent.LIVING_DEATH.register { entity, _ ->
30+
if (entity is ServerPlayer) {
31+
get(entity)?.onDeath()
32+
}
33+
EventResult.pass()
34+
}
2735
LifecycleEvent.SERVER_STOPPING.register {
2836
removeAll()
2937
}

Common/src/main/kotlin/gay/object/hexdebug/adapter/proxy/DebugProxyClient.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import dev.architectury.event.events.client.ClientPlayerEvent
44
import gay.`object`.hexdebug.HexDebug
55
import gay.`object`.hexdebug.config.HexDebugClientConfig
66
import gay.`object`.hexdebug.items.DebuggerItem
7+
import gay.`object`.hexdebug.items.EvaluatorItem
78
import gay.`object`.hexdebug.networking.msg.MsgDebugAdapterProxy
89
import io.ktor.network.selector.*
910
import io.ktor.network.sockets.*
@@ -57,8 +58,13 @@ data class DebugProxyClient(val input: InputStream, val output: OutputStream) {
5758
}
5859
ClientPlayerEvent.CLIENT_PLAYER_JOIN.register {
5960
DebuggerItem.debugStates.clear()
61+
EvaluatorItem.evalStates.clear()
6062
start()
6163
}
64+
ClientPlayerEvent.CLIENT_PLAYER_RESPAWN.register { _, _ ->
65+
DebuggerItem.debugStates.clear()
66+
EvaluatorItem.evalStates.clear()
67+
}
6268
ClientPlayerEvent.CLIENT_PLAYER_QUIT.register {
6369
stop()
6470
}

0 commit comments

Comments
 (0)