|
|
|
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.
|
|
|
|
|
|
|
|
<h1>Atlases</h1>
|
|
|
|
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.)
|
|
|
|
|
|
|
|
<h1>Sources</h1>
|
|
|
|
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.
|
|
|
|
|
|
|
|
<h3>Directory</h3>
|
|
|
|
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:
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"type": "directory",
|
|
|
|
"source": "custom/entity",
|
|
|
|
"prefix": "mob/"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
<h3>Single</h3>
|
|
|
|
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:
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"parent": "minecraft:item/generated",
|
|
|
|
"textures": {
|
|
|
|
"layer0": "custom_b:mob/pig"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
Add a source configured like so:
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"type": "single",
|
|
|
|
"resource": "custom_b:mob/pig",
|
|
|
|
"sprite": "custom_a:custom/entity/boar"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
<h3>Filter</h3>
|
|
|
|
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:
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"type": "filter",
|
|
|
|
"pattern": {
|
|
|
|
"namespace": "minecraft"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
Or, if we want to remove all item textures of all namespace and resource packs, we can do this:
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"type": "filter",
|
|
|
|
"pattern": {
|
|
|
|
"path": "item"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
<h3>Unstitch</h3>
|
|
|
|
Not much is known about this source. If only Mojank can release the documentation to use this (lol as if they would care.)
|
|
|
|
|
|
|
|
<h1>Conclusion</h1>
|
|
|
|
Mojank has gone mad and there is no saving them.
|
|
|
|
|
|
|
|
<h1>TL;DR</h1>
|
|
|
|
To use convert a 1.19.2 pack to 1.19.3, follow these steps:
|
|
|
|
|
|
|
|
- Create a `blocks.json` file in `assets/minecraft/atlases`
|
|
|
|
- Paste the following:
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"sources": [
|
|
|
|
{
|
|
|
|
"type": "directory",
|
|
|
|
"source": "entity",
|
|
|
|
"prefix": "entity/"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
- Profit |
|
|
|
\ No newline at end of file |