Skip to content

feat(bedrock): render custom entities and player skins natively - #9

Closed
AlexProgrammerDE wants to merge 4 commits into
ViaVersionAddons:mainfrom
AlexProgrammerDE:codex/native-bedrock-rendering
Closed

AlexProgrammerDE wants to merge 4 commits into
ViaVersionAddons:mainfrom
AlexProgrammerDE:codex/native-bedrock-rendering

Conversation

@AlexProgrammerDE

@AlexProgrammerDE AlexProgrammerDE commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Render Bedrock custom entity geometry in the client using ViaBedrock's parsed resource packs and evaluated render controller state.
  • Cache resolved geometry and texture combinations so render-state extraction does not repeat that work every frame. Invalidate the cache when resource pack storage changes.
  • Convert Bedrock's absolute bone and cube pivots to parent-relative ModelPart transforms so nested rotations use their Bedrock pivots.
  • Apply Bedrock player skins, capes, and custom player geometry through the addon's existing skin provider.
  • Keep ordinary interaction entities invisible, publish entity render state safely across threads, and clear published actor state and player skin textures on disconnect.

This stays in viafabricplus-bedrock. It does not require ViaBedrock changes or the separate ViaBedrockUtility mod.

Validation

  • ./gradlew build passed.
  • ./gradlew runClient reached resource loading and a local world without a mixin or render startup error. The development client was stopped after 75 seconds.
  • The development client uses an unauthenticated player, so Galaxite and Hive gameplay remains unverified.

In-game testing requested

  • On Galaxite and Hive, check custom entity shape, nested bone and cube rotations, per-face UVs, textures, distance culling, and render controller changes.
  • Check classic and custom geometry player skins, slim and wide arms, capes, and skin updates while connected.
  • Disconnect, reconnect, and reload packs to check texture and model cleanup.

Scope of this draft

This ports the utility's custom entity rendering and player appearance features. Persona skins remain unsupported, as in the utility. Bedrock animation controllers, animation trigger packets, and material variants are separate work and need in-game examples before this is ready to merge.

Use ViaBedrock resource pack definitions and entity state to render Bedrock geometry in the Fabric client. Apply Bedrock player skins, capes, and custom geometry without a separate utility mod.

Keep the protocol translation and pack conversion in ViaBedrock, and retain normal interaction rendering for non-Bedrock entities.
Minecraft 26.3 derives a resource file path from the one-argument ResourceTexture constructor. Dynamic Bedrock skin and cape textures are registered under their direct IDs, so use those IDs as the render paths to avoid the missing-texture model.
CubeConverter box UV face labels do not line up with Minecraft model face placement. Map them to the corresponding player faces and retain the cube vertices built with inflation, so skins and clothing layers render without misplaced pixels or overlap.
Publish model snapshots only when ViaBedrock reports a render controller change. Cache geometry and texture resolution by evaluated model set so render-state extraction no longer repeats that work each frame. Clear the cache when resource pack storage changes or the connection is unavailable.
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