Skip to content

Commit 92c068c

Browse files
committed
Fix crash related to removing death waypoints
1 parent eb166f5 commit 92c068c

File tree

4 files changed

+26
-11
lines changed

4 files changed

+26
-11
lines changed

src/main/java/meteordevelopment/meteorclient/systems/modules/render/WaypointsModule.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@
3737
import org.joml.Vector3d;
3838

3939
import java.text.SimpleDateFormat;
40+
import java.util.ArrayList;
4041
import java.util.Date;
41-
import java.util.Iterator;
42+
import java.util.List;
4243

4344
import static meteordevelopment.meteorclient.utils.player.ChatUtils.formatCoords;
4445

@@ -96,9 +97,8 @@ private void onRender2D(Render2DEvent event) {
9697
Vector3d center = new Vector3d(mc.getWindow().getFramebufferWidth() / 2.0, mc.getWindow().getFramebufferHeight() / 2.0, 0);
9798
int textRenderDist = textRenderDistance.get();
9899

99-
for (Iterator<Waypoint> it = Waypoints.get().iterator(); it.hasNext();) {
100-
Waypoint waypoint = it.next();
101-
100+
List<Waypoint> toRemove = new ArrayList<>();
101+
for (Waypoint waypoint : Waypoints.get()) {
102102
// Continue if this waypoint should not be rendered
103103
if (!waypoint.visible.get() || !Waypoints.checkDimension(waypoint)) continue;
104104

@@ -114,7 +114,10 @@ private void onRender2D(Render2DEvent event) {
114114
if (playerAlive && waypointIsNear) {
115115
switch (waypoint.actionWhenNear.get()) {
116116
case Hide -> waypoint.visible.set(false);
117-
case Delete -> it.remove();
117+
case Delete -> {
118+
toRemove.add(waypoint);
119+
continue;
120+
}
118121
}
119122
}
120123

@@ -158,6 +161,8 @@ private void onRender2D(Render2DEvent event) {
158161

159162
NametagUtils.end();
160163
}
164+
165+
Waypoints.get().removeAll(toRemove);
161166
}
162167

163168
@EventHandler
@@ -198,16 +203,16 @@ public void addDeath(Vec3d deathPos) {
198203
private void cleanDeathWPs(int max) {
199204
int oldWpC = 0;
200205

201-
for (Iterator<Waypoint> it = Waypoints.get().iterator(); it.hasNext();) {
202-
Waypoint wp = it.next();
203-
206+
List<Waypoint> toRemove = new ArrayList<>();
207+
for (Waypoint wp : Waypoints.get()) {
204208
if (wp.name.get().startsWith("Death ") && wp.icon.get().equals("skull")) {
205209
oldWpC++;
206210

207-
if (oldWpC > max)
208-
it.remove();
211+
if (oldWpC > max) toRemove.add(wp);
209212
}
210213
}
214+
215+
Waypoints.get().removeAll(toRemove);
211216
}
212217

213218
@Override

src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoints.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@
3131
import java.io.FileInputStream;
3232
import java.io.IOException;
3333
import java.io.InputStream;
34-
import java.util.*;
34+
import java.util.Collection;
35+
import java.util.Iterator;
36+
import java.util.List;
37+
import java.util.Map;
3538
import java.util.concurrent.ConcurrentHashMap;
3639
import java.util.concurrent.CopyOnWriteArrayList;
3740

@@ -107,6 +110,11 @@ public boolean remove(Waypoint waypoint) {
107110
return removed;
108111
}
109112

113+
public void removeAll(Collection<Waypoint> c) {
114+
boolean removed = waypoints.removeAll(c);
115+
if (removed) save();
116+
}
117+
110118
public Waypoint get(String name) {
111119
for (Waypoint waypoint : waypoints) {
112120
if (waypoint.name.get().equalsIgnoreCase(name)) return waypoint;

src/main/java/meteordevelopment/meteorclient/systems/waypoints/events/WaypointAddedEvent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import meteordevelopment.meteorclient.systems.waypoints.Waypoint;
99

10+
@Deprecated()
1011
public class WaypointAddedEvent {
1112

1213
public final Waypoint waypoint;

src/main/java/meteordevelopment/meteorclient/systems/waypoints/events/WaypointRemovedEvent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import meteordevelopment.meteorclient.systems.waypoints.Waypoint;
99

10+
@Deprecated()
1011
public class WaypointRemovedEvent {
1112

1213
public final Waypoint waypoint;

0 commit comments

Comments
 (0)