From 2e07e5b805c6bebc75372f7e4c0de4a95407f54e Mon Sep 17 00:00:00 2001 From: basaigh <53559772+basaigh@users.noreply.github.com> Date: Tue, 26 Nov 2024 23:25:09 +0000 Subject: [PATCH] 24w44a --- protocol/build.gradle.kts | 2 +- .../protocol/codec/MinecraftCodec.java | 10 ++++--- .../protocol/codec/MinecraftCodecHelper.java | 15 +++++----- .../protocol/data/game/PlayerListEntry.java | 3 +- .../data/game/PlayerListEntryAction.java | 1 + .../game/level/particle/ParticleType.java | 1 + ...articleData.java => TraiParticleData.java} | 2 +- .../data/game/level/sound/BuiltinSound.java | 16 ++++++++++ .../ClientboundPlayerInfoUpdatePacket.java | 6 ++++ .../player/ClientboundSetHeldSlotPacket.java | 4 +-- .../level/ClientboundBlockEventPacket.java | 14 ++++----- .../ClientboundLevelParticlesPacket.java | 3 ++ .../ServerboundPickItemFromBlockPacket.java | 28 ++++++++++++++++++ ... ServerboundPickItemFromEntityPacket.java} | 13 ++++---- protocol/src/main/resources/networkCodec.nbt | Bin 12348 -> 12475 bytes 15 files changed, 90 insertions(+), 28 deletions(-) rename protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/{TargetColorParticleData.java => TraiParticleData.java} (54%) create mode 100644 protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemFromBlockPacket.java rename protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/{ServerboundPickItemPacket.java => ServerboundPickItemFromEntityPacket.java} (53%) diff --git a/protocol/build.gradle.kts b/protocol/build.gradle.kts index 41f64b93..6de81ae6 100644 --- a/protocol/build.gradle.kts +++ b/protocol/build.gradle.kts @@ -3,7 +3,7 @@ plugins { jacoco } -version = "1.21.2-SNAPSHOT" +version = "1.21.4-SNAPSHOT" description = "MCProtocolLib is a simple library for communicating with Minecraft clients and servers." dependencies { diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodec.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodec.java index 63b782f5..57e1650a 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodec.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodec.java @@ -162,7 +162,8 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.S import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerSlotStateChangedPacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundEditBookPacket; -import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemPacket; +import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemFromBlockPacket; +import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemFromEntityPacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPlaceRecipePacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRecipeBookChangeSettingsPacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRecipeBookSeenRecipePacket; @@ -214,9 +215,9 @@ import org.geysermc.mcprotocollib.protocol.packet.status.serverbound.Serverbound public class MinecraftCodec { public static final PacketCodec CODEC = PacketCodec.builder() - .protocolVersion(768) + .protocolVersion((1 << 30) | 220) .helper(MinecraftCodecHelper::new) - .minecraftVersion("1.21.3") + .minecraftVersion("24w44a") .state(ProtocolState.HANDSHAKE, MinecraftPacketRegistry.builder() .registerServerboundPacket(ClientIntentionPacket.class, ClientIntentionPacket::new) ) @@ -429,7 +430,8 @@ public class MinecraftCodec { .registerServerboundPacket(ServerboundMovePlayerStatusOnlyPacket.class, ServerboundMovePlayerStatusOnlyPacket::new) .registerServerboundPacket(ServerboundMoveVehiclePacket.class, ServerboundMoveVehiclePacket::new) .registerServerboundPacket(ServerboundPaddleBoatPacket.class, ServerboundPaddleBoatPacket::new) - .registerServerboundPacket(ServerboundPickItemPacket.class, ServerboundPickItemPacket::new) + .registerServerboundPacket(ServerboundPickItemFromBlockPacket.class, ServerboundPickItemFromBlockPacket::new) + .registerServerboundPacket(ServerboundPickItemFromEntityPacket.class, ServerboundPickItemFromEntityPacket::new) .registerServerboundPacket(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new) .registerServerboundPacket(ServerboundPlaceRecipePacket.class, ServerboundPlaceRecipePacket::new) .registerServerboundPacket(ServerboundPlayerAbilitiesPacket.class, ServerboundPlayerAbilitiesPacket::new) diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodecHelper.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodecHelper.java index cd42072b..85394b0b 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodecHelper.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodecHelper.java @@ -73,7 +73,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleData import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType; import org.geysermc.mcprotocollib.protocol.data.game.level.particle.SculkChargeParticleData; import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ShriekParticleData; -import org.geysermc.mcprotocollib.protocol.data.game.level.particle.TargetColorParticleData; +import org.geysermc.mcprotocollib.protocol.data.game.level.particle.TraiParticleData; import org.geysermc.mcprotocollib.protocol.data.game.level.particle.VibrationParticleData; import org.geysermc.mcprotocollib.protocol.data.game.level.particle.positionsource.BlockPositionSource; import org.geysermc.mcprotocollib.protocol.data.game.level.particle.positionsource.EntityPositionSource; @@ -725,7 +725,7 @@ public class MinecraftCodecHelper extends BasePacketCodecHelper { case ITEM -> new ItemParticleData(this.readOptionalItemStack(buf)); case SCULK_CHARGE -> new SculkChargeParticleData(buf.readFloat()); case SHRIEK -> new ShriekParticleData(this.readVarInt(buf)); - case TRAIL -> new TargetColorParticleData(Vector3d.from(buf.readDouble(), buf.readDouble(), buf.readDouble()), buf.readInt()); + case TRAIL -> new TraiParticleData(Vector3d.from(buf.readDouble(), buf.readDouble(), buf.readDouble()), buf.readInt(), this.readVarInt(buf)); case VIBRATION -> new VibrationParticleData(this.readPositionSource(buf), this.readVarInt(buf)); default -> null; }; @@ -765,11 +765,12 @@ public class MinecraftCodecHelper extends BasePacketCodecHelper { this.writeVarInt(buf, shriekData.getDelay()); } case TRAIL -> { - TargetColorParticleData targetColorData = (TargetColorParticleData) data; - buf.writeDouble(targetColorData.target().getX()); - buf.writeDouble(targetColorData.target().getY()); - buf.writeDouble(targetColorData.target().getZ()); - buf.writeInt(targetColorData.color()); + TraiParticleData trailData = (TraiParticleData) data; + buf.writeDouble(trailData.target().getX()); + buf.writeDouble(trailData.target().getY()); + buf.writeDouble(trailData.target().getZ()); + buf.writeInt(trailData.color()); + this.writeVarInt(buf, trailData.duration()); } case VIBRATION -> { VibrationParticleData vibrationData = (VibrationParticleData) data; diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntry.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntry.java index 72644a08..633c20c6 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntry.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntry.java @@ -20,6 +20,7 @@ public class PlayerListEntry { private int latency; private GameMode gameMode; private @Nullable Component displayName; + private boolean showHat; private int listOrder; private UUID sessionId; private long expiresAt; @@ -27,6 +28,6 @@ public class PlayerListEntry { private byte @Nullable [] keySignature; public PlayerListEntry(UUID profileId) { - this(profileId, null, false, 0, GameMode.SURVIVAL, null, 0, null, 0, null, null); + this(profileId, null, false, 0, GameMode.SURVIVAL, null, false, 0, null, 0, null, null); } } diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntryAction.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntryAction.java index 9b435b34..100e10fd 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntryAction.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntryAction.java @@ -7,6 +7,7 @@ public enum PlayerListEntryAction { UPDATE_LISTED, UPDATE_LATENCY, UPDATE_DISPLAY_NAME, + UPDATE_HAT, UPDATE_LIST_ORDER; public static final PlayerListEntryAction[] VALUES = values(); diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/ParticleType.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/ParticleType.java index 02e5c673..5805571c 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/ParticleType.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/ParticleType.java @@ -35,6 +35,7 @@ public enum ParticleType { FLAME, INFESTED, CHERRY_LEAVES, + PALE_OAK_LEAVES, SCULK_SOUL, SCULK_CHARGE, SCULK_CHARGE_POP, diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/TargetColorParticleData.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/TraiParticleData.java similarity index 54% rename from protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/TargetColorParticleData.java rename to protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/TraiParticleData.java index bf46074e..04748569 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/TargetColorParticleData.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/TraiParticleData.java @@ -2,5 +2,5 @@ package org.geysermc.mcprotocollib.protocol.data.game.level.particle; import org.cloudburstmc.math.vector.Vector3d; -public record TargetColorParticleData(Vector3d target, int color) implements ParticleData { +public record TraiParticleData(Vector3d target, int color, int duration) implements ParticleData { } diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/sound/BuiltinSound.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/sound/BuiltinSound.java index 3f17016e..ef58607b 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/sound/BuiltinSound.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/sound/BuiltinSound.java @@ -391,6 +391,7 @@ public enum BuiltinSound implements Sound { ENTITY_CREAKING_UNFREEZE("entity.creaking.unfreeze"), ENTITY_CREAKING_SPAWN("entity.creaking.spawn"), ENTITY_CREAKING_SWAY("entity.creaking.sway"), + ENTITY_CREAKING_TWITCH("entity.creaking.twitch"), BLOCK_CREAKING_HEART_BREAK("block.creaking_heart.break"), BLOCK_CREAKING_HEART_FALL("block.creaking_heart.fall"), BLOCK_CREAKING_HEART_HIT("block.creaking_heart.hit"), @@ -529,6 +530,11 @@ public enum BuiltinSound implements Sound { ENTITY_EVOKER_PREPARE_WOLOLO("entity.evoker.prepare_wololo"), ENTITY_EXPERIENCE_BOTTLE_THROW("entity.experience_bottle.throw"), ENTITY_EXPERIENCE_ORB_PICKUP("entity.experience_orb.pickup"), + BLOCK_EYEBLOSSOM_OPEN_LONG("block.eyeblossom.open_long"), + BLOCK_EYEBLOSSOM_OPEN("block.eyeblossom.open"), + BLOCK_EYEBLOSSOM_CLOSE_LONG("block.eyeblossom.close_long"), + BLOCK_EYEBLOSSOM_CLOSE("block.eyeblossom.close"), + BLOCK_EYEBLOSSOM_IDLE("block.eyeblossom.idle"), BLOCK_FENCE_GATE_CLOSE("block.fence_gate.close"), BLOCK_FENCE_GATE_OPEN("block.fence_gate.open"), ITEM_FIRECHARGE_USE("item.firecharge.use"), @@ -1329,6 +1335,16 @@ public enum BuiltinSound implements Sound { BLOCK_SPAWNER_HIT("block.spawner.hit"), BLOCK_SPAWNER_PLACE("block.spawner.place"), BLOCK_SPAWNER_STEP("block.spawner.step"), + BLOCK_RESIN_BREAK("block.resin.break"), + BLOCK_RESIN_FALL("block.resin.fall"), + BLOCK_RESIN_HIT("block.resin.hit"), + BLOCK_RESIN_PLACE("block.resin.place"), + BLOCK_RESIN_STEP("block.resin.step"), + BLOCK_RESIN_BRICKS_BREAK("block.resin_bricks.break"), + BLOCK_RESIN_BRICKS_FALL("block.resin_bricks.fall"), + BLOCK_RESIN_BRICKS_HIT("block.resin_bricks.hit"), + BLOCK_RESIN_BRICKS_PLACE("block.resin_bricks.place"), + BLOCK_RESIN_BRICKS_STEP("block.resin_bricks.step"), BLOCK_SPORE_BLOSSOM_BREAK("block.spore_blossom.break"), BLOCK_SPORE_BLOSSOM_FALL("block.spore_blossom.fall"), BLOCK_SPORE_BLOSSOM_HIT("block.spore_blossom.hit"), diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundPlayerInfoUpdatePacket.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundPlayerInfoUpdatePacket.java index 323c6399..bf24e958 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundPlayerInfoUpdatePacket.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundPlayerInfoUpdatePacket.java @@ -80,6 +80,11 @@ public class ClientboundPlayerInfoUpdatePacket implements MinecraftPacket { entry.setListOrder(listOrder); } + case UPDATE_HAT -> { + boolean showHat = in.readBoolean(); + + entry.setShowHat(showHat); + } } } @@ -117,6 +122,7 @@ public class ClientboundPlayerInfoUpdatePacket implements MinecraftPacket { case UPDATE_LATENCY -> helper.writeVarInt(out, entry.getLatency()); case UPDATE_DISPLAY_NAME -> helper.writeNullable(out, entry.getDisplayName(), helper::writeComponent); case UPDATE_LIST_ORDER -> helper.writeVarInt(out, entry.getListOrder()); + case UPDATE_HAT -> out.writeBoolean(entry.isShowHat()); } } } diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundSetHeldSlotPacket.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundSetHeldSlotPacket.java index ef15bf9c..e8104557 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundSetHeldSlotPacket.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundSetHeldSlotPacket.java @@ -14,11 +14,11 @@ public class ClientboundSetHeldSlotPacket implements MinecraftPacket { private final int slot; public ClientboundSetHeldSlotPacket(ByteBuf in, MinecraftCodecHelper helper) { - this.slot = in.readByte(); + this.slot = helper.readVarInt(in); } @Override public void serialize(ByteBuf out, MinecraftCodecHelper helper) { - out.writeByte(this.slot); + helper.writeVarInt(out, this.slot); } } diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundBlockEventPacket.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundBlockEventPacket.java index fb9651a7..e88f77f9 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundBlockEventPacket.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundBlockEventPacket.java @@ -39,13 +39,13 @@ public class ClientboundBlockEventPacket implements MinecraftPacket { private static final int PISTON = 135; private static final int MOB_SPAWNER = 182; private static final int CHEST = 185; - private static final int ENDER_CHEST = 358; - private static final int TRAPPED_CHEST = 427; - private static final int END_GATEWAY = 624; - private static final int SHULKER_BOX_LOWER = 634; - private static final int SHULKER_BOX_HIGHER = 650; - private static final int BELL = 804; - private static final int DECORATED_POT = 1076; + private static final int ENDER_CHEST = 365; + private static final int TRAPPED_CHEST = 434; + private static final int END_GATEWAY = 631; + private static final int SHULKER_BOX_LOWER = 641; + private static final int SHULKER_BOX_HIGHER = 657; + private static final int BELL = 811; + private static final int DECORATED_POT = 1083; private final @NonNull Vector3i position; private final @NonNull BlockValueType type; diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundLevelParticlesPacket.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundLevelParticlesPacket.java index 0f9de3cb..7aa273de 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundLevelParticlesPacket.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundLevelParticlesPacket.java @@ -16,6 +16,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType public class ClientboundLevelParticlesPacket implements MinecraftPacket { private final @NonNull Particle particle; private final boolean longDistance; + private final boolean alwaysShow; private final double x; private final double y; private final double z; @@ -27,6 +28,7 @@ public class ClientboundLevelParticlesPacket implements MinecraftPacket { public ClientboundLevelParticlesPacket(ByteBuf in, MinecraftCodecHelper helper) { this.longDistance = in.readBoolean(); + this.alwaysShow = in.readBoolean(); this.x = in.readDouble(); this.y = in.readDouble(); this.z = in.readDouble(); @@ -42,6 +44,7 @@ public class ClientboundLevelParticlesPacket implements MinecraftPacket { @Override public void serialize(ByteBuf out, MinecraftCodecHelper helper) { out.writeBoolean(this.longDistance); + out.writeBoolean(this.alwaysShow); out.writeDouble(this.x); out.writeDouble(this.y); out.writeDouble(this.z); diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemFromBlockPacket.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemFromBlockPacket.java new file mode 100644 index 00000000..1d89c256 --- /dev/null +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemFromBlockPacket.java @@ -0,0 +1,28 @@ +package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory; + +import io.netty.buffer.ByteBuf; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.With; +import org.cloudburstmc.math.vector.Vector3i; +import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper; +import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; + +@Data +@With +@AllArgsConstructor +public class ServerboundPickItemFromBlockPacket implements MinecraftPacket { + private final Vector3i pos; + private final boolean includeData; + + public ServerboundPickItemFromBlockPacket(ByteBuf in, MinecraftCodecHelper helper) { + this.pos = helper.readPosition(in); + this.includeData = in.readBoolean(); + } + + @Override + public void serialize(ByteBuf out, MinecraftCodecHelper helper) { + helper.writePosition(out, this.pos); + out.writeBoolean(this.includeData); + } +} diff --git a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemPacket.java b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemFromEntityPacket.java similarity index 53% rename from protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemPacket.java rename to protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemFromEntityPacket.java index dd6d1b31..3ff338bf 100644 --- a/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemPacket.java +++ b/protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundPickItemFromEntityPacket.java @@ -10,15 +10,18 @@ import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; @Data @With @AllArgsConstructor -public class ServerboundPickItemPacket implements MinecraftPacket { - private final int slot; +public class ServerboundPickItemFromEntityPacket implements MinecraftPacket { + private final int id; + private final boolean includeData; - public ServerboundPickItemPacket(ByteBuf in, MinecraftCodecHelper helper) { - this.slot = helper.readVarInt(in); + public ServerboundPickItemFromEntityPacket(ByteBuf in, MinecraftCodecHelper helper) { + this.id = helper.readVarInt(in); + this.includeData = in.readBoolean(); } @Override public void serialize(ByteBuf out, MinecraftCodecHelper helper) { - helper.writeVarInt(out, this.slot); + helper.writeVarInt(out, this.id); + out.writeBoolean(this.includeData); } } diff --git a/protocol/src/main/resources/networkCodec.nbt b/protocol/src/main/resources/networkCodec.nbt index 5c9b65c9e48a17c197d00b18f0b32b93b3d80f5a..48372c3bc26d32fe0d27fdb8eb81b899ded32d44 100644 GIT binary patch literal 12475 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 F0RYKJVfp|7 literal 12348 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