#Base64 Heads in Custom Heads Config
61 messages · Page 1 of 1 (latest)
Decode the base64 and it should give you the real data for that file
@delicate moth Know any way to decode it? And what will be the result like when i decoded it? Maybe i could create a script to decode it.
@delicate moth Should this be the expected result?
WG;sͽvosM77yζVzoWvu}u9
That doesn't seem to be right... But it may be so i wanna confirm.
I'm was finding heads at https://minecraft-heads.com/custom-heads/head/95619-monitor but i don't know which is base64 in the provided information for each head.
I'm really new to this heads thing since i don't really use it much
Nvm i got the desired format. How do it put it now?
You leveled up to level 4!
Update yall i figured it out and created a python script that generates a custom-skulls.yml containing every base64 code from minecraft-heads.com 💀
Good luck loading it, everything in custom-skulls.yml is generated into a bedrock resource pack. And there’s a lot of textures so you have a higher chance of getting the pink glitch
realistically speaking, going over 1k custom blocks might already start causing issues on the Bedrock client
just tested it the yml won't even load💀
I will ask the Geyser Devs if there's a way to dissect each category in seperate ymls
1k blocks is a low guess. The miscellaneous category alone is 11k
I make the script to allow me to choose which categories i want.
And remove the ones that isn't needed
I will also try to import it to a local resource pack
We're not the ones limiting is, Bedrock is - the custom-skulls.yml registers each skull there as a custom block to Bedrock. And the Bedrock client loves to crash or not load textures anymore when going above a certain amount of custom items/blocks/textures
Why not just create it to a resource pack right? And don't rely on geyser generating it?
It could be way more efficient
Some resources packs in bedrock are way larger than 13mb
They do great
Geyser is creating a resource pack once, and only re-generates it if the custom-skulls.yml changed. The limitation here is not Geyser, but rather the Bedrock client
texture pack size is not the same as the amount of textures/custom items/blocks
There are packs with 100MB that load fine (not on all clients). The issue is how many textures, with what resolution
Hmm that's weird.....
Heads are like 8x8
The miscellaneous category alone is 11k and the humanoid category
I really wish the geysermc devs find a way to make heads work in bedrock
Rather than us working with sticks and stones
Do you have any idea how geysermc generates the texturepack? Maybe i could experiment a little with it and create a script to do it the same as geysermc does but locally. I will try to make a resource pack and figure out how i could make this work.
Okay, to make that clear - the limitation is Bedrock, not us (Custom heads with custom textures simply do not exist on Bedrock). We have two workarounds, which yes, suck, but there is no other way to make that happen.
The first is the custom-skulls.yml. That's required when you want that specific head to also show up in the inventory with a skin; but the downside here is that each head is a custom block with a custom texture; as that's the only way to allow Bedrock to load them in the inventory.
The second does not require any modification of that file/other configuration; but only applies to heads placed on the ground/worn on player heads. We use fake player entities for those to display skins; and that is not limited (as we dont need to use a texture pack in this approach)
To re-iterate: The issue is not how the pack is generated, but rather that the Bedrock client will only accept a certain number of custom blocks/textures/etc. Bedrock's custom block system is unfortunately limited
That's my original goal to keep the inventory functionality while without having to get every head in your Custom GUIs and add it manually into GeyserMC.
Yes i know but i wanna experiment with it while not adding everything. Maybe i could figure out a way to do it smaller for now.
Adding every single head from a head database will not achieve that, and instead crash clients that try to join. If you use some heads in GUIs. you should register those; either via the file or using Geyser's api and an extension
Well it seems that's what i will go with for now. But that still seems too big to do tbh. Considering i use atleast 95 plugins with 40% having custom GUI's. That's not including Custom DeluxeMenus.
https://github.com/GeyserMC/Geyser/blob/master/core/src/main/java/org/geysermc/geyser/registry/type/CustomSkull.java
https://github.com/GeyserMC/Geyser/blob/master/core/src/main/java/org/geysermc/geyser/registry/populator/CustomSkullRegistryPopulator.java
https://github.com/GeyserMC/Geyser/blob/master/core/src/main/java/org/geysermc/geyser/pack/SkullResourcePackManager.java
Here's how Geyser loads custom heads/creates the resource pack for the heads if you're curious; not the simplest process.
Some plugins don't even display what Heads they use. Since the GUI's are mostly contained inside the plugin's code.
!!forms We'd recommend using Bedrock forms for the best Bedrock experience - those support showing custom icons for buttons based on just web links, and are nicer to use for Bedrock players.
There are multiple APIs available for different purposes.
- The Floodgate API allows plugins and mods to check for Bedrock players, or to get important information about them.
- The Geyser API can be used to interact with Geyser itself - for example, by registering custom items or blocks, and listening to events.
- You can use the Global API to get specific details about Bedrock players, such as linking status or converted Bedrock skins.
- Bedrock Edition features built-in GUIs. See the Cumulus API for more information on how to create and send those.
^ see the "cumulus api" if you are interested; or e.g. CrossPlatForms if you want to see how a plugin implements it.
The code you sent me doesn't seem to display anything about how it gets the textures of the base64 code you put in custom-skulls.yml. I used python to create the script i made to dump all the base64 codes from the Minecraft-Head website API.
And it basically generates a new custom-skulls.yml that already contains all the dumped base64 code.
https://github.com/GeyserMC/Geyser/blob/master/core/src/main/java/org/geysermc/geyser/registry/populator/CustomSkullRegistryPopulator.java#L113
https://github.com/GeyserMC/Geyser/blob/master/core/src/main/java/org/geysermc/geyser/registry/populator/CustomSkullRegistryPopulator.java#L138-L156
here it is - it takes those profiles, reads the base64 by decoding it, and just gets the texture hash from them
as for how it then gets textures; see the SkullResourcePackManager - it'll just request the images using the texture hash from mojang's api; and then add them into the resource pack
Thanks alot! Really appreciate explaining most of the technical stuff side of this. I don't really know much about resource packs so this really helped alot.
Sure. If you ask me, the ideal user-experience would be to use Bedrock edition forms for Bedrock players, and gui menus for Java players :p
I know some plugins that already use this. It would be more appreciated for plugin devs to use that way for GUI's instead.
But tbh the original GUI's still looks more sleek and customizable. And it just doesn't get in the way that minecraft feels. I just like keeping things original lol.
well, you do you - we're unfortunately limited by what Bedrock offers us to use
Yeah, and also the glass panes in Bedrock GUI's also kills me when i create custom GUI's...
Why are they sideways... But anyways i got a texturepack dev to fix that already. It kills me when i see it.
The GUI's just look so crappy
Well, see, Bedrock forms don't :p
But yeah; there are differences between the versions, noticeable here
Btw how do i import ItemsAdder or Oraxen Custom GUI's to Bedrock? I know a friend of mine who did it and it works. He thought me it but i didn't really listen since im was sleepy as heck.
That's not something i can really help with. The people in #custom-resource-packs will know more about that
I never noticed you were a GeyserMC Dev💀