From 19b6efa3a2b37334bc00400fa36d68b9a1e9ae6c Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 3 Sep 2018 21:32:53 -0400 Subject: [PATCH] loot manager: limit to one kill per location per tick --- .../java/net/runelite/client/game/LootManager.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/game/LootManager.java b/runelite-client/src/main/java/net/runelite/client/game/LootManager.java index 8482fa75c2..ba7964fff1 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/LootManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/LootManager.java @@ -31,8 +31,10 @@ import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import javax.inject.Inject; import javax.inject.Singleton; import lombok.extern.slf4j.Slf4j; @@ -66,6 +68,7 @@ public class LootManager private final EventBus eventBus; private final Client client; private final ListMultimap itemSpawns = ArrayListMultimap.create(); + private final Set killPoints = new HashSet<>(); private WorldPoint playerLocationLastTick; private WorldPoint krakenPlayerLocation; @@ -130,7 +133,7 @@ public class LootManager } final LocalPoint location = LocalPoint.fromWorld(client, player.getWorldLocation()); - if (location == null) + if (location == null || killPoints.contains(location)) { return; } @@ -145,6 +148,7 @@ public class LootManager return; } + killPoints.add(location); eventBus.post(new PlayerLootReceived(player, items)); } @@ -211,12 +215,13 @@ public class LootManager { playerLocationLastTick = client.getLocalPlayer().getWorldLocation(); itemSpawns.clear(); + killPoints.clear(); } private void processNpcLoot(NPC npc) { final LocalPoint location = LocalPoint.fromWorld(client, getDropLocation(npc, npc.getWorldLocation())); - if (location == null) + if (location == null || killPoints.contains(location)) { return; } @@ -242,6 +247,7 @@ public class LootManager return; } + killPoints.add(location); eventBus.post(new NpcLootReceived(npc, allItems)); }