From 41634c96aba9dd9e81e4e32e783754ba357cda3b Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 14 Aug 2018 11:04:05 -0400 Subject: [PATCH] Change world load event to fire at the end of world loading --- .../events/{WorldLoad.java => WorldListLoad.java} | 6 +++--- .../main/java/net/runelite/mixins/RSWorldMixin.java | 12 ++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) rename runelite-api/src/main/java/net/runelite/api/events/{WorldLoad.java => WorldListLoad.java} (90%) diff --git a/runelite-api/src/main/java/net/runelite/api/events/WorldLoad.java b/runelite-api/src/main/java/net/runelite/api/events/WorldListLoad.java similarity index 90% rename from runelite-api/src/main/java/net/runelite/api/events/WorldLoad.java rename to runelite-api/src/main/java/net/runelite/api/events/WorldListLoad.java index 4739bfd0b0..f7cc8e243f 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/WorldLoad.java +++ b/runelite-api/src/main/java/net/runelite/api/events/WorldListLoad.java @@ -28,10 +28,10 @@ import lombok.Value; import net.runelite.api.World; /** - * Event when a world is loaded for the world switcher + * Event when the world list is loaded for the world switcher */ @Value -public class WorldLoad +public class WorldListLoad { - private final World world; + private final World[] worlds; } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java index 939cb10ed6..55155b500f 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java @@ -26,7 +26,7 @@ package net.runelite.mixins; import java.util.EnumSet; import net.runelite.api.WorldType; -import net.runelite.api.events.WorldLoad; +import net.runelite.api.events.WorldListLoad; import net.runelite.api.mixins.FieldHook; import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Mixin; @@ -58,8 +58,12 @@ public abstract class RSWorldMixin implements RSWorld @FieldHook("playerCount") public void playerCountChanged(int idx) { - // playerCount is the last field updated - WorldLoad worldLoad = new WorldLoad(this); - client.getCallbacks().post(worldLoad); + RSWorld[] worlds = client.getWorldList(); + if (worlds != null && worlds.length > 0 && worlds[worlds.length - 1] == this) + { + // this is the last world in the list. + WorldListLoad worldLoad = new WorldListLoad(worlds); + client.getCallbacks().post(worldLoad); + } } }