Skip to content

Commit fc77a19

Browse files
committed
feat: add removeVisualizer function and enhance visualizer cleanup
- Introduced `removeVisualizer` in `VisualizerManager` for better visualizer lifecycle management. - Updated `SurfVisualizerMultipleLocationsImpl` to automatically remove visualizers when world references are invalid. - Added `equals`, `hashCode`, and `toString` implementations for `SurfVisualizerAreaImpl` for improved object handling and debugging.
1 parent 5b3a8a1 commit fc77a19

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/visualizer/visualizer/SurfVisualizerAreaImpl.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,22 @@ class SurfVisualizerAreaImpl(
111111
delegate.addVisualLocation(it, settings)
112112
}
113113
}
114+
115+
override fun equals(other: Any?): Boolean {
116+
if (this === other) return true
117+
if (other !is SurfVisualizerAreaImpl) return false
118+
119+
if (delegate != other.delegate) return false
120+
121+
return true
122+
}
123+
124+
override fun hashCode(): Int {
125+
return delegate.hashCode()
126+
}
127+
128+
override fun toString(): String {
129+
return "SurfVisualizerAreaImpl(useHighestYBlock=$useHighestYBlock, corners=$corners, settings=$settings)"
130+
}
131+
114132
}

surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/visualizer/visualizer/SurfVisualizerMultipleLocationsImpl.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ class SurfVisualizerMultipleLocationsImpl(world: World) : AbstractSurfVisualizer
238238
viewerUuids.clear()
239239
log.atWarning()
240240
.log("World reference is no longer valid, stopping visualizer")
241+
VisualizerManager.removeVisualizer(this)
241242
return false
242243
}
243244
return true

surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/visualizer/visualizer/VisualizerManager.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ object VisualizerManager {
3636
}
3737
}
3838

39+
fun removeVisualizer(visualizerImpl: AbstractSurfVisualizerImpl) {
40+
activeVisualizers.values.forEach { it.remove(visualizerImpl) }
41+
activeVisualizers.entries.removeIf { it.value.isEmpty() }
42+
}
43+
3944
fun processPlayerQuit(player: Player) {
4045
val visualizers = activeVisualizers.remove(player.uniqueId)
4146
visualizers?.forEach { it.removeViewer(player) }

0 commit comments

Comments
 (0)