fix: generate populators in every chunk

This commit is contained in:
Christian Bergschneider 2024-12-29 18:55:47 +01:00
parent ac66fc7d69
commit 3a28551e97
2 changed files with 10 additions and 7 deletions

View File

@ -1,11 +1,13 @@
package com.dfsek.terra.minestom;
import com.dfsek.terra.minestom.world.MinestomProtoWorld;
import com.dfsek.terra.minestom.world.TerraMinestomWorldBuilder;
import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.GameMode;
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
import net.minestom.server.event.player.PlayerSpawnEvent;
import net.minestom.server.instance.Instance;
@ -30,10 +32,13 @@ public class TerraMinestomExample {
MinecraftServer.getGlobalEventHandler().addListener(AsyncPlayerConfigurationEvent.class, event -> {
event.setSpawningInstance(instance);
event.getPlayer().setGameMode(GameMode.CREATIVE);
event.getPlayer().setRespawnPoint(new Pos(0.0, 100.0, 0.0));
});
MinecraftServer.getGlobalEventHandler().addListener(PlayerSpawnEvent.class, event -> {
event.getPlayer().setGameMode(GameMode.SPECTATOR);
});
server.start("localhost", 25565);
}
}

View File

@ -53,11 +53,9 @@ public class MinestomProtoWorld implements ProtoWorld {
@Override
public void setBlockState(int x, int y, int z, BlockState data, boolean physics) {
int globalX = this.x * 16 + x;
int globalZ = this.z * 16 + z;
modifier.setBlock(globalX, y, globalZ, (Block) data.getHandle());
int cx = globalX >> 4;
int cz = globalZ >> 4;
int cx = x >> 4;
int cz = y >> 4;
modifier.setBlock(x, y, z, (Block) data.getHandle());
cache.at(cx, cz)
.setBlock(x & 15, y, z & 15, data);
}
@ -71,7 +69,7 @@ public class MinestomProtoWorld implements ProtoWorld {
public BlockState getBlockState(int x, int y, int z) {
int chunkX = x >> 4;
int chunkZ = z >> 4;
return cache.at(chunkX + this.x, chunkZ + this.z)
return cache.at(chunkX, chunkZ)
.getBlock(x & 15, y, z & 15);
}