Skip to content

fix: remove 1.21.11-specific registry types unknown to older clients#1225

Closed
dsudomoin wants to merge 1 commit intoViaVersion:masterfrom
dsudomoin:fix/missing-1.21.11-registry-removals
Closed

fix: remove 1.21.11-specific registry types unknown to older clients#1225
dsudomoin wants to merge 1 commit intoViaVersion:masterfrom
dsudomoin:fix/missing-1.21.11-registry-removals

Conversation

@dsudomoin
Copy link

Summary

  • Remove 6 registry types added in 1.21.11 that are not handled by Protocol1_21_11To1_21_9, causing Missing registry errors on 1.20.5–1.21.10 clients: wolf_sound_variant, chicken_variant, cow_variant, pig_variant, jukebox_song, dialog
  • Also remove corresponding tags via tagRewriter.removeTags()

Test plan

  • Connect with 1.20.5 client to 1.21.11 server via ViaVersion+ViaBackwards proxy
  • Verify no Missing registry errors on client

Fixes #1224

🤖 Generated with Claude Code

ViaBackwards already removes `zombie_nautilus_variant` and `timeline`,
but misses several other registry types added in 1.21.11 that cause
"Missing registry" errors on 1.20.5–1.21.10 clients:

- wolf_sound_variant
- chicken_variant
- cow_variant
- pig_variant
- jukebox_song
- dialog

Fixes ViaVersion#1224
@dsudomoin dsudomoin force-pushed the fix/missing-1.21.11-registry-removals branch from 4d22373 to caaf775 Compare March 19, 2026 12:16
@dsudomoin
Copy link
Author

Closing — this is a Minestom-specific issue. Paper 1.21.11 does not send these registry types to the client, so ViaBackwards handles it correctly. Minestom sends additional dynamic registries that don't exist in vanilla, which we handle with a local patch. Sorry for the noise!

@dsudomoin dsudomoin closed this Mar 19, 2026
@kennytv
Copy link
Member

kennytv commented Mar 19, 2026

There is actually a fix for this in the private 5.8.0 branch since it was needed for 26.1 Vanilla, so it'll get fixed eitherway (though slightly differently/more automatically)

@dsudomoin
Copy link
Author

Thanks for the info! Is there any way we could see the 5.8.0 fix for this? We're running an in-process ViaVersion proxy with Minestom and currently maintain a local patch. Would love to align with the upstream approach so we can drop our workaround cleanly when 5.8.0 lands.

@dsudomoin dsudomoin deleted the fix/missing-1.21.11-registry-removals branch March 19, 2026 13:32
@kennytv
Copy link
Member

kennytv commented Mar 19, 2026

Actually, tags weren't yet (but are now, so thanks for the report anyway) - here's the relevant patches https://pastes.dev/8iaXurMYEQ
This automatically removes tags from the already handled removal of registry data (as well as command argument references to the registries)

@dsudomoin
Copy link
Author

Thanks a lot for sharing the patches! Very clean approach — auto-removing tags and command arguments from the registryDataRewriter's toRemove set is exactly the right way to do it.

For context: our issue is Minestom-specific. Minestom sends dynamic registries (like wolf_sound_variant, chicken_variant, etc.) that vanilla Paper does not send to clients at all. ViaBackwards' existing remove() calls in the correct protocol steps don't catch Minestom's format, so we maintain a local patch that re-applies the removals.

We'll keep our workaround for 5.7.2 and simplify when 5.8.0 lands. Thanks again!

@dsudomoin
Copy link
Author

Actually, correction on our earlier analysis — this isn't purely Minestom-specific. Looking closer, ViaBackwards 5.7.2 removes the registry DATA for zombie_nautilus_variant but doesn't call tagRewriter.removeTags("zombie_nautilus_variant"). Paper doesn't send tags for these registries so it doesn't trigger the issue, but Minestom does send tags → client crashes on the orphaned tags.

Your 5.8.0 auto-tag-removal patch fixes this perfectly. Our local workaround adds both remove() and removeTags() for all affected registries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ViaBackwards 5.7.2 doesn't remove 1.21.11-specific registry types for older clients

2 participants