minecraft-src/net/minecraft/util/TaskChainer.java
2025-07-04 01:41:11 +03:00

30 lines
869 B
Java

package net.minecraft.util;
import com.mojang.logging.LogUtils;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
import org.slf4j.Logger;
@FunctionalInterface
public interface TaskChainer {
Logger LOGGER = LogUtils.getLogger();
static TaskChainer immediate(Executor executor) {
return new TaskChainer() {
@Override
public <T> void append(CompletableFuture<T> completableFuture, Consumer<T> consumer) {
completableFuture.thenAcceptAsync(consumer, executor).exceptionally(throwable -> {
LOGGER.error("Task failed", throwable);
return null;
});
}
};
}
default void append(Runnable runnable) {
this.append(CompletableFuture.completedFuture(null), object -> runnable.run());
}
<T> void append(CompletableFuture<T> completableFuture, Consumer<T> consumer);
}