Skip to content

Commit 9c9431f

Browse files
committed
game event manager: Post VarbitChanged for Varbits and VarPlayers
1 parent e73a39d commit 9c9431f

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@
2424
*/
2525
package net.runelite.client.util;
2626

27+
import java.lang.reflect.Field;
28+
import java.lang.reflect.Modifier;
2729
import java.util.function.Consumer;
2830
import javax.inject.Inject;
2931
import javax.inject.Singleton;
32+
import lombok.extern.slf4j.Slf4j;
3033
import net.runelite.api.Client;
3134
import net.runelite.api.Constants;
3235
import net.runelite.api.DecorativeObject;
@@ -41,6 +44,7 @@
4144
import net.runelite.api.Scene;
4245
import net.runelite.api.Tile;
4346
import net.runelite.api.TileItem;
47+
import net.runelite.api.VarbitComposition;
4448
import net.runelite.api.WallObject;
4549
import net.runelite.api.WorldEntity;
4650
import net.runelite.api.WorldView;
@@ -51,11 +55,15 @@
5155
import net.runelite.api.events.ItemSpawned;
5256
import net.runelite.api.events.NpcSpawned;
5357
import net.runelite.api.events.PlayerSpawned;
58+
import net.runelite.api.events.VarbitChanged;
5459
import net.runelite.api.events.WallObjectSpawned;
5560
import net.runelite.api.events.WorldEntitySpawned;
61+
import net.runelite.api.gameval.VarPlayerID;
62+
import net.runelite.api.gameval.VarbitID;
5663
import net.runelite.client.callback.ClientThread;
5764
import net.runelite.client.eventbus.EventBus;
5865

66+
@Slf4j
5967
@Singleton
6068
public class GameEventManager
6169
{
@@ -130,6 +138,7 @@ public void simulateGameEvents(Object subscriber)
130138
});
131139
}
132140

141+
@SuppressWarnings("MagicConstant")
133142
private void simulateGameEvents(WorldView wv)
134143
{
135144
for (NPC npc : wv.npcs())
@@ -214,5 +223,48 @@ private void simulateGameEvents(WorldView wv)
214223
eventBus.post(new WorldEntitySpawned(we));
215224
simulateGameEvents(we.getWorldView());
216225
}
226+
227+
for (Field varplayerIDField : VarPlayerID.class.getDeclaredFields())
228+
{
229+
try
230+
{
231+
// Should be unnecessary to check modifiers since AFAIK VarPlayerID is automatically generated from Jagex and should always contain only public static final ints
232+
if (varplayerIDField.getType() == int.class && Modifier.isPublic(varplayerIDField.getModifiers()) && Modifier.isStatic(varplayerIDField.getModifiers()) && Modifier.isFinal(varplayerIDField.getModifiers()))
233+
{
234+
int varplayerID = varplayerIDField.getInt(null);
235+
final VarbitChanged varbitChanged = new VarbitChanged();
236+
varbitChanged.setVarpId(varplayerID);
237+
varbitChanged.setValue(client.getVarpValue(varplayerID));
238+
eventBus.post(varbitChanged);
239+
}
240+
}
241+
catch (IllegalAccessException e)
242+
{
243+
log.error("Failed to get int value of VarPlayerID.{}", varplayerIDField.getName(), e);
244+
}
245+
}
246+
247+
for (Field varbitIDField : VarbitID.class.getDeclaredFields())
248+
{
249+
try
250+
{
251+
// Should be unnecessary to check modifiers since AFAIK VarbitID is automatically generated from Jagex and should always contain only public static final ints
252+
if (varbitIDField.getType() == int.class && Modifier.isPublic(varbitIDField.getModifiers()) && Modifier.isStatic(varbitIDField.getModifiers()) && Modifier.isFinal(varbitIDField.getModifiers()))
253+
{
254+
int varbitID = varbitIDField.getInt(null);
255+
VarbitComposition varbitComposition = client.getVarbit(varbitID);
256+
int varplayerID = varbitComposition != null ? varbitComposition.getIndex() : -1;
257+
final VarbitChanged varbitChanged = new VarbitChanged();
258+
varbitChanged.setVarpId(varplayerID);
259+
varbitChanged.setVarbitId(varbitID);
260+
varbitChanged.setValue(client.getVarbitValue(varbitID));
261+
eventBus.post(varbitChanged);
262+
}
263+
}
264+
catch (IllegalAccessException e)
265+
{
266+
log.error("Failed to get int value of VarbitID.{}", varbitIDField.getName(), e);
267+
}
268+
}
217269
}
218270
}

0 commit comments

Comments
 (0)