Skip to content

Commit c69a8c3

Browse files
committed
24w33a
1 parent e2af5db commit c69a8c3

37 files changed

+340
-120
lines changed

example/src/main/java/org/geysermc/mcprotocollib/protocol/example/MinecraftProtocolTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ public static void main(String[] args) {
9494
false,
9595
false,
9696
null,
97-
100
97+
100,
98+
5
9899
),
99100
true
100101
))

protocol/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
jacoco
44
}
55

6-
version = "1.21-SNAPSHOT"
6+
version = "1.21.2-SNAPSHOT"
77
description = "MCProtocolLib is a simple library for communicating with Minecraft clients and servers."
88

99
dependencies {

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveEntityPosPacket;
6464
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveEntityPosRotPacket;
6565
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveEntityRotPacket;
66+
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveMinecartPacket;
6667
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveVehiclePacket;
6768
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundProjectilePowerPacket;
6869
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundRemoveEntitiesPacket;
@@ -84,9 +85,9 @@
8485
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerCombatKillPacket;
8586
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerLookAtPacket;
8687
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerPositionPacket;
87-
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundSetCarriedItemPacket;
8888
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundSetExperiencePacket;
8989
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundSetHealthPacket;
90+
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundSetHeldSlotPacket;
9091
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.spawn.ClientboundAddEntityPacket;
9192
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.spawn.ClientboundAddExperienceOrbPacket;
9293
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerClosePacket;
@@ -98,6 +99,8 @@
9899
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundOpenBookPacket;
99100
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundOpenScreenPacket;
100101
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundPlaceGhostRecipePacket;
102+
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundSetCursorItemPacket;
103+
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundSetPlayerInventoryPacket;
101104
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level.ClientboundBlockDestructionPacket;
102105
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level.ClientboundBlockEntityDataPacket;
103106
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level.ClientboundBlockEventPacket;
@@ -145,6 +148,7 @@
145148
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatPacket;
146149
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatSessionUpdatePacket;
147150
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundClientCommandPacket;
151+
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundClientTickEndPacket;
148152
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundCommandSuggestionPacket;
149153
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundConfigurationAcknowledgedPacket;
150154
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundDebugSampleSubscriptionPacket;
@@ -160,6 +164,7 @@
160164
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRecipeBookSeenRecipePacket;
161165
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
162166
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSeenAdvancementsPacket;
167+
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSelectBundleItemPacket;
163168
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSelectTradePacket;
164169
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetBeaconPacket;
165170
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetCommandBlockPacket;
@@ -205,9 +210,9 @@
205210

206211
public class MinecraftCodec {
207212
public static final PacketCodec CODEC = PacketCodec.builder()
208-
.protocolVersion(767)
213+
.protocolVersion((1 << 30) | 205)
209214
.helper(MinecraftCodecHelper::new)
210-
.minecraftVersion("1.21")
215+
.minecraftVersion("24w33a")
211216
.state(ProtocolState.HANDSHAKE, MinecraftPacketRegistry.builder()
212217
.registerServerboundPacket(ClientIntentionPacket.class, ClientIntentionPacket::new)
213218
)
@@ -303,6 +308,7 @@ public class MinecraftCodec {
303308
.registerClientboundPacket(ClientboundMerchantOffersPacket.class, ClientboundMerchantOffersPacket::new)
304309
.registerClientboundPacket(ClientboundMoveEntityPosPacket.class, ClientboundMoveEntityPosPacket::new)
305310
.registerClientboundPacket(ClientboundMoveEntityPosRotPacket.class, ClientboundMoveEntityPosRotPacket::new)
311+
.registerClientboundPacket(ClientboundMoveMinecartPacket.class, ClientboundMoveMinecartPacket::new)
306312
.registerClientboundPacket(ClientboundMoveEntityRotPacket.class, ClientboundMoveEntityRotPacket::new)
307313
.registerClientboundPacket(ClientboundMoveVehiclePacket.class, ClientboundMoveVehiclePacket::new)
308314
.registerClientboundPacket(ClientboundOpenBookPacket.class, ClientboundOpenBookPacket::new)
@@ -338,9 +344,9 @@ public class MinecraftCodec {
338344
.registerClientboundPacket(ClientboundSetBorderWarningDelayPacket.class, ClientboundSetBorderWarningDelayPacket::new)
339345
.registerClientboundPacket(ClientboundSetBorderWarningDistancePacket.class, ClientboundSetBorderWarningDistancePacket::new)
340346
.registerClientboundPacket(ClientboundSetCameraPacket.class, ClientboundSetCameraPacket::new)
341-
.registerClientboundPacket(ClientboundSetCarriedItemPacket.class, ClientboundSetCarriedItemPacket::new)
342347
.registerClientboundPacket(ClientboundSetChunkCacheCenterPacket.class, ClientboundSetChunkCacheCenterPacket::new)
343348
.registerClientboundPacket(ClientboundSetChunkCacheRadiusPacket.class, ClientboundSetChunkCacheRadiusPacket::new)
349+
.registerClientboundPacket(ClientboundSetCursorItemPacket.class, ClientboundSetCursorItemPacket::new)
344350
.registerClientboundPacket(ClientboundSetDefaultSpawnPositionPacket.class, ClientboundSetDefaultSpawnPositionPacket::new)
345351
.registerClientboundPacket(ClientboundSetDisplayObjectivePacket.class, ClientboundSetDisplayObjectivePacket::new)
346352
.registerClientboundPacket(ClientboundSetEntityDataPacket.class, ClientboundSetEntityDataPacket::new)
@@ -349,8 +355,10 @@ public class MinecraftCodec {
349355
.registerClientboundPacket(ClientboundSetEquipmentPacket.class, ClientboundSetEquipmentPacket::new)
350356
.registerClientboundPacket(ClientboundSetExperiencePacket.class, ClientboundSetExperiencePacket::new)
351357
.registerClientboundPacket(ClientboundSetHealthPacket.class, ClientboundSetHealthPacket::new)
358+
.registerClientboundPacket(ClientboundSetHeldSlotPacket.class, ClientboundSetHeldSlotPacket::new)
352359
.registerClientboundPacket(ClientboundSetObjectivePacket.class, ClientboundSetObjectivePacket::new)
353360
.registerClientboundPacket(ClientboundSetPassengersPacket.class, ClientboundSetPassengersPacket::new)
361+
.registerClientboundPacket(ClientboundSetPlayerInventoryPacket.class, ClientboundSetPlayerInventoryPacket::new)
354362
.registerClientboundPacket(ClientboundSetPlayerTeamPacket.class, ClientboundSetPlayerTeamPacket::new)
355363
.registerClientboundPacket(ClientboundSetScorePacket.class, ClientboundSetScorePacket::new)
356364
.registerClientboundPacket(ClientboundSetSimulationDistancePacket.class, ClientboundSetSimulationDistancePacket::new)
@@ -381,6 +389,7 @@ public class MinecraftCodec {
381389
.registerClientboundPacket(ClientboundServerLinksPacket.class, ClientboundServerLinksPacket::new)
382390
.registerServerboundPacket(ServerboundAcceptTeleportationPacket.class, ServerboundAcceptTeleportationPacket::new)
383391
.registerServerboundPacket(ServerboundBlockEntityTagQueryPacket.class, ServerboundBlockEntityTagQueryPacket::new)
392+
.registerServerboundPacket(ServerboundSelectBundleItemPacket.class, ServerboundSelectBundleItemPacket::new)
384393
.registerServerboundPacket(ServerboundChangeDifficultyPacket.class, ServerboundChangeDifficultyPacket::new)
385394
.registerServerboundPacket(ServerboundChatAckPacket.class, ServerboundChatAckPacket::new)
386395
.registerServerboundPacket(ServerboundChatCommandPacket.class, ServerboundChatCommandPacket::new)
@@ -389,6 +398,7 @@ public class MinecraftCodec {
389398
.registerServerboundPacket(ServerboundChatSessionUpdatePacket.class, ServerboundChatSessionUpdatePacket::new)
390399
.registerServerboundPacket(ServerboundChunkBatchReceivedPacket.class, ServerboundChunkBatchReceivedPacket::new)
391400
.registerServerboundPacket(ServerboundClientCommandPacket.class, ServerboundClientCommandPacket::new)
401+
.registerServerboundPacket(ServerboundClientTickEndPacket.class, ServerboundClientTickEndPacket::new)
392402
.registerServerboundPacket(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new)
393403
.registerServerboundPacket(ServerboundCommandSuggestionPacket.class, ServerboundCommandSuggestionPacket::new)
394404
.registerServerboundPacket(ServerboundConfigurationAcknowledgedPacket.class, ServerboundConfigurationAcknowledgedPacket::new)

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,8 @@ public void writeWolfVariant(ByteBuf buf, Holder<WolfVariant> variantHolder) {
511511

512512
public Holder<PaintingVariant> readPaintingVariant(ByteBuf buf) {
513513
return this.readHolder(buf, input -> {
514-
return new PaintingVariant(this.readVarInt(input), this.readVarInt(input), this.readResourceLocation(input));
514+
return new PaintingVariant(this.readVarInt(input), this.readVarInt(input), this.readResourceLocation(input),
515+
this.readNullable(input, this::readComponent), this.readNullable(input, this::readComponent));
515516
});
516517
}
517518

@@ -520,6 +521,8 @@ public void writePaintingVariant(ByteBuf buf, Holder<PaintingVariant> variantHol
520521
this.writeVarInt(buf, variant.width());
521522
this.writeVarInt(buf, variant.height());
522523
this.writeResourceLocation(buf, variant.assetId());
524+
this.writeNullable(buf, variant.title(), this::writeComponent);
525+
this.writeNullable(buf, variant.author(), this::writeComponent);
523526
});
524527
}
525528

@@ -622,7 +625,8 @@ public PlayerSpawnInfo readPlayerSpawnInfo(ByteBuf buf) {
622625
boolean flat = buf.readBoolean();
623626
GlobalPos lastDeathPos = this.readNullable(buf, this::readGlobalPos);
624627
int portalCooldown = this.readVarInt(buf);
625-
return new PlayerSpawnInfo(dimension, worldName, hashedSeed, gameMode, previousGamemode, debug, flat, lastDeathPos, portalCooldown);
628+
int seaLevel = this.readVarInt(buf);
629+
return new PlayerSpawnInfo(dimension, worldName, hashedSeed, gameMode, previousGamemode, debug, flat, lastDeathPos, portalCooldown, seaLevel);
626630
}
627631

628632
public void writePlayerSpawnInfo(ByteBuf buf, PlayerSpawnInfo info) {
@@ -635,6 +639,7 @@ public void writePlayerSpawnInfo(ByteBuf buf, PlayerSpawnInfo info) {
635639
buf.writeBoolean(info.isFlat());
636640
this.writeNullable(buf, info.getLastDeathPos(), this::writeGlobalPos);
637641
this.writeVarInt(buf, info.getPortalCooldown());
642+
this.writeVarInt(buf, info.getSeaLevel());
638643
}
639644

640645
public ParticleType readParticleType(ByteBuf buf) {

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntry.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@ public class PlayerListEntry {
2020
private int latency;
2121
private GameMode gameMode;
2222
private @Nullable Component displayName;
23+
private int listOrder;
2324
private UUID sessionId;
2425
private long expiresAt;
2526
private @Nullable PublicKey publicKey;
2627
private byte @Nullable [] keySignature;
2728

2829
public PlayerListEntry(UUID profileId) {
29-
this(profileId, null, false, 0, GameMode.SURVIVAL, null, null, 0, null, null);
30+
this(profileId, null, false, 0, GameMode.SURVIVAL, null, 0, null, 0, null, null);
3031
}
3132
}

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntryAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ public enum PlayerListEntryAction {
66
UPDATE_GAME_MODE,
77
UPDATE_LISTED,
88
UPDATE_LATENCY,
9-
UPDATE_DISPLAY_NAME;
9+
UPDATE_DISPLAY_NAME,
10+
UPDATE_LIST_ORDER;
1011

1112
public static final PlayerListEntryAction[] VALUES = values();
1213

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.geysermc.mcprotocollib.protocol.data.game.entity;
2+
3+
import org.cloudburstmc.math.vector.Vector3d;
4+
5+
public record MinecartStep(Vector3d position, Vector3d movement, float yRot, float xRot, float weight) {
6+
}

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/attribute/AttributeType.java

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -32,37 +32,38 @@ public interface AttributeType {
3232

3333
@Getter
3434
enum Builtin implements AttributeType {
35-
GENERIC_ARMOR("minecraft:generic.armor", 0, 0, 30),
36-
GENERIC_ARMOR_TOUGHNESS("minecraft:generic.armor_toughness", 0, 0, 20),
37-
GENERIC_ATTACK_DAMAGE("minecraft:generic.attack_damage", 2, 0, 2048),
38-
GENERIC_ATTACK_KNOCKBACK("minecraft:generic.attack_knockback", 0, 0, 5),
39-
GENERIC_ATTACK_SPEED("minecraft:generic.attack_speed", 4, 0, 1024),
40-
PLAYER_BLOCK_BREAK_SPEED("minecraft:player.block_break_speed", 1, 0, 1024),
41-
PLAYER_BLOCK_INTERACTION_RANGE("minecraft:player.block_interaction_range", 4.5, 0, 64),
42-
GENERIC_BURNING_TIME("minecraft:generic.burning_time", 1, 0, 1024),
43-
GENERIC_EXPLOSION_KNOCKBACK_RESISTANCE("minecraft:generic.explosion_knockback_resistance", 0, 0, 1),
44-
PLAYER_ENTITY_INTERACTION_RANGE("minecraft:player.entity_interaction_range", 3, 0, 64),
45-
GENERIC_FALL_DAMAGE_MULTIPLIER("minecraft:generic.fall_damage_multiplier", 1, 0, 100),
46-
GENERIC_FLYING_SPEED("minecraft:generic.flying_speed", 0.4, 0, 1024),
47-
GENERIC_FOLLOW_RANGE("minecraft:generic.follow_range", 32, 0, 2048),
48-
GENERIC_GRAVITY("minecraft:generic.gravity", 0.08, -1, 1),
49-
GENERIC_JUMP_STRENGTH("minecraft:generic.jump_strength", 0.42, 0, 32),
50-
GENERIC_KNOCKBACK_RESISTANCE("minecraft:generic.knockback_resistance", 0, 0, 1),
51-
GENERIC_LUCK("minecraft:generic.luck", 0, -1024, 1024),
52-
GENERIC_MAX_ABSORPTION("minecraft:generic.max_absorption", 0, 0, 2048),
53-
GENERIC_MAX_HEALTH("minecraft:generic.max_health", 20, 1, 1024),
54-
PLAYER_MINING_EFFICIENCY("minecraft:player.mining_efficiency", 0, 0, 1024),
55-
GENERIC_MOVEMENT_EFFICIENCY("minecraft:generic.movement_efficiency", 0, 0, 1),
56-
GENERIC_MOVEMENT_SPEED("minecraft:generic.movement_speed", 0.7, 0, 1024),
57-
GENERIC_OXYGEN_BONUS("minecraft:generic.oxygen_bonus", 0, 0, 1024),
58-
GENERIC_SAFE_FALL_DISTANCE("minecraft:generic.safe_fall_distance", 3, -1024, 1024),
59-
GENERIC_SCALE("minecraft:generic.scale", 1, 0.0625, 16),
60-
PLAYER_SNEAKING_SPEED("minecraft:player.sneaking_speed", 0.3, 0, 1),
61-
ZOMBIE_SPAWN_REINFORCEMENTS("minecraft:zombie.spawn_reinforcements", 0, 0, 1),
62-
GENERIC_STEP_HEIGHT("minecraft:generic.step_height", 0.6, 0, 10),
63-
PLAYER_SUBMERGED_MINING_SPEED("minecraft:player.submerged_mining_speed", 0.2, 0, 20),
64-
PLAYER_SWEEPING_DAMAGE_RATIO("minecraft:player.sweeping_damage_ratio", 0, 0, 1),
65-
GENERIC_WATER_MOVEMENT_EFFICIENCY("minecraft:generic.water_movement_efficiency", 0, 0, 1);
35+
ARMOR("minecraft:armor", 0, 0, 30),
36+
ARMOR_TOUGHNESS("minecraft:armor_toughness", 0, 0, 20),
37+
ATTACK_DAMAGE("minecraft:attack_damage", 2, 0, 2048),
38+
ATTACK_KNOCKBACK("minecraft:attack_knockback", 0, 0, 5),
39+
ATTACK_SPEED("minecraft:attack_speed", 4, 0, 1024),
40+
BLOCK_BREAK_SPEED("minecraft:block_break_speed", 1, 0, 1024),
41+
BLOCK_INTERACTION_RANGE("minecraft:block_interaction_range", 4.5, 0, 64),
42+
BURNING_TIME("minecraft:burning_time", 1, 0, 1024),
43+
EXPLOSION_KNOCKBACK_RESISTANCE("minecraft:explosion_knockback_resistance", 0, 0, 1),
44+
ENTITY_INTERACTION_RANGE("minecraft:entity_interaction_range", 3, 0, 64),
45+
FALL_DAMAGE_MULTIPLIER("minecraft:fall_damage_multiplier", 1, 0, 100),
46+
FLYING_SPEED("minecraft:flying_speed", 0.4, 0, 1024),
47+
FOLLOW_RANGE("minecraft:follow_range", 32, 0, 2048),
48+
GRAVITY("minecraft:gravity", 0.08, -1, 1),
49+
JUMP_STRENGTH("minecraft:jump_strength", 0.42, 0, 32),
50+
KNOCKBACK_RESISTANCE("minecraft:knockback_resistance", 0, 0, 1),
51+
LUCK("minecraft:luck", 0, -1024, 1024),
52+
MAX_ABSORPTION("minecraft:max_absorption", 0, 0, 2048),
53+
MAX_HEALTH("minecraft:max_health", 20, 1, 1024),
54+
MINING_EFFICIENCY("minecraft:mining_efficiency", 0, 0, 1024),
55+
MOVEMENT_EFFICIENCY("minecraft:movement_efficiency", 0, 0, 1),
56+
MOVEMENT_SPEED("minecraft:movement_speed", 0.7, 0, 1024),
57+
OXYGEN_BONUS("minecraft:oxygen_bonus", 0, 0, 1024),
58+
SAFE_FALL_DISTANCE("minecraft:safe_fall_distance", 3, -1024, 1024),
59+
SCALE("minecraft:scale", 1, 0.0625, 16),
60+
SNEAKING_SPEED("minecraft:sneaking_speed", 0.3, 0, 1),
61+
SPAWN_REINFORCEMENTS("minecraft:spawn_reinforcements", 0, 0, 1),
62+
STEP_HEIGHT("minecraft:step_height", 0.6, 0, 10),
63+
SUBMERGED_MINING_SPEED("minecraft:submerged_mining_speed", 0.2, 0, 20),
64+
SWEEPING_DAMAGE_RATIO("minecraft:sweeping_damage_ratio", 0, 0, 1),
65+
TEMPT_RANGE("minecraft:tempt_range", 10, 0, 2048),
66+
WATER_MOVEMENT_EFFICIENCY("minecraft:water_movement_efficiency", 0, 0, 1);
6667

6768
private final Key identifier;
6869
private final double def;
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata;
22

33
import net.kyori.adventure.key.Key;
4+
import net.kyori.adventure.text.Component;
5+
import org.jetbrains.annotations.Nullable;
46

5-
public record PaintingVariant(int width, int height, Key assetId) {
7+
public record PaintingVariant(int width, int height, Key assetId, @Nullable Component title, @Nullable Component author) {
68
}

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/PlayerSpawnInfo.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ public class PlayerSpawnInfo {
1919
private final boolean flat;
2020
private final @Nullable GlobalPos lastDeathPos;
2121
private final int portalCooldown;
22+
private final int seaLevel;
2223
}

0 commit comments

Comments
 (0)