diff --git a/sources/src/main/java/io/akarin/server/core/AkarinSlackScheduler.java b/sources/src/main/java/io/akarin/server/core/AkarinSlackScheduler.java index 5c96c729b..f5813264e 100644 --- a/sources/src/main/java/io/akarin/server/core/AkarinSlackScheduler.java +++ b/sources/src/main/java/io/akarin/server/core/AkarinSlackScheduler.java @@ -1,9 +1,6 @@ package io.akarin.server.core; -import org.bukkit.entity.Player; - import io.akarin.api.Akari; -import net.minecraft.server.ChatMessage; import net.minecraft.server.EntityPlayer; import net.minecraft.server.MinecraftServer; import net.minecraft.server.PacketPlayOutKeepAlive; diff --git a/sources/src/main/java/io/akarin/server/mixin/core/MixinMinecraftServer.java b/sources/src/main/java/io/akarin/server/mixin/core/MixinMinecraftServer.java index 3026eb462..d203248f1 100644 --- a/sources/src/main/java/io/akarin/server/mixin/core/MixinMinecraftServer.java +++ b/sources/src/main/java/io/akarin/server/mixin/core/MixinMinecraftServer.java @@ -140,15 +140,20 @@ public class MixinMinecraftServer { Akari.silentTiming = true; // Disable timings Akari.STAGE_TICK.submit(() -> { // Never tick one world concurrently! + // TODO better treat world index for (int i = 1; i <= worlds.size(); ++i) { WorldServer world = worlds.get(i < worlds.size() ? i : 0); - tickEntities(world); + synchronized (world.tickLock) { + tickEntities(world); + } } }, null); for (int i = 0; i < worlds.size(); ++i) { WorldServer world = worlds.get(i); - tickWorld(world); + synchronized (world.tickLock) { + tickWorld(world); + } } Akari.STAGE_TICK.take();