From 835c8422f1b0c8b05005252128c552c36266a82f Mon Sep 17 00:00:00 2001 From: Julian Krings Date: Mon, 2 Jun 2025 17:42:36 +0200 Subject: [PATCH] calculate spawn location async --- .../engine/platform/BukkitChunkGenerator.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java b/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java index 410e8bbe0..ab5d67066 100644 --- a/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java +++ b/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java @@ -40,6 +40,7 @@ import com.volmit.iris.util.io.ReactiveFolder; import com.volmit.iris.util.scheduling.ChronoLatch; import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.Looper; +import io.papermc.lib.PaperLib; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.Setter; @@ -144,6 +145,20 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun } } + @Nullable + @Override + public Location getFixedSpawnLocation(@NotNull World world, @NotNull Random random) { + Location location = new Location(world, 0, 64, 0); + PaperLib.getChunkAtAsync(location) + .thenAccept(c -> { + World w = c.getWorld(); + if (!w.getSpawnLocation().equals(location)) + return; + w.setSpawnLocation(location.add(0, w.getHighestBlockYAt(location) - 64, 0)); + }); + return location; + } + private void setupEngine() { IrisData data = IrisData.get(dataLocation); IrisDimension dimension = data.getDimensionLoader().load(dimensionKey);