diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java index f299819854..981a1c345e 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java @@ -28,7 +28,7 @@ public void build(LiteralArgumentBuilder builder) { Systems.load(); Capes.init(); Fonts.refresh(); - MeteorExecutor.execute(() -> Friends.get().forEach(Friend::updateInfo)); + Friends.get().refresh(); return SINGLE_SUCCESS; }); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/friends/Friends.java b/src/main/java/meteordevelopment/meteorclient/systems/friends/Friends.java index c6168edfdc..2d3221358e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/friends/Friends.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/friends/Friends.java @@ -20,6 +20,10 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; public class Friends extends System implements Iterable { private final List friends = new ArrayList<>(); @@ -127,8 +131,23 @@ public Friends fromTag(NbtCompound tag) { Collections.sort(friends); - MeteorExecutor.execute(() -> friends.forEach(Friend::updateInfo)); + refresh(); return this; } + + public void refresh() { + MeteorExecutor.execute(() -> { + try (ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(Thread.ofVirtual().name("Friend refresh").factory())) { + Iterator iterator = Friends.get().iterator(); + scheduler.scheduleAtFixedRate(() -> { + if (iterator.hasNext()) { + iterator.next().updateInfo(); + } else { + scheduler.shutdown(); + } + }, 0, 1, TimeUnit.SECONDS); + } + }); + } }