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.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;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user