Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import gjum.minecraft.mapsync.mod.net.Packet;
import gjum.minecraft.mapsync.mod.net.buffers.BufferReader;
import gjum.minecraft.mapsync.mod.utils.Assertions;
import gjum.minecraft.mapsync.mod.utils.MagicValues;
import java.util.List;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.Level;
import org.apache.commons.lang3.IntegerRange;
import org.jetbrains.annotations.NotNull;

/// The server will send this packet, containing an elaboration of chunk timestamps of a particular region as requested
Expand All @@ -23,6 +25,7 @@ public record ClientboundChunkTimestampsResponsePacket(

public ClientboundChunkTimestampsResponsePacket {
chunks = Assertions.assertNonNullList(chunks);
Assertions.assertIntRange(IntegerRange.of(1, MagicValues.REGION_GRID), chunks.size());
}

public static @NotNull ClientboundChunkTimestampsResponsePacket read(
Expand All @@ -31,7 +34,7 @@ public record ClientboundChunkTimestampsResponsePacket(
final ResourceKey<Level> dimension = reader.readResourceKey(Registries.DIMENSION);
final int anchorChunkX = reader.readInt16() << 5;
final int anchorChunkZ = reader.readInt16() << 5;
final var chunks = new CatchupChunk[reader.readUnt10()];
final var chunks = new CatchupChunk[reader.readUnt10() + 1];
for (int i = 0; i < chunks.length; i++) {
chunks[i] = new CatchupChunk(
dimension,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import java.util.Map;
import net.minecraft.resources.Identifier;
import net.minecraft.world.level.ChunkPos;
import org.apache.commons.lang3.LongRange;
import org.apache.commons.lang3.IntegerRange;
import org.jetbrains.annotations.NotNull;

/// The client sends this in response to a [ClientboundChunkTimestampsResponsePacket], requesting the server to send
Expand All @@ -27,7 +27,7 @@ public record ServerboundCatchupRequestPacket(
public ServerboundCatchupRequestPacket {
Assertions.assertNotNull(dimension);
chunks = Assertions.assertNonNullMap(chunks);
Assertions.assertLongRange(LongRange.of(1, MagicValues.REGION_GRID), chunks.size());
Assertions.assertIntRange(IntegerRange.of(1, MagicValues.REGION_GRID), chunks.size());
}

@Override
Expand All @@ -37,7 +37,7 @@ public void write(
writer.writeString(this.dimension().toString());
writer.writeInt16(this.regionX());
writer.writeInt16(this.regionZ());
writer.writeUnt10(this.chunks().size());
writer.writeUnt10(this.chunks().size() - 1);
for (final var entry : this.chunks().entrySet()) {
final ChunkPos chunkPos = entry.getKey();
writer.writeUnt5(chunkPos.getRegionLocalX());
Expand Down
4 changes: 2 additions & 2 deletions mapsync-server/src/packets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ export class ClientboundChunkTimestampsResponsePacket extends Packet {
writer.writeString(this.dimension);
writer.writeInt16(this.regionX);
writer.writeInt16(this.regionZ);
writer.writeUnt10(this.chunks.length);
writer.writeUnt10(this.chunks.length - 1);
for (const row of this.chunks) {
writer.writeUnt5(row.chunkX & 31n);
writer.writeUnt5(row.chunkZ & 31n);
Expand All @@ -196,7 +196,7 @@ export class ServerboundCatchupRequestPacket extends Packet {
const dimension = reader.readString();
const anchorChunkX = reader.readInt16() << 5n;
const anchorChunkZ = reader.readInt16() << 5n;
const chunks: CatchupChunk[] = new Array(Number(reader.readUnt10()));
const chunks: CatchupChunk[] = new Array(Number(reader.readUnt10()) + 1);
for (let i = 0; i < chunks.length; i++) {
chunks[i] = {
chunkX: asInt32(anchorChunkX + reader.readUnt5()),
Expand Down