Merge pull request #7655 from deathbeam/fix-party-exceptions

Fix party exceptions (NPE in PartyPlugin and ConcurrentModification in PartyStatsOverlay)
This commit is contained in:
Tomas Slusny
2019-02-02 18:51:57 +00:00
committed by GitHub
2 changed files with 45 additions and 40 deletions

View File

@@ -119,7 +119,7 @@ public class PartyPlugin extends Plugin implements KeyListener
private ChatMessageManager chatMessageManager;
@Getter
private final Map<UUID, PartyData> partyDataMap = new HashMap<>();
private final Map<UUID, PartyData> partyDataMap = Collections.synchronizedMap(new HashMap<>());
@Getter
private final List<PartyTilePingData> pendingTilePings = Collections.synchronizedList(new ArrayList<>());
@@ -354,7 +354,9 @@ public class PartyPlugin extends Plugin implements KeyListener
.runeLiteFormattedMessage(joinMessage)
.build());
if (partyData.getMemberId().equals(party.getLocalMember().getMemberId()))
final PartyMember localMember = party.getLocalMember();
if (localMember != null && partyData.getMemberId().equals(localMember.getMemberId()))
{
final String helpMessage = new ChatMessageBuilder()
.append(ChatColorType.HIGHLIGHT)

View File

@@ -80,54 +80,57 @@ public class PartyStatsOverlay extends Overlay
boolean only1 = plugin.getPartyDataMap().size() == 1;
partyDataMap.forEach((k, v) ->
synchronized (plugin.getPartyDataMap())
{
if (party.getLocalMember() != null && party.getLocalMember().getMemberId().equals(k))
partyDataMap.forEach((k, v) ->
{
if (only1)
if (party.getLocalMember() != null && party.getLocalMember().getMemberId().equals(k))
{
body.getChildren().add(TitleComponent.builder()
.text("No other party members")
.color(Color.RED)
.build());
if (only1)
{
body.getChildren().add(TitleComponent.builder()
.text("No other party members")
.color(Color.RED)
.build());
}
return;
}
return;
}
final PanelComponent panel = v.getPanel();
panel.getChildren().clear();
final PanelComponent panel = v.getPanel();
panel.getChildren().clear();
final TitleComponent name = TitleComponent.builder()
.text(v.getName())
.build();
final TitleComponent name = TitleComponent.builder()
.text(v.getName())
.build();
panel.getChildren().add(name);
panel.getChildren().add(name);
if (v.getHitpoints() > 0)
{
final ProgressBarComponent hpBar = new ProgressBarComponent();
hpBar.setBackgroundColor(HP_BG);
hpBar.setForegroundColor(HP_FG);
hpBar.setMaximum(v.getMaxHitpoints());
hpBar.setValue(v.getHitpoints());
hpBar.setLabelDisplayMode(ProgressBarComponent.LabelDisplayMode.FULL);
panel.getChildren().add(hpBar);
}
if (v.getHitpoints() > 0)
{
final ProgressBarComponent hpBar = new ProgressBarComponent();
hpBar.setBackgroundColor(HP_BG);
hpBar.setForegroundColor(HP_FG);
hpBar.setMaximum(v.getMaxHitpoints());
hpBar.setValue(v.getHitpoints());
hpBar.setLabelDisplayMode(ProgressBarComponent.LabelDisplayMode.FULL);
panel.getChildren().add(hpBar);
}
if (v.getPrayer() > 0)
{
final ProgressBarComponent prayBar = new ProgressBarComponent();
prayBar.setBackgroundColor(PRAY_BG);
prayBar.setForegroundColor(PRAY_FG);
prayBar.setMaximum(v.getMaxPrayer());
prayBar.setValue(v.getPrayer());
prayBar.setLabelDisplayMode(ProgressBarComponent.LabelDisplayMode.FULL);
panel.getChildren().add(prayBar);
}
if (v.getPrayer() > 0)
{
final ProgressBarComponent prayBar = new ProgressBarComponent();
prayBar.setBackgroundColor(PRAY_BG);
prayBar.setForegroundColor(PRAY_FG);
prayBar.setMaximum(v.getMaxPrayer());
prayBar.setValue(v.getPrayer());
prayBar.setLabelDisplayMode(ProgressBarComponent.LabelDisplayMode.FULL);
panel.getChildren().add(prayBar);
}
body.getChildren().add(panel);
});
body.getChildren().add(panel);
});
}
return body.render(graphics);
}