feat: updated FlatWorldModule

This commit is contained in:
Andrey Terentev 2025-01-14 12:24:54 +07:00
parent 6f28568a17
commit fb04fbe692

View File

@ -1,17 +1,16 @@
package ru.dragonestia.msb3.api.module; package ru.dragonestia.msb3.api.module;
import lombok.Getter;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.GameMode; import net.minestom.server.entity.GameMode;
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent; import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
import net.minestom.server.instance.Chunk; import net.minestom.server.instance.*;
import net.minestom.server.instance.DynamicChunk;
import net.minestom.server.instance.IChunkLoader;
import net.minestom.server.instance.Instance;
import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.Block;
import net.minestom.server.world.DimensionType; import net.minestom.server.world.DimensionType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import ru.dragonestia.msb3.api.world.World;
import ru.dragonestia.msb3.api.world.WorldFactory; import ru.dragonestia.msb3.api.world.WorldFactory;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -19,13 +18,11 @@ import java.util.concurrent.CompletableFuture;
public class FlatWorldModule { public class FlatWorldModule {
private static boolean used = false; private static boolean used = false;
@Getter private static World world;
private FlatWorldModule() {} private FlatWorldModule() {}
public static synchronized void init(GameMode gameMode) { public static void init(GameMode gameMode) {
if (used) return;
used = true;
var dimension = MinecraftServer.getDimensionTypeRegistry().register("msb3:full_bright", DimensionType.builder() var dimension = MinecraftServer.getDimensionTypeRegistry().register("msb3:full_bright", DimensionType.builder()
.ambientLight(2f) .ambientLight(2f)
.build()); .build());
@ -58,12 +55,19 @@ public class FlatWorldModule {
} }
}); });
var world = factory.createWorldSync(); init(gameMode, factory.createWorldSync(), new Pos(0, 11, 0));
}
public static synchronized void init(GameMode gameMode, World world, Pos spawnPos) {
if (used) return;
used = true;
FlatWorldModule.world = world;
MinecraftServer.getGlobalEventHandler().addListener(AsyncPlayerConfigurationEvent.class, event -> { MinecraftServer.getGlobalEventHandler().addListener(AsyncPlayerConfigurationEvent.class, event -> {
var player = event.getPlayer(); var player = event.getPlayer();
player.setRespawnPoint(new Pos(0, 11, 0)); player.setRespawnPoint(spawnPos);
player.setGameMode(gameMode); player.setGameMode(gameMode);
event.setSpawningInstance(world.getInstance()); event.setSpawningInstance(world.getInstance());