Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mob heads don't render #45

Open
stwalkerster opened this issue Feb 11, 2024 · 2 comments
Open

Mob heads don't render #45

stwalkerster opened this issue Feb 11, 2024 · 2 comments
Assignees

Comments

@stwalkerster
Copy link
Collaborator

stwalkerster commented Feb 11, 2024

The following block IDs aren't used by Overviewer at all:

  • minecraft:creeper_wall_head
  • minecraft:dragon_wall_head
  • minecraft:piglin_head
  • minecraft:piglin_wall_head
  • minecraft:zombie_wall_head
  • minecraft:player_wall_head
  • minecraft:skeleton_wall_skull
  • minecraft:wither_skeleton_wall_skull

Other mob heads (placed on the floor) are referenced by Overviewer, but are not rendered.

For creeper/zombie/skeleton/wither_skeleton, this is probably easyish to solve.

For piglins, it's slightly harder due to the ears. Those are covered by #62.

For dragons, the block is huge and might cause problems with the inherent image size constraints. This is covered by #63

For players, we can trivially render a Steve head in the same way as a Creeper/Zombie/etc head. However, these can have custom metadata to allow showing any mob head, and that's stored as block entity data and is probably inaccessible to the render as-is. I consider custom player heads out-of-scope for this issue.

@stwalkerster stwalkerster self-assigned this Feb 21, 2024
This was referenced Feb 24, 2024
@stwalkerster
Copy link
Collaborator Author

I've made a good start on this, but they currently render as full blocks and don't respect all possible rotation values. I'm happy with my progress so far, but more work is needed.

image

@stwalkerster
Copy link
Collaborator Author

stwalkerster commented Mar 15, 2024

On the topic of player heads, if we can scan the block entity data prior to a texture generation phase and get the distinct set of player skins required, we can dynamically allocate and populate texture data for the set of required player heads for the renderer to use during the texture generation phase.

Check the following:

  • Is the region data loaded before the texture generation phase?
    • No, we'd have to load it for this specifically
  • Can we inject an additional data generation phase (feature-flagged) prior to the render beginning?
  • Figure out if we can access block entity data from state.chunks[i][j] in iterate.c, or generally what that contains
  • Figure out how to pass the dynamic player head data map into the tile render process so it can choose the correct pre-generated texture

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

No branches or pull requests

1 participant