diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java index 5bda98e2..91e257be 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java @@ -125,6 +125,14 @@ public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol { + wrapper.cancel(); + + final PacketWrapper response = wrapper.create(ServerboundConfigurationPackets1_20_5.SELECT_KNOWN_PACKS); + response.write(Type.VAR_INT, 0); // Empty, we don't know anything + response.sendToServer(Protocol1_20_3To1_20_5.class); + }); + cancelClientbound(ClientboundPackets1_20_5.DEBUG_SAMPLE); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java index abed6d2e..1fa547d3 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java @@ -23,6 +23,7 @@ import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; import com.viaversion.viaversion.api.type.types.version.Types1_20_3; +import com.viaversion.viaversion.api.type.types.version.Types1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPacket1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3; @@ -69,7 +70,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter argument : particle.getArguments()) { @@ -93,10 +94,8 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter { - wrapper.passthrough(Type.VAR_INT); // Entity ID + final int entityId = wrapper.passthrough(Type.VAR_INT); + final TrackedEntity entity = tracker(wrapper.user()).entity(entityId); + if (entity == null || !entity.entityType().isOrHasParent(EntityTypes1_20_5.LIVINGENTITY)) { + // Cannot add attributes to base entities in old version + wrapper.cancel(); + return; + } final int size = wrapper.passthrough(Type.VAR_INT); int newSize = size; for (int i = 0; i < size; i++) { // From a registry int ID to a string - final int id = protocol.getMappingData().getAttributeMappings().getNewId(wrapper.read(Type.VAR_INT)); + int id = protocol.getMappingData().getAttributeMappings().getNewId(wrapper.read(Type.VAR_INT)); + final String attribute = AttributeMappings.attribute(id); + if ("horse.jump_strength".equals(attribute)) { + // Jump strength only applies to horses in old versions + id = -1; + } + if (id == -1) { // Remove new attributes from the list newSize--; @@ -195,7 +213,6 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter