From 459f1265371b127a8fbde8625d997bf2a4343f5b Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Fri, 15 Jun 2018 17:05:06 +0200 Subject: [PATCH] Fix UnsupportedOperationException in ground items This issue was caused by ground item values not being copied to ArrayList when modified. To avoid unnecessary allocations, create new copy only when required (e.g when holding alt). Signed-off-by: Tomas Slusny --- .../client/plugins/grounditems/GroundItemsOverlay.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java index cc1d6ea5c4..51421681fe 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java @@ -31,6 +31,7 @@ import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -107,11 +108,14 @@ public class GroundItemsOverlay extends Overlay offsetMap.clear(); final LocalPoint localLocation = player.getLocalLocation(); final Point mousePos = client.getMouseCanvasPosition(); - final Collection groundItemList = plugin.getCollectedGroundItems().values(); + Collection groundItemList = plugin.getCollectedGroundItems().values(); GroundItem topGroundItem = null; if (plugin.isHotKeyPressed()) { + // Make copy of ground items because we are going to modify them here, and the array list supports our + // desired behaviour here + groundItemList = new ArrayList<>(groundItemList); final java.awt.Point awtMousePos = new java.awt.Point(mousePos.getX(), mousePos.getY()); GroundItem groundItem = null;