Update Util sequence
This commit is contained in:
parent
ee472f0166
commit
32083f1188
|
@ -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 <V> CompletableFuture<List<V>> sequence(List<? extends CompletableFuture<? extends V>> futures) {
|
||||
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
|
||||
.thenApply(v -> {
|
||||
var list = new ArrayList<V>(futures.size());
|
||||
for (CompletableFuture<? extends V> future : futures) {
|
||||
list.add(future.join());
|
||||
}
|
||||
return list;
|
||||
});
|
||||
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]))
|
||||
.thenApply(it -> futures.stream().map(CompletableFuture::join).toList());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user