Skip to content

Commit 902f278

Browse files
committed
25w07a
1 parent f5d2a77 commit 902f278

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodec.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,8 @@
218218

219219
public class MinecraftCodec {
220220
public static final PacketCodec CODEC = PacketCodec.builder()
221-
.protocolVersion((1 << 30) | 233)
222-
.minecraftVersion("25w06a")
221+
.protocolVersion((1 << 30) | 234)
222+
.minecraftVersion("25w07a")
223223
.state(ProtocolState.HANDSHAKE, MinecraftPacketRegistry.builder()
224224
.registerServerboundPacket(ClientIntentionPacket.class, ClientIntentionPacket::new)
225225
)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.geysermc.mcprotocollib.protocol.data.game.level;
2+
3+
public enum HeightmapTypes {
4+
WORLD_SURFACE_WG,
5+
WORLD_SURFACE,
6+
OCEAN_FLOOR_WG,
7+
OCEAN_FLOOR,
8+
MOTION_BLOCKING,
9+
MOTION_BLOCKING_NO_LEAVES;
10+
11+
private static final HeightmapTypes[] VALUES = values();
12+
13+
public static HeightmapTypes from(int id) {
14+
return VALUES[id];
15+
}
16+
}

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundLevelChunkWithLightPacket.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,35 @@
88
import org.cloudburstmc.nbt.NbtMap;
99
import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket;
1010
import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes;
11+
import org.geysermc.mcprotocollib.protocol.data.game.level.HeightmapTypes;
1112
import org.geysermc.mcprotocollib.protocol.data.game.level.LightUpdateData;
1213
import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockEntityInfo;
1314
import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockEntityType;
1415

16+
import java.util.EnumMap;
17+
import java.util.Map;
18+
1519
@Data
1620
@With
1721
@AllArgsConstructor
1822
public class ClientboundLevelChunkWithLightPacket implements MinecraftPacket {
1923
private final int x;
2024
private final int z;
2125
private final byte @NonNull [] chunkData;
22-
private final @NonNull NbtMap heightMaps;
26+
private final @NonNull Map<HeightmapTypes, long[]> heightMaps;
2327
private final @NonNull BlockEntityInfo @NonNull [] blockEntities;
2428
private final @NonNull LightUpdateData lightData;
2529

2630
public ClientboundLevelChunkWithLightPacket(ByteBuf in) {
2731
this.x = in.readInt();
2832
this.z = in.readInt();
29-
this.heightMaps = MinecraftTypes.readCompoundTagOrThrow(in);
33+
34+
this.heightMaps = new EnumMap<>(HeightmapTypes.class);
35+
int length = MinecraftTypes.readVarInt(in);
36+
for (int i = 0; i < length; i++) {
37+
this.heightMaps.put(HeightmapTypes.from(MinecraftTypes.readVarInt(in)), MinecraftTypes.readLongArray(in));
38+
}
39+
3040
this.chunkData = MinecraftTypes.readByteArray(in);
3141

3242
this.blockEntities = new BlockEntityInfo[MinecraftTypes.readVarInt(in)];
@@ -47,7 +57,13 @@ public ClientboundLevelChunkWithLightPacket(ByteBuf in) {
4757
public void serialize(ByteBuf out) {
4858
out.writeInt(this.x);
4959
out.writeInt(this.z);
50-
MinecraftTypes.writeAnyTag(out, this.heightMaps);
60+
61+
MinecraftTypes.writeVarInt(out, this.heightMaps.size());
62+
for (Map.Entry<HeightmapTypes, long[]> entry : this.heightMaps.entrySet()) {
63+
MinecraftTypes.writeVarInt(out, entry.getKey().ordinal());
64+
MinecraftTypes.writeLongArray(out, entry.getValue());
65+
}
66+
5167
MinecraftTypes.writeVarInt(out, this.chunkData.length);
5268
out.writeBytes(this.chunkData);
5369

0 commit comments

Comments
 (0)