aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt')
-rw-r--r--src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt b/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
new file mode 100644
index 0000000..a4dfc9b
--- /dev/null
+++ b/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
@@ -0,0 +1,34 @@
+package dulkirmod.features
+
+import dulkirmod.DulkirMod.Companion.mc
+import dulkirmod.config.Config
+import net.minecraft.entity.Entity
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent
+
+object MemoryLeakFix {
+ var lastClear = System.currentTimeMillis()
+
+ @SubscribeEvent
+ fun onTick(event: TickEvent.ClientTickEvent) {
+ if (!Config.crimsonIslesMemoryLeakPatch) return
+
+ if (System.currentTimeMillis() - lastClear >= 30000L) {
+ val world = mc.theWorld ?: return
+ val currentEnts = world.playerEntities.toMutableList()
+ currentEnts.forEach {
+ if (it.isDead) {
+ world.playerEntities.remove(it)
+ }
+ if (isNullVec(it)) {
+ world.removeEntityFromWorld(it.entityId)
+ }
+ }
+ lastClear = System.currentTimeMillis()
+ }
+ }
+
+ private fun isNullVec(entity: Entity): Boolean {
+ return entity.posX == 0.0 && entity.posY == 0.0 && entity.posZ == 0.0
+ }
+} \ No newline at end of file