loot tracker: Fix "Show each kill separately" view

This commit is contained in:
TheStonedTurtle
2020-05-11 02:03:35 -07:00
committed by Adam
parent 3122295144
commit ff0e2a5245

View File

@@ -26,6 +26,7 @@
package net.runelite.client.plugins.loottracker;
import static com.google.common.collect.Iterables.concat;
import com.google.common.collect.Lists;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
@@ -33,11 +34,12 @@ import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
@@ -456,12 +458,16 @@ class LootTrackerPanel extends PluginPanel
}
else
{
sessionRecords.stream()
.sorted(Collections.reverseOrder())
// Loop in reverse insertion order so limiting includes most recent data
Lists.reverse(sessionRecords).stream()
// filter records prior to limiting so that it is limited to the correct amount
.filter(r -> !hideIgnoredItems || !plugin.isEventIgnored(r.getTitle()))
.limit(MAX_LOOT_BOXES)
.forEach(this::buildBox);
// The box that is built last is first inside the UI.
// since we are looping in reverse order we need to use a data type that support reverse iterating
.collect(Collectors.toCollection(ArrayDeque::new))
.descendingIterator()
.forEachRemaining(this::buildBox);
}
boxes.forEach(LootTrackerBox::rebuild);