From dd437dbb3f8faf813b5eba7d9dda31808bdbf5a6 Mon Sep 17 00:00:00 2001 From: ishland Date: Tue, 18 Apr 2023 12:26:33 +0800 Subject: [PATCH 1/3] fix: TaskExecutor loads too early --- .../java/com/ishland/c2me/base/common/GlobalExecutors.java | 3 +-- .../base/mixin/scheduler/MixinThreadedAnvilChunkStorage.java | 2 +- .../java/com/ishland/c2me/notickvd/common/NoTickSystem.java | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/c2me-base/src/main/java/com/ishland/c2me/base/common/GlobalExecutors.java b/c2me-base/src/main/java/com/ishland/c2me/base/common/GlobalExecutors.java index e19798c0..324a7083 100644 --- a/c2me-base/src/main/java/com/ishland/c2me/base/common/GlobalExecutors.java +++ b/c2me-base/src/main/java/com/ishland/c2me/base/common/GlobalExecutors.java @@ -3,7 +3,6 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.ishland.c2me.base.ModuleEntryPoint; import com.ishland.c2me.base.common.util.C2MENormalWorkerThreadFactory; -import net.minecraft.util.thread.TaskExecutor; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; @@ -37,6 +36,6 @@ public class GlobalExecutors { new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setDaemon(true).setNameFormat("c2me-sched").build()); - public static final TaskExecutor asyncSchedulerTaskExecutor = TaskExecutor.create(asyncScheduler, "c2me-sched"); +// public static final TaskExecutor asyncSchedulerTaskExecutor = TaskExecutor.create(asyncScheduler, "c2me-sched"); } diff --git a/c2me-base/src/main/java/com/ishland/c2me/base/mixin/scheduler/MixinThreadedAnvilChunkStorage.java b/c2me-base/src/main/java/com/ishland/c2me/base/mixin/scheduler/MixinThreadedAnvilChunkStorage.java index 1cdd1778..b998fb58 100644 --- a/c2me-base/src/main/java/com/ishland/c2me/base/mixin/scheduler/MixinThreadedAnvilChunkStorage.java +++ b/c2me-base/src/main/java/com/ishland/c2me/base/mixin/scheduler/MixinThreadedAnvilChunkStorage.java @@ -13,7 +13,7 @@ @Mixin(ThreadedAnvilChunkStorage.class) public class MixinThreadedAnvilChunkStorage implements IVanillaChunkManager { - private final SchedulingManager c2me$schedulingManager = new SchedulingManager(GlobalExecutors.asyncSchedulerTaskExecutor::send, GlobalExecutors.GLOBAL_EXECUTOR_PARALLELISM * 2); + private final SchedulingManager c2me$schedulingManager = new SchedulingManager(GlobalExecutors.asyncScheduler, GlobalExecutors.GLOBAL_EXECUTOR_PARALLELISM * 2); @Override public SchedulingManager c2me$getSchedulingManager() { diff --git a/c2me-notickvd/src/main/java/com/ishland/c2me/notickvd/common/NoTickSystem.java b/c2me-notickvd/src/main/java/com/ishland/c2me/notickvd/common/NoTickSystem.java index 17c79683..da68705a 100644 --- a/c2me-notickvd/src/main/java/com/ishland/c2me/notickvd/common/NoTickSystem.java +++ b/c2me-notickvd/src/main/java/com/ishland/c2me/notickvd/common/NoTickSystem.java @@ -26,7 +26,7 @@ public class NoTickSystem { final NoThreadScheduler noThreadScheduler = new NoThreadScheduler(); private final AtomicBoolean isTicking = new AtomicBoolean(); - final Executor executor = GlobalExecutors.asyncSchedulerTaskExecutor::send; + final Executor executor = GlobalExecutors.asyncScheduler; private volatile LongSet noTickOnlyChunksSnapshot = LongSets.EMPTY_SET; private volatile boolean pendingPurge = false; private volatile long age = 0; From 96857e14fb073b04aa620f49cc9c6520b418526f Mon Sep 17 00:00:00 2001 From: KidOfCubes Date: Thu, 20 Apr 2023 21:16:24 +0800 Subject: [PATCH 2/3] fix: upgrade visibility of a mixin method to fix some incompatibility issues (#207) --- .../threading/chunkio/mixin/MixinThreadedAnvilChunkStorage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/c2me-threading-chunkio/src/main/java/com/ishland/c2me/threading/chunkio/mixin/MixinThreadedAnvilChunkStorage.java b/c2me-threading-chunkio/src/main/java/com/ishland/c2me/threading/chunkio/mixin/MixinThreadedAnvilChunkStorage.java index f71a40ac..9d9ca8ea 100644 --- a/c2me-threading-chunkio/src/main/java/com/ishland/c2me/threading/chunkio/mixin/MixinThreadedAnvilChunkStorage.java +++ b/c2me-threading-chunkio/src/main/java/com/ishland/c2me/threading/chunkio/mixin/MixinThreadedAnvilChunkStorage.java @@ -270,7 +270,7 @@ private CompletableFuture> getUpdatedChunkNbtAtAsync(Chunk * @reason skip datafixer if possible */ @Overwrite - private CompletableFuture> getUpdatedChunkNbt(ChunkPos chunkPos) { + public CompletableFuture> getUpdatedChunkNbt(ChunkPos chunkPos) { // return this.getNbt(chunkPos).thenApplyAsync(nbt -> nbt.map(this::updateChunkNbt), Util.getMainWorkerExecutor()); return this.getNbt(chunkPos).thenCompose(nbt -> { if (nbt.isPresent()) { From c0ac08e428d0c578a2d8767350d90600bdddfe54 Mon Sep 17 00:00:00 2001 From: ishland Date: Tue, 18 Apr 2023 18:32:14 +0800 Subject: [PATCH 3/3] fix: incorrect random instance derive --- .../com/ishland/c2me/base/mixin/access/ISimpleRandom.java | 5 +++-- .../general/common/random_instances/RandomUtils.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/c2me-base/src/main/java/com/ishland/c2me/base/mixin/access/ISimpleRandom.java b/c2me-base/src/main/java/com/ishland/c2me/base/mixin/access/ISimpleRandom.java index e1e8c4e0..d250b423 100644 --- a/c2me-base/src/main/java/com/ishland/c2me/base/mixin/access/ISimpleRandom.java +++ b/c2me-base/src/main/java/com/ishland/c2me/base/mixin/access/ISimpleRandom.java @@ -3,6 +3,7 @@ import net.minecraft.util.math.random.LocalRandom; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(LocalRandom.class) public interface ISimpleRandom { @@ -10,7 +11,7 @@ public interface ISimpleRandom { @Accessor long getSeed(); - @Accessor - void setSeed(long seed); + @Invoker + void invokeSetSeed(long seed); } diff --git a/c2me-opts-worldgen-general/src/main/java/com/ishland/c2me/opts/worldgen/general/common/random_instances/RandomUtils.java b/c2me-opts-worldgen-general/src/main/java/com/ishland/c2me/opts/worldgen/general/common/random_instances/RandomUtils.java index fc088b18..09b88568 100644 --- a/c2me-opts-worldgen-general/src/main/java/com/ishland/c2me/opts/worldgen/general/common/random_instances/RandomUtils.java +++ b/c2me-opts-worldgen-general/src/main/java/com/ishland/c2me/opts/worldgen/general/common/random_instances/RandomUtils.java @@ -28,7 +28,7 @@ public static void derive(RandomSplitter deriver, Random random, int x, int y, i if (deriver instanceof CheckedRandom.Splitter) { final ISimpleRandom random1 = (ISimpleRandom) random; final IAtomicSimpleRandomDeriver deriver1 = (IAtomicSimpleRandomDeriver) deriver; - random1.setSeed(MathHelper.hashCode(x, y, z) ^ deriver1.getSeed()); + random1.invokeSetSeed(MathHelper.hashCode(x, y, z) ^ deriver1.getSeed()); return; } throw new IllegalArgumentException();