Add RSTileMixin.getGroundItems and RSNPCMixin.getTransformedComposition
This commit is contained in:
@@ -37,4 +37,11 @@ public interface NPC extends Actor
|
|||||||
int getIndex();
|
int getIndex();
|
||||||
|
|
||||||
NPCComposition getComposition();
|
NPCComposition getComposition();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the composition for this NPC and transform it if required
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
NPCComposition getTransformedComposition();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.api;
|
package net.runelite.api;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import net.runelite.api.coords.LocalPoint;
|
import net.runelite.api.coords.LocalPoint;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
|
|
||||||
@@ -57,4 +58,11 @@ public interface Tile
|
|||||||
int getPlane();
|
int getPlane();
|
||||||
|
|
||||||
boolean hasLineOfSightTo(Tile other);
|
boolean hasLineOfSightTo(Tile other);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the ground items for this tile
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<Item> getGroundItems();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.mixins;
|
package net.runelite.mixins;
|
||||||
|
|
||||||
|
import net.runelite.api.NPCComposition;
|
||||||
import net.runelite.api.events.NpcDespawned;
|
import net.runelite.api.events.NpcDespawned;
|
||||||
import net.runelite.api.mixins.Copy;
|
import net.runelite.api.mixins.Copy;
|
||||||
import net.runelite.api.mixins.FieldHook;
|
import net.runelite.api.mixins.FieldHook;
|
||||||
@@ -136,4 +137,16 @@ public abstract class RSNPCMixin implements RSNPC
|
|||||||
setSpotAnimFrame(spotAnimFrame);
|
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.GameObject;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.GroundObject;
|
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.Point;
|
||||||
import net.runelite.api.Tile;
|
import net.runelite.api.Tile;
|
||||||
import net.runelite.api.WallObject;
|
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.RSCollisionData;
|
||||||
import net.runelite.rs.api.RSGameObject;
|
import net.runelite.rs.api.RSGameObject;
|
||||||
import net.runelite.rs.api.RSTile;
|
import net.runelite.rs.api.RSTile;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Mixin(RSTile.class)
|
@Mixin(RSTile.class)
|
||||||
public abstract class RSTileMixin implements RSTile
|
public abstract class RSTileMixin implements RSTile
|
||||||
@@ -386,4 +391,24 @@ public abstract class RSTileMixin implements RSTile
|
|||||||
// No collision
|
// No collision
|
||||||
return true;
|
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