Skip to content
This repository was archived by the owner on Apr 8, 2023. It is now read-only.

Commit 59d3441

Browse files
Merge pull request #2580 from Owain94/gamethreadassertions
mixins: add more clientThread checks
2 parents 3739e4e + 06da1b8 commit 59d3441

File tree

5 files changed

+63
-11
lines changed

5 files changed

+63
-11
lines changed

runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.util.List;
3636
import java.util.Map;
3737
import java.util.Set;
38+
import javax.annotation.Nonnull;
3839
import javax.annotation.Nullable;
3940
import javax.inject.Named;
4041
import net.runelite.api.ChatMessageType;
@@ -51,11 +52,14 @@
5152
import net.runelite.api.IndexedSprite;
5253
import net.runelite.api.IntegerNode;
5354
import net.runelite.api.InventoryID;
55+
import net.runelite.api.ItemDefinition;
5456
import net.runelite.api.MenuEntry;
5557
import net.runelite.api.MenuOpcode;
5658
import net.runelite.api.MessageNode;
5759
import net.runelite.api.NPC;
60+
import net.runelite.api.NPCDefinition;
5861
import net.runelite.api.Node;
62+
import net.runelite.api.ObjectDefinition;
5963
import net.runelite.api.Player;
6064
import net.runelite.api.Point;
6165
import net.runelite.api.Prayer;
@@ -498,6 +502,13 @@ public int getTotalLevel()
498502
return totalLevel;
499503
}
500504

505+
@Inject
506+
public void addChatMessage(int type, String name, String message, String sender)
507+
{
508+
assert this.isClientThread() : "addChatMessage must be called on client thread";
509+
addRSChatMessage(type, name, message, sender);
510+
}
511+
501512
@Inject
502513
@Override
503514
public void addChatMessage(ChatMessageType type, String name, String message, String sender)
@@ -512,11 +523,19 @@ public GameState getGameState()
512523
return GameState.of(getRSGameState());
513524
}
514525

526+
@Inject
527+
public void setGameState(int state)
528+
{
529+
assert this.isClientThread() : "setGameState must be called on client thread";
530+
client.setRSGameState(state);
531+
}
532+
515533
@Inject
516534
@Override
517535
public void setGameState(GameState gameState)
518536
{
519-
client.setGameState(gameState.getState());
537+
assert this.isClientThread();
538+
setGameState(gameState.getState());
520539
}
521540

522541
@Inject
@@ -1015,6 +1034,14 @@ public static void draggingWidgetChanged(int idx)
10151034
client.getCallbacks().post(DraggingWidgetChanged.class, draggingWidgetChanged);
10161035
}
10171036

1037+
@Inject
1038+
public RSSprite createItemSprite(int itemId, int quantity, int border, int shadowColor, int stackable, boolean noted)
1039+
{
1040+
assert isClientThread() : "createItemSprite must be called on client thread";
1041+
return createRSItemSprite(itemId, quantity, border, shadowColor, stackable, noted);
1042+
}
1043+
1044+
10181045
@Inject
10191046
@Override
10201047
public Sprite createItemSprite(int itemId, int quantity, int border, int shadowColor, int stackable, boolean noted, int scale)
@@ -1958,5 +1985,30 @@ public void setMirrored(boolean isMirrored)
19581985
{
19591986
this.isMirrored = isMirrored;
19601987
};
1988+
1989+
@Inject
1990+
@Override
1991+
public ObjectDefinition getObjectDefinition(int objectId)
1992+
{
1993+
assert this.isClientThread() : "getObjectDefinition must be called on client thread";
1994+
return getRSObjectDefinition(objectId);
1995+
}
1996+
1997+
@Inject
1998+
@Override
1999+
@Nonnull
2000+
public ItemDefinition getItemDefinition(int id)
2001+
{
2002+
assert this.isClientThread() : "getItemDefinition must be called on client thread";
2003+
return getRSItemDefinition(id);
2004+
}
2005+
2006+
@Inject
2007+
@Override
2008+
public NPCDefinition getNpcDefinition(int id)
2009+
{
2010+
assert this.isClientThread() : "getNpcDefinition must be called on client thread";
2011+
return getRSNpcDefinition(id);
2012+
}
19612013
}
19622014

runelite-mixins/src/main/java/net/runelite/mixins/RSItemDefinitionMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,6 @@ public RSModel getModel(int quantity)
8787
return rs$getModel(quantity);
8888
}
8989

90-
return client.getItemDefinition(modelOverride).getModel(quantity);
90+
return client.getRSItemDefinition(modelOverride).getModel(quantity);
9191
}
9292
}

runelite-mixins/src/main/java/net/runelite/mixins/RSTextureMixin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public abstract class RSTextureMixin implements RSTexture
5858
rs$animate(diff);
5959
return;
6060
}
61+
assert client.getDrawCallbacks() != null;
6162

6263
client.getDrawCallbacks().animate(this, diff);
6364
}

runelite-mixins/src/main/java/net/runelite/mixins/SoundEffectMixin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ public void playSoundEffect(int id, int x, int y, int range)
145145
@Override
146146
public void playSoundEffect(int id, int x, int y, int range, int delay)
147147
{
148+
assert this.isClientThread() : "playSoundEffect must be called on client thread!";
148149
int position = ((x & 255) << 16) + ((y & 255) << 8) + (range & 255);
149150

150151
int[] queuedSoundEffectIDs = getQueuedSoundEffectIDs();
@@ -167,6 +168,7 @@ public void playSoundEffect(int id, int x, int y, int range, int delay)
167168
@Override
168169
public void playSoundEffect(int id, int volume)
169170
{
171+
assert client.isClientThread() : "playSoundEffect must be called on client thread";
170172
RSSoundEffect soundEffect = getTrack(getIndexCache4(), id, 0);
171173
if (soundEffect == null)
172174
{

runescape-api/src/main/java/net/runelite/rs/api/RSClient.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public interface RSClient extends RSGameShell, Client
141141
int getRSGameState();
142142

143143
@Import("updateGameState")
144-
void setGameState(int gameState);
144+
void setRSGameState(int gameState);
145145

146146
@Import("checkClick")
147147
void setCheckClick(boolean checkClick);
@@ -331,15 +331,13 @@ public interface RSClient extends RSGameShell, Client
331331
RSWorld[] getWorldList();
332332

333333
@Import("addChatMessage")
334-
void addChatMessage(int type, String name, String message, String sender);
334+
void addRSChatMessage(int type, String name, String message, String sender);
335335

336-
@Override
337336
@Import("getObjectDefinition")
338-
RSObjectDefinition getObjectDefinition(int objectId);
337+
RSObjectDefinition getRSObjectDefinition(int objectId);
339338

340-
@Override
341339
@Import("getNpcDefinition")
342-
RSNPCDefinition getNpcDefinition(int npcId);
340+
RSNPCDefinition getRSNpcDefinition(int npcId);
343341

344342
@Import("viewportZoom")
345343
@Override
@@ -400,11 +398,10 @@ public interface RSClient extends RSGameShell, Client
400398
RSNodeHashTable getItemContainers();
401399

402400
@Import("ItemDefinition_get")
403-
@Override
404-
RSItemDefinition getItemDefinition(int itemId);
401+
RSItemDefinition getRSItemDefinition(int itemId);
405402

406403
@Import("getItemSprite")
407-
RSSprite createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
404+
RSSprite createRSItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
408405

409406
@Import("menuAction")
410407
void sendMenuAction(int n2, int n3, int n4, int n5, String string, String string2, int n6, int n7);

0 commit comments

Comments
 (0)