mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-04-24 00:47:31 +00:00
Allow onion bursting for post mantle jobs
This commit is contained in:
@@ -44,6 +44,7 @@ import org.bukkit.block.data.BlockData;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@@ -189,8 +190,13 @@ public interface EngineMantle extends IObjectPlacer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
List<Runnable> post = Collections.synchronizedList(new KList<>());
|
KList<Runnable> post = new KList<>();
|
||||||
Consumer<Runnable> c = post::add;
|
Consumer<Runnable> c = (i) -> {
|
||||||
|
synchronized (post)
|
||||||
|
{
|
||||||
|
post.add(i);
|
||||||
|
}
|
||||||
|
};
|
||||||
int s = getRealRadius();
|
int s = getRealRadius();
|
||||||
BurstExecutor burst = burst().burst();
|
BurstExecutor burst = burst().burst();
|
||||||
|
|
||||||
@@ -205,7 +211,13 @@ public interface EngineMantle extends IObjectPlacer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
burst.complete();
|
burst.complete();
|
||||||
burst().burst(post);
|
|
||||||
|
while(!post.isEmpty())
|
||||||
|
{
|
||||||
|
KList<Runnable> px = post.copy();
|
||||||
|
post.clear();
|
||||||
|
burst().burst(px);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default void generateMantleComponent(int x, int z, MantleComponent c, Consumer<Runnable> post) {
|
default void generateMantleComponent(int x, int z, MantleComponent c, Consumer<Runnable> post) {
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class BurstExecutor {
|
|||||||
|
|
||||||
public BurstExecutor queue(List<Runnable> r) {
|
public BurstExecutor queue(List<Runnable> r) {
|
||||||
synchronized (futures) {
|
synchronized (futures) {
|
||||||
for (Runnable i : r) {
|
for (Runnable i : new KList<>(r)) {
|
||||||
CompletableFuture<Void> c = CompletableFuture.runAsync(i, executor);
|
CompletableFuture<Void> c = CompletableFuture.runAsync(i, executor);
|
||||||
futures.add(c);
|
futures.add(c);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user