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 are the new ways for Minecraft to recognize a texture file. Currently, there are 10 default atlases used: Atlases
- 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.)
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
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.
The `directory` source is used to include all textures inside a folder. Directory
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/"
}
The `single` source is similar to the `directory`, but instead of specifying a folder, you specify a single texture file instead. Single
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"
}
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.) Filter
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"
}
}
Not much is known about this source. If only Mojank can release the documentation to use this (lol as if they would care.) Unstitch
Mojank has gone mad and there is no saving them. Conclusion
To use convert a 1.19.2 pack to 1.19.3, follow these steps: TL;DR
- Create a
blocks.json
file inassets/minecraft/atlases
- Paste the following:
{
"sources": [
{
"type": "directory",
"source": "entity",
"prefix": "entity/"
}
]
}
- Profit