Update Util sequence

This commit is contained in:
IzzelAliz 2022-03-07 16:06:27 +08:00
parent ee472f0166
commit 32083f1188
No known key found for this signature in database
GPG Key ID: EE50E123A11D8338

View File

@ -4,7 +4,6 @@ import net.minecraft.Util;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Overwrite;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -16,14 +15,14 @@ public class UtilMixin_Optimize {
* @reason original method allocates tons of garbage * @reason original method allocates tons of garbage
*/ */
@Overwrite @Overwrite
public static <V> CompletableFuture<List<V>> sequence(List<? extends CompletableFuture<? extends V>> futures) { public static <V> CompletableFuture<List<V>> sequence(List<? extends CompletableFuture<V>> 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])) return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
.thenApply(v -> { .thenApply(it -> futures.stream().map(CompletableFuture::join).toList());
var list = new ArrayList<V>(futures.size()); }
for (CompletableFuture<? extends V> future : futures) {
list.add(future.join());
}
return list;
});
} }
} }