diff --git a/core/assets/scripts/global.js b/core/assets/scripts/global.js index 549bcb9b54..92a7fd5562 100755 --- a/core/assets/scripts/global.js +++ b/core/assets/scripts/global.js @@ -165,6 +165,7 @@ const SectorInvasionEvent = Packages.mindustry.game.EventType.SectorInvasionEven const SectorLoseEvent = Packages.mindustry.game.EventType.SectorLoseEvent const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent +const ContentInitEvent = Packages.mindustry.game.EventType.ContentInitEvent const BlockInfoEvent = Packages.mindustry.game.EventType.BlockInfoEvent const CoreItemDeliverEvent = Packages.mindustry.game.EventType.CoreItemDeliverEvent const TurretAmmoDeliverEvent = Packages.mindustry.game.EventType.TurretAmmoDeliverEvent diff --git a/core/src/mindustry/core/ContentLoader.java b/core/src/mindustry/core/ContentLoader.java index c3c0918d44..2696639240 100644 --- a/core/src/mindustry/core/ContentLoader.java +++ b/core/src/mindustry/core/ContentLoader.java @@ -1,5 +1,6 @@ package mindustry.core; +import arc.*; import arc.files.*; import arc.func.*; import arc.graphics.*; @@ -7,8 +8,10 @@ import arc.struct.*; import arc.util.*; import mindustry.content.*; import mindustry.ctype.*; +import mindustry.game.EventType.*; import mindustry.entities.bullet.*; import mindustry.mod.Mods.*; +import mindustry.net.*; import mindustry.type.*; import mindustry.world.*; @@ -97,6 +100,7 @@ public class ContentLoader{ public void init(){ initialize(Content::init); if(constants != null) constants.init(); + Events.fire(new ContentInitEvent()); } /** Calls Content#load() on everything. Use only after all modules have been created on the client.*/ diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 00d4096e78..f4f3dc75df 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -424,7 +424,7 @@ public class Control implements ApplicationListener, Loadable{ net.dispose(); Musics.dispose(); Sounds.dispose(); - ui.editor.dispose(); + if(ui != null && ui.editor != null) ui.editor.dispose(); } @Override diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index 7d6ed8c373..ea9e22a3ce 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -111,7 +111,10 @@ public class Renderer implements ApplicationListener{ minimap.dispose(); effectBuffer.dispose(); blocks.dispose(); - planets.dispose(); + if(planets != null){ + planets.dispose(); + planets = null; + } if(bloom != null){ bloom.dispose(); bloom = null; diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 3fd2826cb5..3efe48932e 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -64,6 +64,8 @@ public class EventType{ public static class CoreItemDeliverEvent{} /** Called when the player opens info for a specific block.*/ public static class BlockInfoEvent{} + /** Called *after* all content has been initialized. */ + public static class ContentInitEvent{} /** Called when the client game is first loaded. */ public static class ClientLoadEvent{} /** Called when a game begins and the world is loaded. */