Skip to content

Respect NBS vanilla instrument counts when skipping custom notes - #6689

Open
c8dhjp4tyv-bit wants to merge 1 commit into
MeteorDevelopment:masterfrom
c8dhjp4tyv-bit:fix/nbs-custom-instrument-boundary
Open

c8dhjp4tyv-bit wants to merge 1 commit into
MeteorDevelopment:masterfrom
c8dhjp4tyv-bit:fix/nbs-custom-instrument-boundary

Conversation

@c8dhjp4tyv-bit

Copy link
Copy Markdown
Contributor

Description

NBS files record their vanilla instrument count. With a count of 10, instrument 10 is custom, but Meteor currently plays it as iron xylophone because the header count is discarded.

Read that count and skip custom notes before looking up their Minecraft instrument. Keep 10 as the default for the original format. Consume the note's velocity, panning and pitch before skipping it so later notes stay aligned.

Format reference: https://noteblock.studio/nbs

Validation

10 standalone Java 25 regression cases passed using the actual decoder, Song and Note classes with real Guava and minimal Minecraft/module test doubles. Generated binary fixtures cover NBS versions 0-5, custom instruments below ID 16, modern 16-instrument files, ID 255, alternate/zero counts and v4 note metadata. The original code failed 9 of these cases.

Full Gradle build was blocked by unavailable dependencies. No in-game testing was performed. Prepared with AI assistance.

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