From df775aceb12284af768534ff6804ff8f88073166 Mon Sep 17 00:00:00 2001 From: Beanes Date: Sat, 15 Aug 2026 19:43:58 +0200 Subject: [PATCH] Fix using an item in air packet not matching the 1.8 packet --- .../rewriter/PlayerPacketRewriter1_8.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/common/src/main/java/com/viaversion/viarewind/protocol/v1_8to1_7_6_10/rewriter/PlayerPacketRewriter1_8.java b/common/src/main/java/com/viaversion/viarewind/protocol/v1_8to1_7_6_10/rewriter/PlayerPacketRewriter1_8.java index 03d0b63db..099135848 100644 --- a/common/src/main/java/com/viaversion/viarewind/protocol/v1_8to1_7_6_10/rewriter/PlayerPacketRewriter1_8.java +++ b/common/src/main/java/com/viaversion/viarewind/protocol/v1_8to1_7_6_10/rewriter/PlayerPacketRewriter1_8.java @@ -38,6 +38,7 @@ import com.viaversion.viarewind.protocol.v1_8to1_7_6_10.storage.PlayerSessionStorage; import com.viaversion.viarewind.utils.ChatUtil; import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.minecraft.BlockPosition; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.GameProfile; import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; @@ -637,6 +638,16 @@ protected void register() { map(Types.BYTE); // Direction map(RewindTypes.COMPRESSED_NBT_ITEM, Types.ITEM1_8); // Item + handler(wrapper -> { + final BlockPosition position = wrapper.get(Types.BLOCK_POSITION1_8, 0); + final byte direction = wrapper.get(Types.BYTE, 0); + // 1.7 serializes the Y component as an unsigned byte, turning the + // use-in-air position from (-1, -1, -1) into (-1, 255, -1). + // we change that back to -1 for Y like 1.8 clients + if (position.x() == -1 && position.y() == 255 && position.z() == -1 && direction == -1) { + wrapper.set(Types.BLOCK_POSITION1_8, 0, new BlockPosition(-1, -1, -1)); + } + }); handler(wrapper -> protocol.getItemRewriter().handleItemToServer(wrapper.user(), wrapper.get(Types.ITEM1_8, 0))); } });