Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/main/java/dinkplugin/DinkPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.ServerNpcLoot;
import net.runelite.client.events.NotificationFired;
import net.runelite.client.events.NpcLootReceived;
import net.runelite.client.events.PlayerLootReceived;
Expand Down Expand Up @@ -307,6 +308,11 @@ public void onScriptPreFired(ScriptPreFired event) {
deathNotifier.onScript(event);
}

@Subscribe
public void onServerNpcLoot(ServerNpcLoot event) {
lootNotifier.onServerNpcLoot(event);
}

@Subscribe(priority = 1) // run before the base loot tracker plugin
public void onNpcLootReceived(NpcLootReceived npcLootReceived) {
killCountService.onNpcKill(npcLootReceived);
Expand Down
21 changes: 16 additions & 5 deletions src/main/java/dinkplugin/notifiers/LootNotifier.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import net.runelite.api.NPC;
import net.runelite.client.events.NpcLootReceived;
import net.runelite.client.events.PlayerLootReceived;
import net.runelite.client.events.ServerNpcLoot;
import net.runelite.client.game.ItemManager;
import net.runelite.client.game.ItemStack;
import net.runelite.client.plugins.loottracker.LootReceived;
Expand Down Expand Up @@ -115,15 +116,24 @@ public void onNpcLootReceived(NpcLootReceived event) {
return;
}

this.handleNotify(event.getItems(), npc.getName(), LootRecordType.NPC, id);
this.handleNotify(event.getItems(), npc.getName(), LootRecordType.NPC, id, "onNpcLootReceived");
}

public void onPlayerLootReceived(PlayerLootReceived event) {
if (WorldUtils.isSafeArea(client))
return;

if (config.includePlayerLoot() && isEnabled())
this.handleNotify(event.getItems(), event.getPlayer().getName(), LootRecordType.PLAYER, null);
this.handleNotify(event.getItems(), event.getPlayer().getName(), LootRecordType.PLAYER, null, "onPlayerLootReceived");
}

public void onServerNpcLoot(ServerNpcLoot event) {
if (!isEnabled()) return;

var npc = event.getComposition();
int id = npc.getId();

this.handleNotify(event.getItems(), npc.getName(), LootRecordType.NPC, id, "onServerNpcLoot");
}

public void onLootReceived(LootReceived lootReceived) {
Expand All @@ -142,14 +152,14 @@ public void onLootReceived(LootReceived lootReceived) {
}

String source = killCountService.getStandardizedSource(lootReceived);
this.handleNotify(lootReceived.getItems(), source, lootReceived.getType(), null);
this.handleNotify(lootReceived.getItems(), source, lootReceived.getType(), null, "onLootReceived1");
} else if (lootReceived.getType() == LootRecordType.NPC && KillCountService.SPECIAL_LOOT_NPC_NAMES.contains(lootReceived.getName())) {
// Special case: upstream fires LootReceived for certain NPCs, but not NpcLootReceived
this.handleNotify(lootReceived.getItems(), lootReceived.getName(), lootReceived.getType(), null);
this.handleNotify(lootReceived.getItems(), lootReceived.getName(), lootReceived.getType(), null, "onLootReceived1");
}
}

private void handleNotify(Collection<ItemStack> items, String dropper, LootRecordType type, Integer npcId) {
private void handleNotify(Collection<ItemStack> items, String dropper, LootRecordType type, Integer npcId, String eventName) {
final Integer kc = killCountService.getKillCount(type, dropper);
final int minValue = config.minLootValue();
final boolean icons = config.lootIcons();
Expand Down Expand Up @@ -269,6 +279,7 @@ private void handleNotify(Collection<ItemStack> items, String dropper, LootRecor
.replacementBoundary("%")
.replacement("%USERNAME%", Replacements.ofText(Utils.getPlayerName(client)))
.replacement("%LOOT%", lootMsg)
.replacement("%EVENT_NAME%", Replacements.ofText(eventName))
.replacement("%TOTAL_VALUE%", Replacements.ofText(QuantityFormatter.quantityToStackSize(totalStackValue)))
.replacement("%SOURCE%", source)
.build();
Expand Down
Loading