9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-28 19:39:11 +00:00

add slime world support

This commit is contained in:
XiaoMoMi
2025-03-29 01:49:37 +08:00
parent 7b1855d76f
commit 81ac75adb0
6 changed files with 80 additions and 16 deletions

View File

@@ -6,6 +6,7 @@ import net.momirealms.craftengine.core.util.SectionPosUtils;
import net.momirealms.craftengine.core.world.CEWorld;
import net.momirealms.craftengine.core.world.World;
import net.momirealms.craftengine.core.world.chunk.storage.StorageAdaptor;
import net.momirealms.craftengine.core.world.chunk.storage.WorldDataStorage;
public class BukkitCEWorld extends CEWorld {
@@ -13,6 +14,10 @@ public class BukkitCEWorld extends CEWorld {
super(world, adaptor);
}
public BukkitCEWorld(World world, WorldDataStorage dataStorage) {
super(world, dataStorage);
}
@Override
public void tick() {
if (ConfigManager.enableLightSystem()) {

View File

@@ -19,6 +19,7 @@ import net.momirealms.craftengine.core.world.chunk.CESection;
import net.momirealms.craftengine.core.world.chunk.serialization.ChunkSerializer;
import net.momirealms.craftengine.core.world.chunk.storage.DefaultStorageAdaptor;
import net.momirealms.craftengine.core.world.chunk.storage.StorageAdaptor;
import net.momirealms.craftengine.core.world.chunk.storage.WorldDataStorage;
import net.momirealms.sparrow.nbt.CompoundTag;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
@@ -168,6 +169,26 @@ public class BukkitWorldManager implements WorldManager, Listener {
}
}
@Override
public void loadWorld(CEWorld world) {
this.worldMapLock.writeLock().lock();
try {
if (this.worlds.containsKey(world.world().uuid())) return;
this.worlds.put(world.world().uuid(), world);
this.resetWorldArray();
for (Chunk chunk : ((World) world.world().platformWorld()).getLoadedChunks()) {
handleChunkLoad(world, chunk);
}
} finally {
this.worldMapLock.writeLock().unlock();
}
}
@Override
public CEWorld createWorld(net.momirealms.craftengine.core.world.World world, WorldDataStorage storage) {
return new BukkitCEWorld(world, storage);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onWorldUnload(WorldUnloadEvent event) {
unloadWorld(new BukkitWorld(event.getWorld()));