Add RSTileMixin.getGroundItems and RSNPCMixin.getTransformedComposition
This commit is contained in:
@@ -37,4 +37,11 @@ public interface NPC extends Actor
|
||||
int getIndex();
|
||||
|
||||
NPCComposition getComposition();
|
||||
|
||||
/**
|
||||
* Get the composition for this NPC and transform it if required
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
NPCComposition getTransformedComposition();
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
*/
|
||||
package net.runelite.api;
|
||||
|
||||
import java.util.List;
|
||||
import net.runelite.api.coords.LocalPoint;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
|
||||
@@ -57,4 +58,11 @@ public interface Tile
|
||||
int getPlane();
|
||||
|
||||
boolean hasLineOfSightTo(Tile other);
|
||||
|
||||
/**
|
||||
* Get all the ground items for this tile
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<Item> getGroundItems();
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
*/
|
||||
package net.runelite.mixins;
|
||||
|
||||
import net.runelite.api.NPCComposition;
|
||||
import net.runelite.api.events.NpcDespawned;
|
||||
import net.runelite.api.mixins.Copy;
|
||||
import net.runelite.api.mixins.FieldHook;
|
||||
@@ -136,4 +137,16 @@ public abstract class RSNPCMixin implements RSNPC
|
||||
setSpotAnimFrame(spotAnimFrame);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public NPCComposition getTransformedComposition()
|
||||
{
|
||||
RSNPCComposition composition = getComposition();
|
||||
if (composition != null && composition.getConfigs() != null)
|
||||
{
|
||||
composition = composition.transform();
|
||||
}
|
||||
return composition;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,9 @@ import net.runelite.api.DecorativeObject;
|
||||
import net.runelite.api.GameObject;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.GroundObject;
|
||||
import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemLayer;
|
||||
import net.runelite.api.Node;
|
||||
import net.runelite.api.Point;
|
||||
import net.runelite.api.Tile;
|
||||
import net.runelite.api.WallObject;
|
||||
@@ -57,6 +60,8 @@ import net.runelite.rs.api.RSClient;
|
||||
import net.runelite.rs.api.RSCollisionData;
|
||||
import net.runelite.rs.api.RSGameObject;
|
||||
import net.runelite.rs.api.RSTile;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Mixin(RSTile.class)
|
||||
public abstract class RSTileMixin implements RSTile
|
||||
@@ -386,4 +391,24 @@ public abstract class RSTileMixin implements RSTile
|
||||
// No collision
|
||||
return true;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public List<Item> getGroundItems()
|
||||
{
|
||||
ItemLayer layer = this.getItemLayer();
|
||||
if (layer == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Item> result = new ArrayList<Item>();
|
||||
Node node = layer.getBottom();
|
||||
while (node instanceof Item)
|
||||
{
|
||||
result.add((Item)node);
|
||||
node = node.getNext();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user