Change world load event to fire at the end of world loading

This commit is contained in:
Adam
2018-08-14 11:04:05 -04:00
parent ef691b1de9
commit 41634c96ab
2 changed files with 11 additions and 7 deletions

View File

@@ -28,10 +28,10 @@ import lombok.Value;
import net.runelite.api.World; 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 @Value
public class WorldLoad public class WorldListLoad
{ {
private final World world; private final World[] worlds;
} }

View File

@@ -26,7 +26,7 @@ package net.runelite.mixins;
import java.util.EnumSet; import java.util.EnumSet;
import net.runelite.api.WorldType; 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.FieldHook;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Mixin;
@@ -58,8 +58,12 @@ public abstract class RSWorldMixin implements RSWorld
@FieldHook("playerCount") @FieldHook("playerCount")
public void playerCountChanged(int idx) public void playerCountChanged(int idx)
{ {
// playerCount is the last field updated RSWorld[] worlds = client.getWorldList();
WorldLoad worldLoad = new WorldLoad(this); if (worlds != null && worlds.length > 0 && worlds[worlds.length - 1] == this)
client.getCallbacks().post(worldLoad); {
// this is the last world in the list.
WorldListLoad worldLoad = new WorldListLoad(worlds);
client.getCallbacks().post(worldLoad);
}
} }
} }