diff --git a/src/main/java/net/minestom/server/instance/Chunk.java b/src/main/java/net/minestom/server/instance/Chunk.java index 91b046004..ce068d7e5 100644 --- a/src/main/java/net/minestom/server/instance/Chunk.java +++ b/src/main/java/net/minestom/server/instance/Chunk.java @@ -17,6 +17,7 @@ import net.minestom.server.network.packet.server.play.ChunkDataPacket; import net.minestom.server.network.packet.server.play.UpdateLightPacket; import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.MathUtils; +import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.chunk.ChunkCallback; @@ -512,13 +513,7 @@ public abstract class Chunk implements Viewable, DataContainer { * Sends a full {@link ChunkDataPacket} to all chunk viewers. */ public synchronized void sendChunkUpdate() { - final Set chunkViewers = getViewers(); - if (!chunkViewers.isEmpty()) { - chunkViewers.forEach(player -> { - final PlayerConnection playerConnection = player.getPlayerConnection(); - playerConnection.sendPacket(getFreshFullDataPacket()); - }); - } + PacketUtils.sendGroupedPacket(getViewers(), getFreshFullDataPacket()); } /** diff --git a/src/main/java/net/minestom/server/instance/batch/ChunkBatch.java b/src/main/java/net/minestom/server/instance/batch/ChunkBatch.java index 1e7c61567..aed940473 100644 --- a/src/main/java/net/minestom/server/instance/batch/ChunkBatch.java +++ b/src/main/java/net/minestom/server/instance/batch/ChunkBatch.java @@ -127,12 +127,17 @@ public class ChunkBatch implements InstanceBatch { chunkPopulator.populateChunk(this, chunk); } } - - // Safe callback - instance.scheduleNextTick(inst -> { - OptionalCallback.execute(callback, chunk); - }); } + + // Refresh chunk for viewers + this.chunk.sendChunkUpdate(); + + this.instance.refreshLastBlockChangeTime(); + + // Safe callback + instance.scheduleNextTick(inst -> { + OptionalCallback.execute(callback, chunk); + }); }); }