ground items: fix "only show loot"
Look up ground item based on item location instead of npc location
This commit is contained in:
@@ -25,10 +25,12 @@
|
||||
package net.runelite.client.game;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.coords.LocalPoint;
|
||||
|
||||
@Value
|
||||
public class ItemStack
|
||||
{
|
||||
private final int id;
|
||||
private final int quantity;
|
||||
private final LocalPoint location;
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ public class LootManager
|
||||
final Tile tile = itemSpawned.getTile();
|
||||
final LocalPoint location = tile.getLocalLocation();
|
||||
final int packed = location.getSceneX() << 8 | location.getSceneY();
|
||||
itemSpawns.put(packed, new ItemStack(item.getId(), item.getQuantity()));
|
||||
itemSpawns.put(packed, new ItemStack(item.getId(), item.getQuantity(), location));
|
||||
log.debug("Item spawn {} ({}) location {},{}", item.getId(), item.getQuantity(), location);
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ public class LootManager
|
||||
return;
|
||||
}
|
||||
|
||||
itemSpawns.put(packed, new ItemStack(item.getId(), diff));
|
||||
itemSpawns.put(packed, new ItemStack(item.getId(), diff, location));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
||||
@@ -270,22 +270,21 @@ public class GroundItemsPlugin extends Plugin
|
||||
public void onNpcLootReceived(NpcLootReceived npcLootReceived)
|
||||
{
|
||||
Collection<ItemStack> items = npcLootReceived.getItems();
|
||||
WorldPoint location = npcLootReceived.getNpc().getWorldLocation();
|
||||
lootReceived(items, location);
|
||||
lootReceived(items);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onPlayerLootReceived(PlayerLootReceived playerLootReceived)
|
||||
{
|
||||
Collection<ItemStack> items = playerLootReceived.getItems();
|
||||
WorldPoint location = playerLootReceived.getPlayer().getWorldLocation();
|
||||
lootReceived(items, location);
|
||||
lootReceived(items);
|
||||
}
|
||||
|
||||
private void lootReceived(Collection<ItemStack> items, WorldPoint location)
|
||||
private void lootReceived(Collection<ItemStack> items)
|
||||
{
|
||||
for (ItemStack itemStack : items)
|
||||
{
|
||||
WorldPoint location = WorldPoint.fromLocal(client, itemStack.getLocation());
|
||||
GroundItem.GroundItemKey groundItemKey = new GroundItem.GroundItemKey(itemStack.getId(), location);
|
||||
GroundItem groundItem = collectedGroundItems.get(groundItemKey);
|
||||
if (groundItem != null)
|
||||
|
||||
@@ -127,7 +127,7 @@ public class LootTrackerPlugin extends Plugin
|
||||
}
|
||||
if (quantity > 0)
|
||||
{
|
||||
list.add(new ItemStack(item.getId(), item.getQuantity() + quantity));
|
||||
list.add(new ItemStack(item.getId(), item.getQuantity() + quantity, item.getLocation()));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -241,7 +241,7 @@ public class LootTrackerPlugin extends Plugin
|
||||
// Convert container items to array of ItemStack
|
||||
final Collection<ItemStack> items = Arrays.stream(container.getItems())
|
||||
.filter(item -> item.getId() > 0)
|
||||
.map(item -> new ItemStack(item.getId(), item.getQuantity()))
|
||||
.map(item -> new ItemStack(item.getId(), item.getQuantity(), client.getLocalPlayer().getLocalLocation()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!items.isEmpty())
|
||||
|
||||
Reference in New Issue
Block a user