Skip to content

Support heterogeneous lists in GeyserHolderSet - #6733

Open
realpeyaj wants to merge 1 commit into
GeyserMC:feature/26.3from
realpeyaj:feature/holder-sets-heterogeneous
Open

realpeyaj wants to merge 1 commit into
GeyserMC:feature/26.3from
realpeyaj:feature/holder-sets-heterogeneous

Conversation

@realpeyaj

@realpeyaj realpeyaj commented Sep 24, 2026 •

Copy link
Copy Markdown

Addresses one of #6712 TO-DO list:

  • Holder sets now allow mixed references and inline values, e.g. [{dialog:a_dialog, ...}, "geyser:another_dialog"], leading to heterogeneous lists.

Changes

– Added an internal HolderEntry (Direct for inline values, Id for network IDs) in GeyserHolderSet so mixed lists maintain their original sequence.
– Implemented ordered resolution in resolve(session) for mixed entries.
– Made TagCache#is delegate to GeyserHolderSet#contains to avoid IllegalStateException on inline/mixed sets.
– Added unit tests in GeyserHolderSetTest covering all variants (empty, tag, single string, single inline, homogeneous lists, and mixed lists).

Testing

– Ran all 7 test cases in GeyserHolderSetTest (passed).
– Ran the full :core:test suite (passed).
– Tested on Paper 26.3-35-main@dd9d103 with Bedrock player joining and playing cleanly with Floodgate.

Note: This PR used Antigravity (Gemini) to help structure the heterogeneous parsing logic and generate unit tests, of course still accompanied by a human.

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.

1 participant