loot tracker: submit loot to api
Co-authored-by: TheStonedTurtle <29030969+TheStonedTurtle@users.noreply.github.com>
This commit is contained in:
@@ -52,8 +52,12 @@ import net.runelite.api.SpriteID;
|
|||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
|
import net.runelite.api.events.SessionClose;
|
||||||
|
import net.runelite.api.events.SessionOpen;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.widgets.WidgetID;
|
import net.runelite.api.widgets.WidgetID;
|
||||||
|
import net.runelite.client.account.AccountSession;
|
||||||
|
import net.runelite.client.account.SessionManager;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
import net.runelite.client.events.NpcLootReceived;
|
import net.runelite.client.events.NpcLootReceived;
|
||||||
@@ -67,6 +71,10 @@ import net.runelite.client.ui.ClientToolbar;
|
|||||||
import net.runelite.client.ui.NavigationButton;
|
import net.runelite.client.ui.NavigationButton;
|
||||||
import net.runelite.client.util.ImageUtil;
|
import net.runelite.client.util.ImageUtil;
|
||||||
import net.runelite.client.util.Text;
|
import net.runelite.client.util.Text;
|
||||||
|
import net.runelite.http.api.loottracker.GameItem;
|
||||||
|
import net.runelite.http.api.loottracker.LootRecord;
|
||||||
|
import net.runelite.http.api.loottracker.LootRecordType;
|
||||||
|
import net.runelite.http.api.loottracker.LootTrackerClient;
|
||||||
|
|
||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "Loot Tracker",
|
name = "Loot Tracker",
|
||||||
@@ -103,12 +111,17 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private Client client;
|
private Client client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private SessionManager sessionManager;
|
||||||
|
|
||||||
private LootTrackerPanel panel;
|
private LootTrackerPanel panel;
|
||||||
private NavigationButton navButton;
|
private NavigationButton navButton;
|
||||||
private String eventType;
|
private String eventType;
|
||||||
|
|
||||||
private List<String> ignoredItems = new ArrayList<>();
|
private List<String> ignoredItems = new ArrayList<>();
|
||||||
|
|
||||||
|
private LootTrackerClient lootTrackerClient;
|
||||||
|
|
||||||
private static Collection<ItemStack> stack(Collection<ItemStack> items)
|
private static Collection<ItemStack> stack(Collection<ItemStack> items)
|
||||||
{
|
{
|
||||||
final List<ItemStack> list = new ArrayList<>();
|
final List<ItemStack> list = new ArrayList<>();
|
||||||
@@ -144,6 +157,26 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
return configManager.getConfig(LootTrackerConfig.class);
|
return configManager.getConfig(LootTrackerConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onSessionOpen(SessionOpen sessionOpen)
|
||||||
|
{
|
||||||
|
AccountSession accountSession = sessionManager.getAccountSession();
|
||||||
|
if (accountSession.getUuid() != null)
|
||||||
|
{
|
||||||
|
lootTrackerClient = new LootTrackerClient(accountSession.getUuid());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lootTrackerClient = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onSessionClose(SessionClose sessionClose)
|
||||||
|
{
|
||||||
|
lootTrackerClient = null;
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onConfigChanged(ConfigChanged event)
|
public void onConfigChanged(ConfigChanged event)
|
||||||
{
|
{
|
||||||
@@ -171,12 +204,19 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
clientToolbar.addNavigation(navButton);
|
clientToolbar.addNavigation(navButton);
|
||||||
|
|
||||||
|
AccountSession accountSession = sessionManager.getAccountSession();
|
||||||
|
if (accountSession != null)
|
||||||
|
{
|
||||||
|
lootTrackerClient = new LootTrackerClient(accountSession.getUuid());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void shutDown()
|
protected void shutDown()
|
||||||
{
|
{
|
||||||
clientToolbar.removeNavigation(navButton);
|
clientToolbar.removeNavigation(navButton);
|
||||||
|
lootTrackerClient = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -188,6 +228,12 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
final int combat = npc.getCombatLevel();
|
final int combat = npc.getCombatLevel();
|
||||||
final LootTrackerItem[] entries = buildEntries(stack(items));
|
final LootTrackerItem[] entries = buildEntries(stack(items));
|
||||||
SwingUtilities.invokeLater(() -> panel.add(name, combat, entries));
|
SwingUtilities.invokeLater(() -> panel.add(name, combat, entries));
|
||||||
|
|
||||||
|
if (lootTrackerClient != null)
|
||||||
|
{
|
||||||
|
LootRecord lootRecord = new LootRecord(name, LootRecordType.NPC, toGameItems(items));
|
||||||
|
lootTrackerClient.submit(lootRecord);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -199,6 +245,12 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
final int combat = player.getCombatLevel();
|
final int combat = player.getCombatLevel();
|
||||||
final LootTrackerItem[] entries = buildEntries(stack(items));
|
final LootTrackerItem[] entries = buildEntries(stack(items));
|
||||||
SwingUtilities.invokeLater(() -> panel.add(name, combat, entries));
|
SwingUtilities.invokeLater(() -> panel.add(name, combat, entries));
|
||||||
|
|
||||||
|
if (lootTrackerClient != null)
|
||||||
|
{
|
||||||
|
LootRecord lootRecord = new LootRecord(name, LootRecordType.PLAYER, toGameItems(items));
|
||||||
|
lootTrackerClient.submit(lootRecord);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -244,14 +296,19 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
.map(item -> new ItemStack(item.getId(), item.getQuantity(), client.getLocalPlayer().getLocalLocation()))
|
.map(item -> new ItemStack(item.getId(), item.getQuantity(), client.getLocalPlayer().getLocalLocation()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
if (!items.isEmpty())
|
if (items.isEmpty())
|
||||||
{
|
|
||||||
final LootTrackerItem[] entries = buildEntries(stack(items));
|
|
||||||
SwingUtilities.invokeLater(() -> panel.add(eventType, -1, entries));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
log.debug("No items to find for Event: {} | Container: {}", eventType, container);
|
log.debug("No items to find for Event: {} | Container: {}", eventType, container);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final LootTrackerItem[] entries = buildEntries(stack(items));
|
||||||
|
SwingUtilities.invokeLater(() -> panel.add(eventType, -1, entries));
|
||||||
|
|
||||||
|
if (lootTrackerClient != null)
|
||||||
|
{
|
||||||
|
LootRecord lootRecord = new LootRecord(eventType, LootRecordType.EVENT, toGameItems(items));
|
||||||
|
lootTrackerClient.submit(lootRecord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,4 +385,11 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
ignored);
|
ignored);
|
||||||
}).toArray(LootTrackerItem[]::new);
|
}).toArray(LootTrackerItem[]::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Collection<GameItem> toGameItems(Collection<ItemStack> items)
|
||||||
|
{
|
||||||
|
return items.stream()
|
||||||
|
.map(item -> new GameItem(item.getId(), item.getQuantity()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user