Zailer43 / FZMM-Mod

A fabric mod that is mainly for editing or creating NBT of items in creative but it also has a few utilities
https://modrinth.com/mod/fzmm/
The Unlicense
24 stars 4 forks source link

[Suggestion] HD Heads (Generator & Renderer) #37

Closed KadTheHunter closed 1 month ago

KadTheHunter commented 1 year ago

It was recently discovered that a mod called FabricTailor allowed HD Heads to be rendered once more. There's two issues however:

  1. Tailor is focused on Skin Changing, and adding Server Side features
  2. Somewhat related to 1, Tailor doesn't allow Transparency in heads.

I have opened this issue/suggestion in the hopes that you can add a HD Head Generator to FZMM in addition to getting FZMM to render HD Heads.

The general theory I understand as to how Tailor allowed HD Heads to render, is allowing loading textures from a list of domains. I don't fully understand it, and maybe for reasons I don't understand this won't be possible in FZMM, but one can always hope.

If this were to be added in FZMM, I envision two parts to it:

  1. HD Head Generator This would be similar to the other generators in FZMM, in that you would provide a link to a texture (e.g https://education.minecraft.net/wp-content/uploads/troll-1.png), and FZMM would give you a head with a new UUID, and that texture. Similar to Tailor, you could use a variety of links to host the source image; Imgur, Discord, GitHub, NameMC, etc. and maybe FZMM would display an error in the GUI if you used a link that wasn't allowed

  2. HD Head Renderer This would allow clients to render HD Heads; I know nothing about actually rendering things, but I do know that currently when you try and load an HD Head, the following message is logged: [Render thread/ERROR]: Textures payload contains blocked domain: https://education.minecraft.net/wp-content/uploads/troll-1.png And I also know that allowing connections to minecraft.net or really any site that has the HD Texture (see here) lets them load. The one thing that would defeat the point of this however, is if they can't be rendered with transparency. I do believe they can, but maybe you can give some details on that if not.

Thank you for reading through this wall of text, and I hope this can be added eventually :)

Zailer43 commented 1 year ago
  1. HD Head Generator This would be similar to the other generators in FZMM, in that you would provide a link to a texture (e.g https://education.minecraft.net/wp-content/uploads/troll-1.png), and FZMM would give you a head with a new UUID, and that texture. Similar to Tailor, you could use a variety of links to host the source image; Imgur, Discord, GitHub, NameMC, etc. and maybe FZMM would display an error in the GUI if you used a link that wasn't allowed

to do this I would have to implement an image scaling, so that if for example you upload a 128x128 skin you can use the rescaled 64x64 head textures without having to specifically create 128x128 head textures for that image, the easiest would be to simply have a button to save the skin and then you upload it to the site of your choice, but I could also support some sites, but I would have to look which ones have an API that allows me to do so, since:

but it would be an interesting implementation

  1. HD Head Renderer This would allow clients to render HD Heads; I know nothing about actually rendering things, but I do know that currently when you try and load an HD Head, the following message is logged: [Render thread/ERROR]: Textures payload contains blocked domain: https://education.minecraft.net/wp-content/uploads/troll-1.png And I also know that allowing connections to minecraft.net or really any site that has the HD Texture (see here) lets them load. The one thing that would defeat the point of this however, is if they can't be rendered with transparency. I do believe they can, but maybe you can give some details on that if not.

I think for this point is easier to use CustomSkinLoader, it supports hd skins, several places to host the image and transparent skins, although it would not make sense to generate a hd head without being able to render it with its skin, but I think it's easier than redoing something similar to this mod that already exists.

KadTheHunter commented 1 year ago

I think you might be misunderstanding the first part or I'm misunderstanding your reply.

Users would create textures themselves and upload to an allowed site; FZMM would take that link, add it inside of

{"textures":{"SKIN":{"url":"YOUR-LINK-HERE"}}}

Encode that ^ to b64, and then take the b64 and use it in the Texture tag of the head (Inside of SkullOwner -> Properties -> Textures) FZMM would also generate the UUIDs for the Skull, in their appropriate fields.

The reasoning I had behind FZMM implementing a renderer for the HD Heads is so it went smoother with the generator; Links the generator accepts will also be loaded by the Renderer.

As for the second part I'll look into CustomSkinLoader, thanks for suggesting that.

Zailer43 commented 1 year ago

ah ok ok, I thought you meant to upload the skin of the newly generated head and not just generate the nbt from the url

KadTheHunter commented 1 year ago

CustomSkinLoader does allow rendering HD Heads with transparency, so that's good, thank you for suggesting it.

The only thing I have left to add to this suggestion, is that if the rendering part of HD Heads is added to FZMM, it would be good if it allowed loading textures from a small but select group of domains like the ones I originally mentioned: imgur.com, discord.com, github.com, etc. in addition to minecraft.net, as that would be the easiest way for users to upload their own textures for new HD Heads.

Also, for more clarity on the whole process of HD Heads:

KadTheHunter commented 1 month ago

Closing this issue, as Mojang has deleted every single HD Head skin texture from the education site. HD Heads are now truly dead.

Additionally it turns out mods such as SoHead and hdheadfinal existed, so I should have closed this long ago. But I guess it doesn't really matter now.