diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerConfig.java index a8917ebfe2..00a04f7756 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerConfig.java @@ -107,4 +107,24 @@ public interface LootTrackerConfig extends Config description = "" ) void setIgnoredEvents(String key); + + @ConfigItem( + keyName = "npcKillChatMessage", + name = "Show chat message for NPC kills", + description = "Adds a chat message with monster name and kill value when receiving loot from an NPC kill." + ) + default boolean npcKillChatMessage() + { + return false; + } + + @ConfigItem( + keyName = "pvpKillChatMessage", + name = "Show chat message for PVP kills", + description = "Adds a chat message with player name and kill value when receiving loot from a player kill." + ) + default boolean pvpKillChatMessage() + { + return false; + } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java index 27a9f82029..4ad04d2cd4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java @@ -80,6 +80,10 @@ import net.runelite.api.widgets.WidgetID; import net.runelite.client.account.AccountSession; import net.runelite.client.account.SessionManager; import net.runelite.client.callback.ClientThread; +import net.runelite.client.chat.ChatColorType; +import net.runelite.client.chat.ChatMessageBuilder; +import net.runelite.client.chat.ChatMessageManager; +import net.runelite.client.chat.QueuedMessage; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.Subscribe; @@ -98,6 +102,7 @@ import net.runelite.client.task.Schedule; import net.runelite.client.ui.ClientToolbar; import net.runelite.client.ui.NavigationButton; import net.runelite.client.util.ImageUtil; +import net.runelite.client.util.QuantityFormatter; import net.runelite.client.util.Text; import net.runelite.http.api.loottracker.GameItem; import net.runelite.http.api.loottracker.LootAggregate; @@ -189,6 +194,9 @@ public class LootTrackerPlugin extends Plugin @Inject private EventBus eventBus; + @Inject + private ChatMessageManager chatMessageManager; + private LootTrackerPanel panel; private NavigationButton navButton; @VisibleForTesting @@ -394,6 +402,11 @@ public class LootTrackerPlugin extends Plugin final int combat = npc.getCombatLevel(); addLoot(name, combat, LootRecordType.NPC, items); + + if (config.npcKillChatMessage()) + { + lootReceivedChatMessage(items, "a " + name); + } } @Subscribe @@ -411,6 +424,11 @@ public class LootTrackerPlugin extends Plugin final int combat = player.getCombatLevel(); addLoot(name, combat, LootRecordType.PLAYER, items); + + if (config.pvpKillChatMessage()) + { + lootReceivedChatMessage(items, name); + } } @Subscribe @@ -840,4 +858,34 @@ public class LootTrackerPlugin extends Plugin return false; } + + private long getTotalPrice(Collection items) + { + long totalPrice = 0; + + for (final ItemStack itemStack : items) + { + totalPrice += (long) itemManager.getItemPrice(itemStack.getId()) * itemStack.getQuantity(); + } + + return totalPrice; + } + + private void lootReceivedChatMessage(final Collection items, final String name) + { + final String message = new ChatMessageBuilder() + .append(ChatColorType.HIGHLIGHT) + .append("You've killed ") + .append(name) + .append(" for ") + .append(QuantityFormatter.quantityToStackSize(getTotalPrice(items))) + .append(" loot.") + .build(); + + chatMessageManager.queue( + QueuedMessage.builder() + .type(ChatMessageType.CONSOLE) + .runeLiteFormattedMessage(message) + .build()); + } } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/loottracker/LootTrackerPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/loottracker/LootTrackerPluginTest.java index dc05bbabf2..456c7950f3 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/loottracker/LootTrackerPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/loottracker/LootTrackerPluginTest.java @@ -45,6 +45,7 @@ import net.runelite.api.Player; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ChatMessage; import net.runelite.client.account.SessionManager; +import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemStack; import net.runelite.client.game.SpriteManager; @@ -116,6 +117,10 @@ public class LootTrackerPluginTest @Bind private ItemManager itemManager; + @Mock + @Bind + private ChatMessageManager chatMessageManager; + @Before public void setUp() {