aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin
diff options
context:
space:
mode:
authoringlettronald <inglettronald@gmail.com>2023-05-25 16:23:19 -0500
committeringlettronald <inglettronald@gmail.com>2023-05-25 16:23:19 -0500
commitf7b3746bcb1d48366760e9cdde9c8cdb8f89b645 (patch)
treef7621a7d4fcfdca27621266f289e9de5c802a6ed /src/main/kotlin
parent093b826824391e06724933dcb74498516aecc8ab (diff)
downloadDulkirMod-f7b3746bcb1d48366760e9cdde9c8cdb8f89b645.tar.gz
DulkirMod-f7b3746bcb1d48366760e9cdde9c8cdb8f89b645.tar.bz2
DulkirMod-f7b3746bcb1d48366760e9cdde9c8cdb8f89b645.zip
performance improvements
Diffstat (limited to 'src/main/kotlin')
-rw-r--r--src/main/kotlin/dulkirmod/DulkirMod.kt6
-rw-r--r--src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt12
2 files changed, 18 insertions, 0 deletions
diff --git a/src/main/kotlin/dulkirmod/DulkirMod.kt b/src/main/kotlin/dulkirmod/DulkirMod.kt
index 6b955ef..70e029e 100644
--- a/src/main/kotlin/dulkirmod/DulkirMod.kt
+++ b/src/main/kotlin/dulkirmod/DulkirMod.kt
@@ -39,6 +39,7 @@ import kotlin.coroutines.EmptyCoroutineContext
class DulkirMod {
var lastLongUpdate: Long = 0
+ var lastLongerUpdate: Long = 0
@Mod.EventHandler
fun preInit(event: FMLPreInitializationEvent) {
@@ -117,6 +118,11 @@ class DulkirMod {
DragonFeatures.updateDragonDead()
lastLongUpdate = currTime
}
+
+ if (currTime - lastLongerUpdate > 5000) { // longer update
+ MemoryLeakFix.clearBlankStands()
+ lastLongerUpdate = currTime
+ }
}
@SubscribeEvent
diff --git a/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt b/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
index dcb46ef..0bf768f 100644
--- a/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
+++ b/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
@@ -3,6 +3,7 @@ package dulkirmod.features
import dulkirmod.DulkirMod.Companion.mc
import dulkirmod.config.DulkirConfig
import net.minecraft.entity.Entity
+import net.minecraft.entity.item.EntityArmorStand
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent
@@ -31,4 +32,15 @@ object MemoryLeakFix {
private fun isNullVec(entity: Entity): Boolean {
return entity.posX == 0.0 && entity.posY == 0.0 && entity.posZ == 0.0
}
+
+ fun clearBlankStands() {
+ val world = mc.theWorld ?: return
+ val currentEnts = world.loadedEntityList
+ currentEnts.forEach {
+ if (it !is EntityArmorStand) return
+ if (it.name != "Armor Stand") return
+ if (it.inventory.any{slot -> slot != null}) return
+ world.removeEntityFromWorld(it.entityId)
+ }
+ }
} \ No newline at end of file