diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/localstorage/LootRecordWriter.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/localstorage/LootRecordWriter.java index 18cbfb2c90..4e0c5497dc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/localstorage/LootRecordWriter.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/localstorage/LootRecordWriter.java @@ -109,18 +109,27 @@ public class LootRecordWriter try (final BufferedReader br = new BufferedReader(new FileReader(file))) { - // read line by line String line; + int totalBrackets = 0; while ((line = br.readLine()) != null) { - sb.append(line).append("\n"); - } + if (line.contains("{")) + { + totalBrackets++; + } + else if (line.contains("}")) + { + totalBrackets--; + } + sb.append(line); - if (sb.length() > 0) - { - final LTRecord r = RuneLiteAPI.GSON.fromJson(sb.toString(), LTRecord.class); - data.add(r); + if (totalBrackets == 0 && sb.length() > 0) + { + final LTRecord r = RuneLiteAPI.GSON.fromJson(sb.toString(), LTRecord.class); + data.add(r); + sb.setLength(0); + } } } catch (FileNotFoundException e) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/StonedTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/StonedTrackerPlugin.java index 65bb0bc0f3..0a2523f6d1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/StonedTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/StonedTrackerPlugin.java @@ -266,6 +266,7 @@ public class StonedTrackerPlugin extends Plugin public boolean clearStoredDataByName(final String name) { + lootNames.remove(name); return writer.deleteLootTrackerRecords(name); } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/data/BossTab.java b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/data/BossTab.java index 26d74584ce..e25b3d925d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/data/BossTab.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/data/BossTab.java @@ -80,6 +80,8 @@ public enum BossTab // Other Bosses GIANT_MOLE("Giant Mole", ItemID.BABY_MOLE, "Other"), CORPOREAL_BEAST("Corporeal Beast", ItemID.PET_CORPOREAL_CRITTER, "Other"), + THE_GAUNTLET("The Gauntlet", ItemID.YOUNGLLEF, "Other"), + // Dagannoth Kings DAGANNOTH_REX("Dagannoth Rex", ItemID.PET_DAGANNOTH_REX, "Dagannoth Kings"), DAGANNOTH_PRIME("Dagannoth Prime", ItemID.PET_DAGANNOTH_PRIME, "Dagannoth Kings"), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/data/UniqueItem.java b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/data/UniqueItem.java index e9c90c33ff..4e6d4c7188 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/data/UniqueItem.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/data/UniqueItem.java @@ -236,6 +236,7 @@ public enum UniqueItem HYDRAS_FANG(ItemID.HYDRAS_FANG, BossTab.ALCHEMICAL_HYDRA, 0), HYDRAS_HEART(ItemID.HYDRAS_HEART, BossTab.ALCHEMICAL_HYDRA, 0), HYDRA_TAIL(ItemID.HYDRA_TAIL, BossTab.ALCHEMICAL_HYDRA, 0), + HYDRA_HEADS(ItemID.ALCHEMICAL_HYDRA_HEADS, BossTab.ALCHEMICAL_HYDRA, 0), HYDRA_LEATHER(ItemID.HYDRA_LEATHER, BossTab.ALCHEMICAL_HYDRA, 1), HYDRAS_CLAW(ItemID.HYDRAS_CLAW, BossTab.ALCHEMICAL_HYDRA, 1), DRAGON_THROWNAXE(ItemID.DRAGON_THROWNAXE, BossTab.ALCHEMICAL_HYDRA, 1), @@ -257,6 +258,12 @@ public enum UniqueItem SPECTRAL_SIGIL(ItemID.SPECTRAL_SIGIL, BossTab.CORPOREAL_BEAST, 1), ARCANE_SIGIL(ItemID.ARCANE_SIGIL, BossTab.CORPOREAL_BEAST, 1), ELYSIAN_SIGIL(ItemID.ELYSIAN_SIGIL, BossTab.CORPOREAL_BEAST, 1), + // The Gauntlet + CRYSTAL_SHARD(ItemID.CRYSTAL_SHARD, BossTab.THE_GAUNTLET, 0), + CRYSTAL_WEAPON_SEED(ItemID.CRYSTAL_WEAPON_SEED, BossTab.THE_GAUNTLET, 0), + CRYSTAL_ARMOUR_SEED(ItemID.CRYSTAL_ARMOUR_SEED, BossTab.THE_GAUNTLET, 0), + BLADE_OF_SAELDOR(ItemID.BLADE_OF_SAELDOR, BossTab.THE_GAUNTLET, 0), + YOUNGLLEF(ItemID.YOUNGLLEF, BossTab.THE_GAUNTLET, 0), // Dagannoth Rex RING_OF_LIFE(ItemID.RING_OF_LIFE, BossTab.DAGANNOTH_REX, -1), WARRIOR_RING(ItemID.WARRIOR_RING, BossTab.DAGANNOTH_REX, -1), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/ui/LootPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/ui/LootPanel.java index 34132dc304..c6fa930898 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/ui/LootPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/ui/LootPanel.java @@ -188,7 +188,7 @@ class LootPanel extends JPanel // Track total price of all tracked items for this panel // Also ensure it is placed in correct location by preserving its gridy value - long totalValue = 0; + long totalValue = consolidated.values().stream().mapToLong(e -> e.getPrice() * e.getQuantity()).sum(); final int totalValueIndex = c.gridy; c.gridy++; @@ -200,7 +200,6 @@ class LootPanel extends JPanel if (itemsToDisplay.size() > 0) { - totalValue = itemsToDisplay.stream().mapToLong(e -> e.getPrice() * e.getQuantity()).sum(); if (itemBreakdown) { for (final LTItemEntry e : itemsToDisplay)