From d71f8bd3b32134d76d0c71cabc56ebf75db3816e Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 11 Mar 2018 19:19:06 -0400 Subject: [PATCH] runelite-api: expose npc composition --- .../main/java/net/runelite/api/Client.java | 2 + .../src/main/java/net/runelite/api/NPC.java | 2 + .../java/net/runelite/api/NPCComposition.java | 48 +++++++++++++++++++ .../java/net/runelite/rs/api/RSClient.java | 4 ++ .../main/java/net/runelite/rs/api/RSNPC.java | 1 + .../net/runelite/rs/api/RSNPCComposition.java | 19 +++++++- 6 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 runelite-api/src/main/java/net/runelite/api/NPCComposition.java 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 a90a8738b1..0d2cbf4de6 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -170,6 +170,8 @@ public interface Client extends GameEngine ObjectComposition getObjectDefinition(int objectId); + NPCComposition getNpcDefinition(int npcId); + Area[] getMapAreas(); IndexedSprite[] getMapScene(); diff --git a/runelite-api/src/main/java/net/runelite/api/NPC.java b/runelite-api/src/main/java/net/runelite/api/NPC.java index 10497c7a4e..d9b05dd80c 100644 --- a/runelite-api/src/main/java/net/runelite/api/NPC.java +++ b/runelite-api/src/main/java/net/runelite/api/NPC.java @@ -35,4 +35,6 @@ public interface NPC extends Actor int getCombatLevel(); int getIndex(); + + NPCComposition getComposition(); } diff --git a/runelite-api/src/main/java/net/runelite/api/NPCComposition.java b/runelite-api/src/main/java/net/runelite/api/NPCComposition.java new file mode 100644 index 0000000000..06fe5f5139 --- /dev/null +++ b/runelite-api/src/main/java/net/runelite/api/NPCComposition.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2018, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.api; + +public interface NPCComposition +{ + String getName(); + + int[] getModels(); + + String[] getActions(); + + boolean isClickable(); + + boolean isMinimapVisable(); + + boolean isVisable(); + + int getId(); + + int getCombatLevel(); + + int[] getConfigs(); + + NPCComposition transform(); +} 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 2fa2e4940f..aeb97c908a 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 @@ -214,6 +214,10 @@ public interface RSClient extends RSGameEngine, Client @Import("getObjectDefinition") RSObjectComposition getObjectDefinition(int objectId); + @Override + @Import("getNpcDefinition") + RSNPCComposition getNpcDefinition(int npcId); + @Import("scale") @Override int getScale(); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java index a401cf3cf5..6eb0661753 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java @@ -30,6 +30,7 @@ import net.runelite.mapping.Import; public interface RSNPC extends RSActor, NPC { @Import("composition") + @Override RSNPCComposition getComposition(); @Override diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNPCComposition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNPCComposition.java index 0d65fe5334..535b60b4e1 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNPCComposition.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNPCComposition.java @@ -24,31 +24,48 @@ */ package net.runelite.rs.api; +import net.runelite.api.NPCComposition; import net.runelite.mapping.Import; -public interface RSNPCComposition +public interface RSNPCComposition extends NPCComposition { @Import("name") + @Override String getName(); @Import("models") + @Override int[] getModels(); @Import("actions") + @Override String[] getActions(); @Import("isClickable") + @Override boolean isClickable(); @Import("isMinimapVisible") + @Override boolean isMinimapVisable(); @Import("isVisible") + @Override boolean isVisable(); @Import("id") + @Override int getId(); @Import("combatLevel") + @Override int getCombatLevel(); + + @Import("configs") + @Override + int[] getConfigs(); + + @Import("transform") + @Override + RSNPCComposition transform(); }