Skip to content

KnownPacksPacket serialization is stricter than vanilla (and serverbound one breaks for fabric if client has more than 64 entries). #1474

Open
@Patbox

Description

Expected Behavior

KnownPacksPacket should not have an enforced limit, as vanilla protocol allows server to send as many known packs as it can.
Aka if server sends more than 64 packs it should just work.

(additionally, if fabric client should be amount equal or lower to one sent originally by server).

Actual Behavior

If server sends over 64 known packs, neither modded or vanilla clients will be able to join.

If modded client sends over 64 (while still below or equal to what server sent), modded client will disconnect.

It can be worked around by setting velocity.max-known-packs to amount of known packs sent by server

Steps to Reproduce

  1. Create a fabric server, with many server side/vanilla client compatible mods (or not if testing modded-client compat). Requires over 64 mods that include a datapack (/data/) inside.
  2. Try to connect to that server with vanilla client. You will be able to join if it's not behind velocity, but will get disconnected with an error if velocity is present.

Plugin List

Nothing on velocity.

139 mods on Fabric 1.21.4 server (all work purely server side):
- anvildrop 1.0.0
- ascension 1.0.0
- banhammer 0.12.0+1.21.2
|-- com_mysql_mysql-connector-j 9.1.0
|-- org_postgresql_postgresql 42.7.4
-- org_xerial_sqlite-jdbc 3.46.1.3
- beaconbreakers 1.0.0
- bedwars 1.0.0
-- kdotjpg_open-simplex 2.0
- blocklobbers 1.0.0
- buildbattle 1.0.6
- clutchpractice 1.0.0
- codebreaker 1.0.0
- colorswap 1.0.0
- compound 1.0.0
- consolebox 1.0.0
-- io_github_kawamuray_wasmtime_wasmtime-java 0.18.0
- cornmaze 1.0.0
- creeperfall 1.3.11
- deacoudre 1.4.2
- deathswap 1.0.0
- destroythemonument 1.1.0
- diceyheights 1.0.0
- disguiselib 1.3.6
- downpour 1.0.0
- electricfloor 1.0.0
- elytron 1.0.0
- fabric-api 0.112.0+1.21.4
|-- fabric-api-base 0.4.53+453d4f9104
|-- fabric-api-lookup-api-v1 1.6.85+b1caf1e904
|-- fabric-biome-api-v1 15.0.5+b1caf1e904
|-- fabric-block-api-v1 1.0.31+7feeb73304
|-- fabric-block-view-api-v2 1.0.19+7feeb73304
|-- fabric-blockrenderlayer-v1 2.0.7+7feeb73304
|-- fabric-client-tags-api-v1 1.1.28+20ea1e2304
|-- fabric-command-api-v1 1.2.61+f71b366f04
|-- fabric-command-api-v2 2.2.40+e496eb1504
|-- fabric-commands-v0 0.2.78+df3654b304
|-- fabric-content-registries-v0 9.1.13+7feeb73304
|-- fabric-convention-tags-v1 2.1.7+7f945d5b04
|-- fabric-convention-tags-v2 2.9.7+b1caf1e904
|-- fabric-crash-report-info-v1 0.3.6+7feeb73304
|-- fabric-data-attachment-api-v1 1.4.4+9aea556b04
|-- fabric-data-generation-api-v1 22.2.0+20ea1e2304
|-- fabric-dimensions-v1 4.0.10+7feeb73304
|-- fabric-entity-events-v1 2.0.11+60fccc7604
|-- fabric-events-interaction-v0 4.0.1+a4eebcf004
|-- fabric-game-rule-api-v1 1.0.62+7feeb73304
|-- fabric-item-api-v1 11.1.13+203e6b2304
|-- fabric-item-group-api-v1 4.1.22+7feeb73304
|-- fabric-key-binding-api-v1 1.0.56+7feeb73304
|-- fabric-keybindings-v0 0.2.54+df3654b304
|-- fabric-lifecycle-events-v1 2.5.3+bf2a60eb04
|-- fabric-loot-api-v2 3.0.32+3f89f5a504
|-- fabric-loot-api-v3 1.0.20+203e6b2304
|-- fabric-message-api-v1 6.0.24+7feeb73304
|-- fabric-model-loading-api-v1 4.1.0+7b6b225304
|-- fabric-networking-api-v1 4.3.8+cc0fa2fe04
|-- fabric-object-builder-api-v1 18.0.6+e604fe7f04
|-- fabric-particles-v1 4.0.13+7feeb73304
|-- fabric-recipe-api-v1 8.0.4+b1caf1e904
|-- fabric-registry-sync-v0 6.1.0+9ba00ebb04
|-- fabric-renderer-api-v1 5.0.1+84404cdd04
|-- fabric-renderer-indigo 2.0.1+84404cdd04
|-- fabric-rendering-data-attachment-v1 0.3.57+73761d2e04
|-- fabric-rendering-fluids-v1 3.1.18+7feeb73304
|-- fabric-rendering-v1 10.1.1+b874120c04
|-- fabric-resource-conditions-api-v1 5.0.13+203e6b2304
|-- fabric-resource-loader-v0 3.0.11+b1caf1e904
|-- fabric-screen-api-v1 2.0.37+7feeb73304
|-- fabric-screen-handler-api-v1 1.3.107+7feeb73304
|-- fabric-sound-api-v1 1.0.32+7feeb73304
|-- fabric-tag-api-v1 1.0.1+20ea1e2304
|-- fabric-transfer-api-v1 5.4.7+b1caf1e904
-- fabric-transitive-access-wideners-v1 6.3.2+56e78b9b04
- fabricloader 0.16.9
-- mixinextras 0.4.1
- fabricproxy-lite 2.9.0
-- com_moandjiezana_toml_toml4j 0.7.2
- fantasy 0.6.6+1.21.4
- farmy_feud ${version}
-- kdotjpg_open-simplex 2.0
- fortress 1.0.0
- game_parties 1.0.3
-- more_codecs 0.3.5+1.21.2
- gomoku 1.0
- infiniteparkour 1.0.0
- irritaterrun 1.0.0
- itemhunt 1.0
- java 21
- koth 1.0.0
- lastcard 1.0.0
- lavasurvival 1.1.0
- leukocyte 0.3.10+1.21.3
-- stimuli 0.5.0+1.21.3
- loopdeloop 1.2.2
- microbattle 1.0.0
- minecraft 1.21.4
- minefield 1.0.0
- nucleoid_creator_tools 0.2.2
|-- fabric-permissions-api-v0 0.3.3
|-- map_templates 0.2.1+1.21.3
-- server_translations_api 2.4.0+1.21.2-rc1
-- packet_tweaker 0.6.0-pre.1+1.21.2-pre3
- nucleoid_extras 1.3.2
- paintball 1.0.0
- parkourrun 1.0.0
- plasmid 0.6.3-build.4+1.21.4
|-- fabric-permissions-api-v0 0.3.3
|-- map-canvas-api 0.5.0+1.21.3
|-- map_templates 0.2.1+1.21.3
|-- more_codecs 0.3.5+1.21.2
|-- packet_tweaker 0.6.0-pre.1+1.21.2-pre3
|-- placeholder-api 2.5.1+1.21.3
|-- player-data-api 0.7.0+1.21.3
|-- predicate-api 0.6.0+1.21.2
|-- server_translations_api 2.4.0+1.21.2-rc1
| -- packet_tweaker 0.6.0-pre.1+1.21.2-pre3
|-- sgui 1.8.1+1.21.4
|-- sidebar-api 0.5.1+1.21.1
|-- stimuli 0.5.0+1.21.3
-- substrate 0.2.2+1.20.1
- player_roles 1.6.13
-- player_roles_api 1.6.13
- polymer-bundled 0.11.2+1.21.4
|-- polymer-autohost 0.11.2+1.21.4
| -- io_netty_netty-codec-http 4.1.82
|-- polymer-blocks 0.11.2+1.21.4
|-- polymer-common 0.11.2+1.21.4
| -- packet_tweaker 0.6.0-pre.1+1.21.2-pre3
|-- polymer-core 0.11.2+1.21.4
| |-- polymer-networking 0.11.2+1.21.4
| | -- polymer-common 0.11.2+1.21.4
| | -- packet_tweaker 0.6.0-pre.1+1.21.2-pre3
| -- polymer-registry-sync-manipulator 0.11.2+1.21.4
|-- polymer-resource-pack 0.11.2+1.21.4
| -- polymer-common 0.11.2+1.21.4
| -- packet_tweaker 0.6.0-pre.1+1.21.2-pre3
|-- polymer-resource-pack-extras 0.11.2+1.21.4
-- polymer-virtual-entity 0.11.2+1.21.4
-- polymer-common 0.11.2+1.21.4
-- packet_tweaker 0.6.0-pre.1+1.21.2-pre3
- quakecraft 1.7.7+1.21
- rocketspleef 0.1.2
-- kdotjpg_open-simplex 2.0
- sabotage 1.0.0
- sculkprison 1.0.0
- shardthief 1.0.0
- siege 1.0.1
- skywars 1.0.0-build.89
- snake 1.0.0
- snowballfight 1.0.0
- spleef 1.0.0
- styledchat 2.7.1+1.21.3
|-- fabric-permissions-api-v0 0.3.3
|-- placeholder-api 2.5.1+1.21.3
|-- player-data-api 0.7.0+1.21.3
-- predicate-api 0.6.0+1.21.2
- styledplayerlist 3.6.0+1.21.2
-- predicate-api 0.6.0+1.21.2
- survival-games 0.1.1
|-- dev_gegy_noise-composer 0.1.0
-- kdotjpg_open-simplex 2.0
- territorybattle 1.0.0
- the_towers 2.2.0
- totemhunt 1.0.0
- uhc 3.0.0
- volleyball 1.0.0
- wavedefense ${version}
-- kdotjpg_open-simplex 2.0
- werewolf 1.0.0
- withersweeper 1.0.0

Velocity Version

Velocity 3.4.0-SNAPSHOT (git-965db127-b454)

Additional Information

No response

Metadata

Assignees

No one assigned

    Labels

    type: bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions