Conversation
1.21.10 replaced immediate entity rendering with the submit pipeline, and
the addon still hooked the old one, so it has been gone since then, not
only on 26.x:
render(state, PoseStack, MultiBufferSource, int)
-> submit(state, PoseStack, SubmitNodeCollector, CameraRenderState)
ItemRenderer#renderStatic(...)
-> ItemStackRenderState#submit(pose, collector, light, overlay, tint)
ItemRenderer lost renderStatic in 1.21.11 and the class is gone entirely
in 26.x, so the item can no longer be drawn from the stack. It is drawn
from the ItemStackRenderState the game already extracted, which the
renderer holds and the bridge does not, so both travel to the bridge in a
SubmitContext where the buffer source used to go. The core passes that
argument through untouched, so nothing outside the version modules
changes. The light is read off the render state now that submit no longer
takes it.
Everything else the addon hooks is unchanged: extractItemGroupRenderState,
Entity#stuckSpeedMultiplier, ItemEntity#age, RandomSource#setSeed and the
rotation accessors all still match.
The six new modules differ only in the package of CameraRenderState,
renderer.state up to 1.21.11 and renderer.state.level from 26 on.
Build fixes, all pre-existing: org.cadixdev.licenser 0.6.1 cannot be
applied under Gradle 9 (its CaseInsensitiveMap recurses until the stack
overflows) and has no newer release, accessWidener is a function in
LabyGradle 0.8.1 rather than a property with a setter, and the shared
modules need the Java 21 pin so they stop following the build JDK.
gradlew is committed as 100644, so the workflow's `./gradlew build` dies with "Permission denied" before it reaches the build. Every run of the addon workflow has failed on this.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The newest release covers
1.8.9<1.21.8, so the addon has been gone since 1.21.10, not only on 26.x. Six versions are missing: 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2.What changed in the game
1.21.10 replaced immediate entity rendering with the submit pipeline, and everything the render path of this addon touches went with it:
render(state, PoseStack, MultiBufferSource, int)submit(state, PoseStack, SubmitNodeCollector, CameraRenderState)renderMultipleFromCount(..., MultiBufferSource, ...)submitMultipleFromCount(..., SubmitNodeCollector, ...)ItemRenderer#renderStatic(stack, ctx, light, overlay, pose, bufferSource, level, seed)ItemStackRenderState#submit(pose, collector, light, overlay, tint)renderState.lightCoordsItemRendererlostrenderStaticin 1.21.11 and the class does not exist at all in 26.x, soVersionedVersionBridge#renderItemhad nothing left to call.How it is solved
The item is no longer drawn from the
ItemStack, it is submitted from theItemStackRenderStatethe game already extracted. The renderer has that (renderState.item), the bridge does not, so both travel together in a smallSubmitContextrecord passed where the buffer source used to go.That fits without touching shared code:
ItemPhysicsRenderertakes the buffer asObjectand only hands it tobridge.renderItem, so aSubmitContextrides through untouched. No change tocoreor to theVersionBridgeinterface.Everything else still matches, checked against the remapped jars:
ItemClusterRenderState#extractItemGroupRenderState,Entity#stuckSpeedMultiplier,ItemEntity#age,RandomSource#setSeed/nextFloat,Entity#getYRot/getXRot/setXRot/onGround/position, andextractRenderState.The six modules differ only in the package of
CameraRenderState:renderer.stateup to 1.21.11,renderer.state.levelfrom 26 on.Build fixes
All three are pre-existing,
maindoes not build without them.org.cadixdev.licenser0.6.1 cannot be applied under Gradle 9, itsCaseInsensitiveMap.getrecurses untilStackOverflowError. 0.6.1 is the plugin's last release, so it is removed. Headers stay in the sources andgradle/LICENSE-HEADER.txtstays in the repo. Happy to swap in a maintained checker instead.accessWideneris a function in LabyGradle 0.8.1, not a property with a setter.apiandcorefollow the build JDK and the version modules refuse to consume them.Separate commit for the wrapper:
gradlewis committed as100644, so the workflow dies with./gradlew: Permission deniedand exit 126 before it reaches Gradle. That is why every run of this workflow has failed.Testing
Dev client,
:game-runner:client_v26.2, LabyMod 4.6.18+2840. Four items summoned onto a stone platform, addon toggled live.Not checked in game: 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2. Same pipeline, same module.
Two things I noticed while reading, not touched here
ItemPhysicsRendererhasboolean gui3D = true; model.itemPhysics$isGui3D();on one line. The call result is discarded, sogui3Dis alwaystrueand the wholeif (!gui3D)branch below is dead. It fits the picture thatVersionedBakedModelhas been a stub returningfalsesince 1.21.4, so this looks like a leftover from the render state migration rather than intent. Left alone because fixing it changes rendering behaviour and belongs in its own change.A rebuild raises
requiredLabyModBuildfrom 2015 to 2840.