diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPartyOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPartyOverlay.java index 00d2688f09..651d60e37d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPartyOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPartyOverlay.java @@ -51,6 +51,7 @@ public class RaidsPartyOverlay extends Overlay { public static final String PARTY_OVERLAY_DEBUG = "Debug"; public static final String PARTY_OVERLAY_RESET = "Reset missing"; + public static final String PARTY_OVERLAY_REFRESH = "Refresh party"; @Inject private Client client; @@ -69,6 +70,7 @@ public class RaidsPartyOverlay extends Overlay getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "Raids party overlay")); getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, PARTY_OVERLAY_DEBUG, "Raids party overlay")); getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, PARTY_OVERLAY_RESET, "Raids party overlay")); + getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, PARTY_OVERLAY_REFRESH, "Raids party overlay")); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPlugin.java index 29502c52f5..8a9538f275 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPlugin.java @@ -235,8 +235,8 @@ public class RaidsPlugin extends Plugin startingPartyMembers.clear(); missingPartyMembers.clear(); - partyMembers.addAll(Lists.transform(players, Player::getName)); - startingPartyMembers.addAll(partyMembers); + startingPartyMembers.addAll(Lists.transform(players, Player::getName)); + partyMembers.addAll(startingPartyMembers); } } @@ -296,15 +296,21 @@ public class RaidsPlugin extends Plugin switch (entry.getOption()) { case RaidsPartyOverlay.PARTY_OVERLAY_DEBUG: System.out.println("Starting players: "); - getPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println); + getStartingPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println); System.out.println("Current players: "); getPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println); System.out.println("Missing players: "); getMissingPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println); break; case RaidsPartyOverlay.PARTY_OVERLAY_RESET: + startingPartyMembers.clear(); updatePartyMembers(true); + startingPartyMembers.addAll(partyMembers); + missingPartyMembers.clear(); break; + case RaidsPartyOverlay.PARTY_OVERLAY_REFRESH: + updatePartyMembers(true); + break; default: break; } @@ -317,14 +323,8 @@ public class RaidsPlugin extends Plugin return; } - if (force) { - partyMembers.clear(); - startingPartyMembers.clear(); - missingPartyMembers.clear(); - } - - if (startingPartyMembers.size() == partySize) { - // Skip update if we have a list of starting party members the same size as current party + if (startingPartyMembers.size() == partySize && !force) { + // Skip update if the part is as big as when we started return; } @@ -334,7 +334,7 @@ public class RaidsPlugin extends Plugin try { widgets = client.getWidget(WidgetInfo.RAIDING_PARTY).getStaticChildren()[2].getStaticChildren()[3].getDynamicChildren(); } catch (NullPointerException e) { - return; // Raid widget not (fully) loaded yet + return; // Raid widget not loaded } partyMembers.clear(); @@ -349,8 +349,8 @@ public class RaidsPlugin extends Plugin } } - // If there are more people now than there were, update starting members - if (partySize > startingPartyMembers.size()) { + // If we don't have any starting members, update starting members + if (startingPartyMembers.size() == 0 || force) { missingPartyMembers.clear(); startingPartyMembers.clear(); startingPartyMembers.addAll(partyMembers);