diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index 3ff910edd..6f0dc07ea 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -25,6 +25,7 @@ import net.torvald.terrarum.controller.GdxControllerAdapter; import net.torvald.terrarum.controller.TerrarumController; import net.torvald.terrarum.controller.XinputControllerAdapter; import net.torvald.terrarum.gamecontroller.KeyToggler; +import net.torvald.terrarum.gameworld.GameWorld; import net.torvald.terrarum.imagefont.TinyAlphNum; import net.torvald.terrarum.modulebasegame.Ingame; import net.torvald.terrarum.utils.JsonFetcher; @@ -546,6 +547,8 @@ public class AppLoader implements ApplicationListener { ModMgr.INSTANCE.disposeMods(); + GameWorld.Companion.makeNullWorld().dispose(); + deleteTempfiles(); } diff --git a/src/net/torvald/terrarum/gameworld/GameWorld.kt b/src/net/torvald/terrarum/gameworld/GameWorld.kt index 619adb799..3f9479475 100644 --- a/src/net/torvald/terrarum/gameworld/GameWorld.kt +++ b/src/net/torvald/terrarum/gameworld/GameWorld.kt @@ -475,7 +475,14 @@ open class GameWorld : Disposable { //@Transient val SIZEOF: Byte = 2 @Transient const val LAYERS: Byte = 4 // terrain, wall (layerTerrainLowBits + layerWallLowBits), wire - fun makeNullWorld() = GameWorld(1, 1, 1, 0, 0, 0) + @Transient private var nullWorldInstance: GameWorld? = null + + fun makeNullWorld(): GameWorld { + if (nullWorldInstance == null) + nullWorldInstance = GameWorld(1, 1, 1, 0, 0, 0) + + return nullWorldInstance!! + } } }