Fix ConcurrentModification in party stats overlay
Fix concurrent modification exception in party stats overlay when iterating map. Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
@@ -119,7 +119,7 @@ public class PartyPlugin extends Plugin implements KeyListener
|
|||||||
private ChatMessageManager chatMessageManager;
|
private ChatMessageManager chatMessageManager;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final Map<UUID, PartyData> partyDataMap = new HashMap<>();
|
private final Map<UUID, PartyData> partyDataMap = Collections.synchronizedMap(new HashMap<>());
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final List<PartyTilePingData> pendingTilePings = Collections.synchronizedList(new ArrayList<>());
|
private final List<PartyTilePingData> pendingTilePings = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
|||||||
@@ -80,54 +80,57 @@ public class PartyStatsOverlay extends Overlay
|
|||||||
|
|
||||||
boolean only1 = plugin.getPartyDataMap().size() == 1;
|
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()
|
if (only1)
|
||||||
.text("No other party members")
|
{
|
||||||
.color(Color.RED)
|
body.getChildren().add(TitleComponent.builder()
|
||||||
.build());
|
.text("No other party members")
|
||||||
|
.color(Color.RED)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
final PanelComponent panel = v.getPanel();
|
||||||
}
|
panel.getChildren().clear();
|
||||||
|
|
||||||
final PanelComponent panel = v.getPanel();
|
final TitleComponent name = TitleComponent.builder()
|
||||||
panel.getChildren().clear();
|
.text(v.getName())
|
||||||
|
.build();
|
||||||
|
|
||||||
final TitleComponent name = TitleComponent.builder()
|
panel.getChildren().add(name);
|
||||||
.text(v.getName())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
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)
|
if (v.getPrayer() > 0)
|
||||||
{
|
{
|
||||||
final ProgressBarComponent hpBar = new ProgressBarComponent();
|
final ProgressBarComponent prayBar = new ProgressBarComponent();
|
||||||
hpBar.setBackgroundColor(HP_BG);
|
prayBar.setBackgroundColor(PRAY_BG);
|
||||||
hpBar.setForegroundColor(HP_FG);
|
prayBar.setForegroundColor(PRAY_FG);
|
||||||
hpBar.setMaximum(v.getMaxHitpoints());
|
prayBar.setMaximum(v.getMaxPrayer());
|
||||||
hpBar.setValue(v.getHitpoints());
|
prayBar.setValue(v.getPrayer());
|
||||||
hpBar.setLabelDisplayMode(ProgressBarComponent.LabelDisplayMode.FULL);
|
prayBar.setLabelDisplayMode(ProgressBarComponent.LabelDisplayMode.FULL);
|
||||||
panel.getChildren().add(hpBar);
|
panel.getChildren().add(prayBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v.getPrayer() > 0)
|
body.getChildren().add(panel);
|
||||||
{
|
});
|
||||||
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);
|
|
||||||
});
|
|
||||||
|
|
||||||
return body.render(graphics);
|
return body.render(graphics);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user