diff --git a/bukkit/compatibility/build.gradle.kts b/bukkit/compatibility/build.gradle.kts index a3247b4c2..8eb1edaec 100644 --- a/bukkit/compatibility/build.gradle.kts +++ b/bukkit/compatibility/build.gradle.kts @@ -31,7 +31,7 @@ dependencies { // Placeholder compileOnly("me.clip:placeholderapi:${rootProject.properties["placeholder_api_version"]}") // SlimeWorld - compileOnly("com.infernalsuite.asp:api:4.0.0-SNAPSHOT") + compileOnly("com.infernalsuite.asp:api:4.2.0-SNAPSHOT") // ModelEngine compileOnly("com.ticxo.modelengine:ModelEngine:R4.0.8") // BetterModel diff --git a/bukkit/compatibility/legacy/src/main/java/net/momirealms/craftengine/bukkit/compatibility/legacy/slimeworld/LegacySlimeFormatStorageAdaptor.java b/bukkit/compatibility/legacy/src/main/java/net/momirealms/craftengine/bukkit/compatibility/legacy/slimeworld/LegacySlimeFormatStorageAdaptor.java index 982f91c5e..c08c84c29 100644 --- a/bukkit/compatibility/legacy/src/main/java/net/momirealms/craftengine/bukkit/compatibility/legacy/slimeworld/LegacySlimeFormatStorageAdaptor.java +++ b/bukkit/compatibility/legacy/src/main/java/net/momirealms/craftengine/bukkit/compatibility/legacy/slimeworld/LegacySlimeFormatStorageAdaptor.java @@ -3,6 +3,7 @@ package net.momirealms.craftengine.bukkit.compatibility.legacy.slimeworld; import com.infernalsuite.aswm.api.events.LoadSlimeWorldEvent; import com.infernalsuite.aswm.api.world.SlimeWorld; import net.momirealms.craftengine.core.plugin.config.Config; +import net.momirealms.craftengine.core.world.CEWorld; import net.momirealms.craftengine.core.world.World; import net.momirealms.craftengine.core.world.WorldManager; import net.momirealms.craftengine.core.world.chunk.storage.CachedStorage; @@ -24,8 +25,10 @@ public class LegacySlimeFormatStorageAdaptor extends DefaultStorageAdaptor imple @EventHandler public void onWorldLoad(LoadSlimeWorldEvent event) { org.bukkit.World world = Bukkit.getWorld(event.getSlimeWorld().getName()); - this.worldManager.loadWorld(this.worldManager.createWorld(this.worldManager.wrap(world), - Config.enableChunkCache() ? new CachedStorage<>(new LegacySlimeWorldDataStorage(event.getSlimeWorld())) : new LegacySlimeWorldDataStorage(event.getSlimeWorld()))); + if (world == null) return; + CEWorld ceWorld = this.worldManager.createWorld(this.worldManager.wrap(world), + Config.enableChunkCache() ? new CachedStorage<>(new LegacySlimeWorldDataStorage(event.getSlimeWorld())) : new LegacySlimeWorldDataStorage(event.getSlimeWorld())); + this.worldManager.loadWorld(ceWorld, true); } public LegacySlimeFormatStorageAdaptor(WorldManager worldManager, int version) { diff --git a/bukkit/compatibility/legacy/src/main/java/net/momirealms/craftengine/bukkit/compatibility/legacy/slimeworld/LegacySlimeWorldDataStorage.java b/bukkit/compatibility/legacy/src/main/java/net/momirealms/craftengine/bukkit/compatibility/legacy/slimeworld/LegacySlimeWorldDataStorage.java index f62ac011f..2c86f8997 100644 --- a/bukkit/compatibility/legacy/src/main/java/net/momirealms/craftengine/bukkit/compatibility/legacy/slimeworld/LegacySlimeWorldDataStorage.java +++ b/bukkit/compatibility/legacy/src/main/java/net/momirealms/craftengine/bukkit/compatibility/legacy/slimeworld/LegacySlimeWorldDataStorage.java @@ -28,10 +28,7 @@ public class LegacySlimeWorldDataStorage implements WorldDataStorage { @Override public CEChunk readNewChunkAt(CEWorld world, ChunkPos pos) { - SlimeChunk slimeChunk = getWorld().getChunk(pos.x, pos.z); - if (slimeChunk == null) return new CEChunk(world, pos); - slimeChunk.getExtraData().getValue().remove("craftengine"); - return new CEChunk(world, pos); + return readChunkAt(world, pos); } @Override diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/slimeworld/SlimeFormatStorageAdaptor.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/slimeworld/SlimeFormatStorageAdaptor.java index 2c02934a8..9da5e9c08 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/slimeworld/SlimeFormatStorageAdaptor.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/slimeworld/SlimeFormatStorageAdaptor.java @@ -5,12 +5,14 @@ import com.infernalsuite.asp.api.events.LoadSlimeWorldEvent; import com.infernalsuite.asp.api.world.SlimeWorld; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.util.ReflectionUtils; +import net.momirealms.craftengine.core.world.CEWorld; import net.momirealms.craftengine.core.world.World; import net.momirealms.craftengine.core.world.WorldManager; import net.momirealms.craftengine.core.world.chunk.storage.CachedStorage; import net.momirealms.craftengine.core.world.chunk.storage.DefaultStorageAdaptor; import net.momirealms.craftengine.core.world.chunk.storage.WorldDataStorage; import org.bukkit.Bukkit; +import org.bukkit.Chunk; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; @@ -26,8 +28,10 @@ public class SlimeFormatStorageAdaptor extends DefaultStorageAdaptor implements @EventHandler public void onWorldLoad(LoadSlimeWorldEvent event) { org.bukkit.World world = Bukkit.getWorld(event.getSlimeWorld().getName()); - this.worldManager.loadWorld(this.worldManager.createWorld(this.worldManager.wrap(world), - Config.enableChunkCache() ? new CachedStorage<>(new SlimeWorldDataStorage(event.getSlimeWorld(), this)) : new SlimeWorldDataStorage(event.getSlimeWorld(), this))); + if (world == null) return; + CEWorld ceWorld = this.worldManager.createWorld(this.worldManager.wrap(world), + Config.enableChunkCache() ? new CachedStorage<>(new SlimeWorldDataStorage(event.getSlimeWorld(), this)) : new SlimeWorldDataStorage(event.getSlimeWorld(), this)); + this.worldManager.loadWorld(ceWorld, true); } public SlimeFormatStorageAdaptor(WorldManager worldManager) { diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/slimeworld/SlimeWorldDataStorage.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/slimeworld/SlimeWorldDataStorage.java index 6b5f519c9..dcd3bb6b0 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/slimeworld/SlimeWorldDataStorage.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/slimeworld/SlimeWorldDataStorage.java @@ -29,10 +29,7 @@ public class SlimeWorldDataStorage implements WorldDataStorage { @Override public CEChunk readNewChunkAt(CEWorld world, ChunkPos pos) { - SlimeChunk slimeChunk = getWorld().getChunk(pos.x, pos.z); - if (slimeChunk == null) return new CEChunk(world, pos); - slimeChunk.getExtraData().remove("craftengine"); - return new CEChunk(world, pos); + return readChunkAt(world, pos); } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java index 1f25f192b..d5c5fc0b5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java @@ -187,9 +187,13 @@ public class BukkitWorldManager implements WorldManager, Listener { } @Override - public void loadWorld(CEWorld world) { + public void loadWorld(CEWorld world, boolean forceInit) { UUID uuid = world.world().uuid(); - if (this.worlds.containsKey(uuid)) return; + if (this.worlds.containsKey(uuid)) { + if (!forceInit) { + return; + } + } this.worlds.put(uuid, world); this.resetWorldArray(); this.injectChunkGenerator(world); diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/WorldManager.java b/core/src/main/java/net/momirealms/craftengine/core/world/WorldManager.java index c20304252..e21117ffe 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/WorldManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/WorldManager.java @@ -17,7 +17,7 @@ public interface WorldManager extends Manageable { CEWorld loadWorld(World world); - void loadWorld(CEWorld world); + void loadWorld(CEWorld world, boolean forceInitChunks); CEWorld createWorld(World world, WorldDataStorage storage); diff --git a/gradle.properties b/gradle.properties index 162d77743..4c64f0d34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ zstd_version=1.5.7-6 commons_io_version=2.21.0 commons_lang3_version=3.20.0 sparrow_nbt_version=0.10.9 -sparrow_util_version=0.77 +sparrow_util_version=0.79 fastutil_version=8.5.18 netty_version=4.1.128.Final joml_version=1.10.8