From 32083f11881a2db72160b521acb346a283fdb7a1 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Mon, 7 Mar 2022 16:06:27 +0800 Subject: [PATCH] Update Util sequence --- .../general/UtilMixin_Optimize.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/UtilMixin_Optimize.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/UtilMixin_Optimize.java index ce0fd2a8..9b5ed054 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/UtilMixin_Optimize.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/UtilMixin_Optimize.java @@ -4,7 +4,6 @@ import net.minecraft.Util; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -16,14 +15,14 @@ public class UtilMixin_Optimize { * @reason original method allocates tons of garbage */ @Overwrite - public static CompletableFuture> sequence(List> futures) { - return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) - .thenApply(v -> { - var list = new ArrayList(futures.size()); - for (CompletableFuture future : futures) { - list.add(future.join()); - } - return list; - }); + public static CompletableFuture> sequence(List> futures) { + if (futures.isEmpty()) { + return CompletableFuture.completedFuture(List.of()); + } else if (futures.size() == 1) { + return futures.get(0).thenApply(List::of); + } else { + return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) + .thenApply(it -> futures.stream().map(CompletableFuture::join).toList()); + } } }