Invoke GameEventManager events on ClientThread

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-10-16 21:42:33 +02:00
parent a6293b2aaf
commit 2eca81e2ba

View File

@@ -50,17 +50,20 @@ import net.runelite.api.events.ItemSpawned;
import net.runelite.api.events.NpcSpawned;
import net.runelite.api.events.PlayerSpawned;
import net.runelite.api.events.WallObjectSpawned;
import net.runelite.client.callback.ClientThread;
@Singleton
public class GameEventManager
{
private final EventBus eventBus = new EventBus();
private final Client client;
private final ClientThread clientThread;
@Inject
private GameEventManager(Client client)
private GameEventManager(Client client, ClientThread clientThread)
{
this.client = client;
this.clientThread = clientThread;
}
/**
@@ -70,7 +73,6 @@ public class GameEventManager
*/
private void forEachTile(Consumer<Tile> consumer)
{
final Scene scene = client.getScene();
final Tile[][][] tiles = scene.getTiles();
@@ -105,6 +107,9 @@ public class GameEventManager
return;
}
clientThread.invoke(() ->
{
eventBus.register(subscriber);
for (final InventoryID inventory : InventoryID.values())
@@ -188,5 +193,6 @@ public class GameEventManager
});
eventBus.unregister(subscriber);
});
}
}