Minecraft 1.19.3 added a brand-new system for handling textures with the purpose of optimizing performance. However, the system at its current stage is superbly flawed and basically unusable, but suppose Mojank is too stubborn to change (which is very likely,) here is an explanation of the system.
Atlases
Atlases are the new ways for Minecraft to recognize a texture file. Currently, there are 10 default atlases used:
- banner_patterns
- beds
- blocks
- chests
- mob_effects
- paintings
- particles
- shield_patterns
- shulker_boxes
- signs
The one we are interested in is the blocks
atlas since it handles all block and item textures (yes, don't ask me why.)
Sources
Modifying an atlas is not simple at all. It's overcomplicated and the options given are hard to use at best. To help better understand what the fuck they were thinking, we must first understand sources.
Sources can be treated as a list of commands that tell Minecraft how to handle the textures in a resource pack. There are currently 4 sources.
Directory
The directory
source is used to include all textures inside a folder.
Argument | Description |
---|---|
source | Defines the path to the folder containing the textures. This path is relative to the textures folder, cannot be backtracked with ../ , and targets across all namespaces and resource packs, including the default minecraft namespace.
|
prefix | Defines the path that reference to source
|
Example: Say we want to stitch the texture inside the textures/custom/entity
folder, and be able to reference the texture with mob/<texture_name>
, we can add a source configured like so:
{
"type": "directory",
"source": "custom/entity",
"prefix": "mob/"
}
Single
The single
source is similar to the directory
, but instead of specifying a folder, you specify a single texture file instead.
Argument | Description |
---|---|
resource | Defines the resource ID of this texture. As in, the path you input when referencing a texture in a model file. |
sprite | Defines the path that point towards the texture file |
Example: Say we want to use the texture custom_a/textures/custom/entity/boar.png
in this item model:
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "custom_b:mob/pig"
}
}
Add a source configured like so:
{
"type": "single",
"resource": "custom_b:mob/pig",
"sprite": "custom_a:custom/entity/boar"
}
Filter
The filter
source filters out textures from being stitched. In other words, it excludes textures. It takes in 2 arguments, but must be contained within a pattern
object (for some goddamn reason.)
Argument | Description |
---|---|
namespace | Regex condition that filters out texture when the namespace matches |
path | Regex condition that filters out texture when the path matches |
Examples: Say we want to completely remove all textures associated with the minecraft
namespace, we can do this:
{
"type": "filter",
"pattern": {
"namespace": "minecraft"
}
}
Or, if we want to remove all item textures of all namespace and resource packs, we can do this:
{
"type": "filter",
"pattern": {
"path": "item"
}
}
Unstitch
Not much is known about this source. If only Mojank can release the documentation to use this (lol as if they would care.)
Conclusion
Mojank has gone mad and there is no saving them.
TL;DR
To use convert a 1.19.2 pack to 1.19.3, follow these steps:
- Create a
blocks.json
file inassets/minecraft/atlases
- Paste the following:
{
"sources": [
{
"type": "directory",
"source": "entity",
"prefix": "entity/"
}
]
}
- Profit