Merge pull request #844 from McSwindler/npc-fix-branch

Fix for null NPCs
This commit is contained in:
Adam
2018-03-11 20:30:36 -04:00
committed by GitHub
7 changed files with 84 additions and 2 deletions

View File

@@ -170,6 +170,8 @@ public interface Client extends GameEngine
ObjectComposition getObjectDefinition(int objectId); ObjectComposition getObjectDefinition(int objectId);
NPCComposition getNpcDefinition(int npcId);
Area[] getMapAreas(); Area[] getMapAreas();
IndexedSprite[] getMapScene(); IndexedSprite[] getMapScene();

View File

@@ -35,4 +35,6 @@ public interface NPC extends Actor
int getCombatLevel(); int getCombatLevel();
int getIndex(); int getIndex();
NPCComposition getComposition();
} }

View File

@@ -0,0 +1,48 @@
/*
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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();
}

View File

@@ -44,6 +44,7 @@ import net.runelite.api.GroundObject;
import net.runelite.api.Item; import net.runelite.api.Item;
import net.runelite.api.ItemLayer; import net.runelite.api.ItemLayer;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.NPCComposition;
import net.runelite.api.Node; import net.runelite.api.Node;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Player; import net.runelite.api.Player;
@@ -153,7 +154,14 @@ public class DevToolsOverlay extends Overlay
List<NPC> npcs = client.getNpcs(); List<NPC> npcs = client.getNpcs();
for (NPC npc : npcs) for (NPC npc : npcs)
{ {
String text = npc.getName() + " (ID: " + npc.getId() + ") (A: " + npc.getAnimation() + ") (G: " + npc.getGraphic() + ")"; NPCComposition composition = npc.getComposition();
if (composition.getConfigs() != null && composition.transform() != null)
{
composition = composition.transform();
}
String text = composition.getName() + " (ID: " + composition.getId() + ") (A: " + npc.getAnimation()
+ ") (G: " + npc.getGraphic() + ")";
if (npc.getCombatLevel() > 1) if (npc.getCombatLevel() > 1)
{ {
OverlayUtil.renderActorOverlay(graphics, npc, text, YELLOW); OverlayUtil.renderActorOverlay(graphics, npc, text, YELLOW);

View File

@@ -214,6 +214,10 @@ public interface RSClient extends RSGameEngine, Client
@Import("getObjectDefinition") @Import("getObjectDefinition")
RSObjectComposition getObjectDefinition(int objectId); RSObjectComposition getObjectDefinition(int objectId);
@Override
@Import("getNpcDefinition")
RSNPCComposition getNpcDefinition(int npcId);
@Import("scale") @Import("scale")
@Override @Override
int getScale(); int getScale();

View File

@@ -30,6 +30,7 @@ import net.runelite.mapping.Import;
public interface RSNPC extends RSActor, NPC public interface RSNPC extends RSActor, NPC
{ {
@Import("composition") @Import("composition")
@Override
RSNPCComposition getComposition(); RSNPCComposition getComposition();
@Override @Override

View File

@@ -24,31 +24,48 @@
*/ */
package net.runelite.rs.api; package net.runelite.rs.api;
import net.runelite.api.NPCComposition;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
public interface RSNPCComposition public interface RSNPCComposition extends NPCComposition
{ {
@Import("name") @Import("name")
@Override
String getName(); String getName();
@Import("models") @Import("models")
@Override
int[] getModels(); int[] getModels();
@Import("actions") @Import("actions")
@Override
String[] getActions(); String[] getActions();
@Import("isClickable") @Import("isClickable")
@Override
boolean isClickable(); boolean isClickable();
@Import("isMinimapVisible") @Import("isMinimapVisible")
@Override
boolean isMinimapVisable(); boolean isMinimapVisable();
@Import("isVisible") @Import("isVisible")
@Override
boolean isVisable(); boolean isVisable();
@Import("id") @Import("id")
@Override
int getId(); int getId();
@Import("combatLevel") @Import("combatLevel")
@Override
int getCombatLevel(); int getCombatLevel();
@Import("configs")
@Override
int[] getConfigs();
@Import("transform")
@Override
RSNPCComposition transform();
} }