From bac90876b0503bbe6f59b4fa03035ad3d7684d06 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Fri, 10 Aug 2018 21:25:22 -0600 Subject: [PATCH] Make the second argument of SpriteManager::getSprite work I just blindly assumed that the arguments to net.runelite.cache.SpriteManager worked the same as Jagex's code, which is not true. In reality the second argument to getSprite(s?)asSpritePixels is always zero, and instead you have to decode the entire archive then select a sub image, rather than a subfile. --- runelite-api/src/main/java/net/runelite/api/Client.java | 4 ++-- .../src/main/java/net/runelite/client/game/SpriteManager.java | 4 ++-- runescape-api/src/main/java/net/runelite/rs/api/RSClient.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index dff3d89ef2..17ca5d987b 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -311,14 +311,14 @@ public interface Client extends GameEngine SpritePixels createItemSprite(int itemId, int quantity, int border, int shadowColor, int stackable, boolean noted, int scale); /** - * Loads and creates the sprite image of the passed archive and file IDs. + * Loads and creates the sprite images of the passed archive and file IDs. * * @param source the sprite database * @param archiveId the sprites archive ID * @param fileId the sprites file ID * @return the sprite image of the file */ - SpritePixels getSprite(IndexDataBase source, int archiveId, int fileId); + SpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId); /** * Gets the sprite index database. diff --git a/runelite-client/src/main/java/net/runelite/client/game/SpriteManager.java b/runelite-client/src/main/java/net/runelite/client/game/SpriteManager.java index e80818cc65..f0df8286cd 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/SpriteManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/SpriteManager.java @@ -71,8 +71,8 @@ public class SpriteManager return cached; } - SpritePixels sp = client.getSprite(client.getIndexSprites(), archive, file); - BufferedImage img = sp.toBufferedImage(); + SpritePixels[] sp = client.getSprites(client.getIndexSprites(), archive, 0); + BufferedImage img = sp[file].toBufferedImage(); cache.put(key, img); return img; diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index be0a606e56..7f39688755 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -318,9 +318,9 @@ public interface RSClient extends RSGameEngine, Client @Import("createSprite") RSSpritePixels createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted); - @Import("getSpriteAsSpritePixels") + @Import("getSpritesAsSpritePixels") @Override - RSSpritePixels getSprite(IndexDataBase source, int archiveId, int fileId); + RSSpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId); @Import("indexSprites") @Override