Merge pull request #10035 from Nightfirecat/add-player-kill-value-chat-message
loottracker: Show chat message after NPC and PVP kills
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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<ItemStack> items)
|
||||
{
|
||||
long totalPrice = 0;
|
||||
|
||||
for (final ItemStack itemStack : items)
|
||||
{
|
||||
totalPrice += (long) itemManager.getItemPrice(itemStack.getId()) * itemStack.getQuantity();
|
||||
}
|
||||
|
||||
return totalPrice;
|
||||
}
|
||||
|
||||
private void lootReceivedChatMessage(final Collection<ItemStack> 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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user