All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Fusion (Connected Textures)

Fusion (Connected Textures)

by SuperMartijn642 • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Separator

Fusion Connected Textures

Fusion is a library for both Forge and Fabric which adds additional resource pack features such as connected textures and custom entity models to be used in resource packs and other mods! Integration with Fusion can be done optionally for a soft dependency.

📖 Wiki

For resource pack developers:

https://github.com/SuperMartijn642/Fusion/wiki#for-resource-packs

For mod developers:

https://github.com/SuperMartijn642/Fusion/wiki#for-mod-developers

Separator

Resource packs

Here's a list of resource packs available for Fusion.

Official resource packs:

Third-party resource packs:

(This is not a comprehensive list. If you made a resource pack which is compatible with Fusion and would like it listed here, feel free to send me a message on Discord.)

You can also see all resource packs on Modrinth that use Fusion using the following link: https://modrinth.com/discover/resourcepacks?dep=required,optional:p19vrgc2

Separator

Connecting textures

Connected textures are textures with a special layout which allows them to connect to other blocks when combined with the connecting model type. Fusion offers 7 different connecting texture layouts for different situations.
Here are examples of the full and compact layouts:

Bordered wooden tiles example Steel beams example

Separator

Scrolling textures

Scrolling textures are a type of animated texture which scrolls over an image. The scrolling can occur from any corner to any other corner of the texture, even diagonal! Here is an example of a conveyor belt:

Scrolling texture conveyor example Scrolling texture conveyor belt

Separator

Continuous textures

Continuous textures allow creating textures which span multiple blocks!

Large stone bricks example

Separator

📐 Block overlays

Using the features provided by the connecting model and connecting texture type, you can also create block overlays!

Sand overflow example Grass overflow example

Separator

Custom entity models

Custom entity models and entity model modifiers allow resource packs to change entity models and textures randomly or depending various conditions such altitude, biome, dimension, age, etc.

Custom chicken model Taiga cow variant

Separator

FAQ

Can I use Fusion in my modpack?

Yes, you are allowed use Fusion in your modpack

Do I need to install Fusion on the server?

No, Fusion is only required on the client and does nothing when installed on a server

Why does Fusion not work with Sodium?

If you are using a version of Sodium older than 0.6, you will also have to install Indium. Sodium replaces the vanilla rendering with their own which ignores the Fabric Rendering API. Indium patches Sodium to support the Fabric Rendering API

Separator

Discord

For future content, upcoming mods, and discussion, feel free to join the SuperMartijn642 discord server!

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3
Neoforge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.3
Fabric Quilt
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.3
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
26.3
Neoforge
2d ago 1
26.2
Neoforge
2d ago 1
26.3
Fabric Quilt
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.3
Neoforge
2d ago 1
26.3
Fabric Quilt
2d ago 1
26.2
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
1.20.x
Neoforge
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.14.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.14.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.14.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.14.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.14.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
26.2
Fabric Quilt
2d ago 1
26.2
Neoforge
2d ago 1
26.1.x
Neoforge
2d ago 1
26.1.x
Fabric Quilt
2d ago 1
26.2
Forge
2d ago 1
26.1.x
Forge
2d ago 1
1.21.11
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.5
Neoforge
2d ago 1
1.21.4
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Neoforge
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.5
Fabric Quilt
2d ago 1
1.21.4
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
1.21.11
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.5
Forge
2d ago 1
1.21.4
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.3
Forge
2d ago 1
1.19.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.14.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
1.12.x
Forge
2d ago 1
1.21.11
Fabric Quilt
2d ago 1
1.12.x
Forge
2d ago 1
1.15.x
Forge
2d ago 1
1.16.x
Forge
2d ago 1
1.17.x
Forge
2d ago 1
1.18.x
Forge
2d ago 1
1.18.x
Fabric Quilt
2d ago 1
1.19.x
Forge
2d ago 1
1.19.2
Fabric Quilt
2d ago 1
1.19.3
Forge
2d ago 1
1.19.4
Forge
2d ago 1
1.19.4
Fabric Quilt
2d ago 1
1.20.x
Forge Neoforge
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.4
Fabric Quilt
2d ago 1
1.20.x
Neoforge
2d ago 1
1.20.x
Forge
2d ago 1
1.20.x
Fabric Quilt
2d ago 1
1.21.x
Neoforge
2d ago 1
1.21.x
Forge
2d ago 1
1.21.x
Fabric Quilt
2d ago 1
1.21.x
Neoforge
2d ago 1
[1.3.16-neoforge-mc26.3] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed crash with NeoForge 26.3.0.36-beta and newer

### Fusion 1.3.15a
  • Fixed flag tracking breaking overlay rendering not being cleared, sometimes resulting in missing model parts

## Update to Minecraft 26.3

### Fusion 1.3.15a
  • Added icon and banner images for new NeoForge 26.2.0.50-beta mod list

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed model lighting sometimes being incorrect with Sodium installed due to precision errors when checking whether model transform is limited to rotations of 90 degrees

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11a
  • Fixed error when baking faces with null chunk layer

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed quad material cache not being invalidated when copying quad properties leading to incorrect material properties
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

## Update to Minecraft 26.2

## Update to Minecraft 26.1

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash with Sodium

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

[1.3.16-neoforge-mc26.2] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed flag tracking breaking overlay rendering not being cleared, sometimes resulting in missing model parts

### Fusion 1.3.15a
  • Added icon and banner images for new NeoForge 26.2.0.50-beta mod list

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed model lighting sometimes being incorrect with Sodium installed due to precision errors when checking whether model transform is limited to rotations of 90 degrees

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11a
  • Fixed error when baking faces with null chunk layer

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed quad material cache not being invalidated when copying quad properties leading to incorrect material properties
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

## Update to Minecraft 26.2

## Update to Minecraft 26.1

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash with Sodium

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

[1.3.16-neoforge-mc26.1] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed model lighting sometimes being incorrect with Sodium installed due to precision errors when checking whether model transform is limited to rotations of 90 degrees

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11a
  • Fixed error when baking faces with null chunk layer

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed quad material cache not being invalidated when copying quad properties leading to incorrect material properties
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

## Update to Minecraft 26.1

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash with Sodium

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types
  • Fixed model lighting sometimes being incorrect with Sodium installed due to precision errors when checking whether model transform is limited to rotations of 90 degrees

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed crash when breaking a block targeted by a block model modifier
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window
  • Fixed crash when creating texture animation frames

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash with Sodium

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types
  • Fixed model lighting sometimes being incorrect with Sodium installed due to precision errors when checking whether model transform is limited to rotations of 90 degrees

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed crash when breaking a block targeted by a block model modifier

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window
  • Fixed crash when creating texture animation frames

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11d
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11c
  • Fixed crash when using NeoForge 21.9.14-beta and newer with other mods

### Fusion 1.2.11b
  • Fixed overrides folder property not working with NeoForge JarContentsPackResources

### Fusion 1.2.11a
  • Fixed Fusion's pack.mcmeta data not getting loaded for mod resources

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.9

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types
  • Fixed model lighting sometimes being incorrect with Sodium installed due to precision errors when checking whether model transform is limited to rotations of 90 degrees

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed crash when breaking a block targeted by a block model modifier

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window
  • Fixed crash when creating texture animation frames

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed Fusion's pack.mcmeta data not getting loaded for mod resources

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9a
  • Fixed crash when using model modifiers with mods using Puzzles Lib installed

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed quads with different render types being ordered randomly for base and connecting models when rendered as items
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed pane_culling_fix discarding render type and ambient occlusion properties
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Initial release of Fusion for Minecraft 1.21.6 & 1.21.7

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed crash when breaking a block targeted by a block model modifier

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window
  • Fixed crash when creating texture animation frames

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed Fusion's pack.mcmeta data not getting loaded for mod resources

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9a
  • Fixed crash when using model modifiers with mods using Puzzles Lib installed

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed quads with different render types being ordered randomly for base and connecting models when rendered as items
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed pane_culling_fix discarding render type and ambient occlusion properties
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7b
  • Changed #createGeometryKey to provide a globally unique value by including the model itself

### Fusion 1.2.7a
  • Implemented #createGeometryKey for base and connecting models, so they can be cached

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6a
  • Fixed pane_culling_fix causing crashes
  • Fixed crash when Iris is installed

### Fusion 1.2.6
  • Initial release of Fusion for Minecraft 1.21.5

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models for blocks targeted by block model modifiers not receiving world context with Sodium

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed models from block model modifiers grouped by random offset being submitted for all models' render types
  • Fixed models from block model modifiers grouped by random offset not receiving world context

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window
  • Fixed crash when creating texture animation frames

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed wrong render type being used for modded blocks that set a Forge override
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11e
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11d
  • Fixed block model modifier outputting quads from WeightedBakedModels for all render types

### Fusion 1.2.11c
  • Fixed the breaking texture not showing on blocks targeted by a block model modifier

### Fusion 1.2.11b
  • Fixed Fusion's pack.mcmeta data not getting loaded for mod resources

### Fusion 1.2.11a
  • Fixed show_breaking_overlay option for block model modifiers not working

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9a
  • Fixed crash when using model modifiers with mods using Puzzles Lib installed

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed quads being emitted 7 times for base and connecting models when rendered as items
  • Fixed quads with different render types being ordered randomly for base and connecting models when rendered as items
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed render type hint from NeoForge's model format being ignored
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7b
  • Fixed integration with FramedBlocks

### Fusion 1.2.7a
  • Moved connection evaluation for connecting models fixing Fusion caching issue when combined with FramedBlocks

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6a
  • Fixed connecting and base models not always using correct render type when rendered as items

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated
  • Account for breaking changes in NeoForge 21.4.84-beta

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.21.4

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used
  • Fixed modded models using NeoForge's custom geometry being baked as regular models

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models for blocks targeted by block model modifiers not receiving world context with Sodium
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed models from block model modifiers grouped by random offset being submitted for all models' render types
  • Fixed models from block model modifiers grouped by random offset not receiving world context

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed Forge/NeoForge render_type property not working for cuboid models

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed wrong render type being used for modded blocks that set a Forge override

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11e
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11d
  • Fixed block model modifier outputting quads from WeightedBakedModels for all render types

### Fusion 1.2.11c
  • Fixed the breaking texture not showing on blocks targeted by a block model modifier

### Fusion 1.2.11b
  • Fixed Fusion's pack.mcmeta data not getting loaded for mod resources

### Fusion 1.2.11a
  • Fixed show_breaking_overlay option for block model modifiers not working

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed quads being emitted 7 times for base and connecting models when rendered as items
  • Fixed quads with different render types being ordered randomly for base and connecting models when rendered as items
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed render type hint from NeoForge's model format being ignored
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7b
  • Fixed integration with FramedBlocks

### Fusion 1.2.7a
  • Moved connection evaluation for connecting models fixing Fusion caching issue when combined with FramedBlocks

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6a
  • Fixed connecting and base models not always using correct render type when rendered as items

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated
  • Fixed non-custom render type quads not being rendered in item models for base and connecting models
  • Files generated through FusionModelProvider are now tracked in the existing file helper

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed crash when obtaining model data for a multipart model

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1a
  • Fixed 'Model loader not found' errors

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.20.5 & 1.20.6

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used
  • Fixed modded models using NeoForge's custom geometry being baked as regular models

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models for blocks targeted by block model modifiers not receiving world context with Sodium
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed models from block model modifiers grouped by random offset being submitted for all models' render types
  • Fixed models from block model modifiers grouped by random offset not receiving world context

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed Forge/NeoForge render_type property not working for cuboid models

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed wrong render type being used for modded blocks that set a Forge override

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed broken lighting for Fusion models
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11e
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11d
  • Fixed block model modifier outputting quads from WeightedBakedModels for all render types

### Fusion 1.2.11c
  • Fixed the breaking texture not showing on blocks targeted by a block model modifier

### Fusion 1.2.11b
  • Fixed Fusion's pack.mcmeta data not getting loaded for mod resources

### Fusion 1.2.11a
  • Fixed show_breaking_overlay option for block model modifiers not working

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed quads being emitted 7 times for base and connecting models when rendered as items
  • Fixed quads with different render types being ordered randomly for base and connecting models when rendered as items
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed render type hint from NeoForge's model format being ignored
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7b
  • Fixed integration with FramedBlocks

### Fusion 1.2.7a
  • Moved connection evaluation for connecting models fixing Fusion caching issue when combined with FramedBlocks

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6a
  • Fixed connecting and base models not always using correct render type when rendered as items

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated
  • Fixed non-custom render type quads not being rendered in item models for base and connecting models
  • Files generated through FusionModelProvider are now tracked in the existing file helper

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed crash when obtaining model data for a multipart model

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1a
  • Fixed 'Model loader not found' errors

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.20.5 & 1.20.6

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used
  • Fixed modded models using NeoForge's custom geometry being baked as regular models

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models for blocks targeted by block model modifiers not receiving world context with Sodium
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed models from block model modifiers grouped by random offset being submitted for all models' render types
  • Fixed models from block model modifiers grouped by random offset not receiving world context

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed Forge/NeoForge render_type property not working for cuboid models
  • Fixed item models that have a parent model at the same location as the item identifier failing to load

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed wrong render type being used for modded blocks that set a Forge override

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11e
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11d
  • Fixed block model modifier outputting quads from WeightedBakedModels for all render types

### Fusion 1.2.11c
  • Fixed the breaking texture not showing on blocks targeted by a block model modifier

### Fusion 1.2.11b
  • Fixed Fusion's pack.mcmeta data not getting loaded for mod resources

### Fusion 1.2.11a
  • Fixed show_breaking_overlay option for block model modifiers not working

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed quads being emitted 7 times for base and connecting models when rendered as items
  • Fixed quads with different render types being ordered randomly for base and connecting models when rendered as items
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed render type hint from NeoForge's model format being ignored
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7b
  • Fixed integration with FramedBlocks

### Fusion 1.2.7a
  • Moved connection evaluation for connecting models fixing Fusion caching issue when combined with FramedBlocks

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6a
  • Fixed connecting and base models not always using correct render type when rendered as items

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated
  • Fixed non-custom render type quads not being rendered in item models for base and connecting models
  • Files generated through FusionModelProvider are now tracked in the existing file helper

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed crash when obtaining model data for a multipart model

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1a
  • Fixed 'Model loader not found' errors

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.20.5 & 1.20.6

### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14a
  • Fixed NeoForge model render_type property making models invisible if there is no other custom render type used
  • Fixed modded models using NeoForge's custom geometry being baked as regular models

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Added a workaround for minimap mods not checking geometry for different render types
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models for blocks targeted by block model modifiers not receiving world context with Sodium
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed models from block model modifiers grouped by random offset being submitted for all models' render types
  • Fixed models from block model modifiers grouped by random offset not receiving world context

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed Forge/NeoForge render_type property not working for cuboid models
  • Fixed item models that have a parent model at the same location as the item identifier failing to load

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed overrides_folder not working for mod resources

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed wrong render type being used for modded blocks that set a Forge override

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11d
  • Fixed block model modifier outputting quads from WeightedBakedModels for all render types

### Fusion 1.2.11c
  • Fixed the breaking texture not showing on blocks targeted by a block model modifier

### Fusion 1.2.11b
  • Fixed Fusion's pack.mcmeta data not getting loaded for mod resources

### Fusion 1.2.11a
  • Fixed show_breaking_overlay option for block model modifiers not working

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed quads being emitted 7 times for base and connecting models when rendered as items
  • Fixed quads with different render types being ordered randomly for base and connecting models when rendered as items
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed render type hint from NeoForge's model format being ignored
  • Fixed crash when evaluating biome entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7b
  • Fixed integration with FramedBlocks

### Fusion 1.2.7a
  • Moved connection evaluation for connecting models fixing Fusion caching issue when combined with FramedBlocks

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6a
  • Fixed connecting and base models not always using correct render type when rendered as items

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated
  • Fixed non-custom render type quads not being rendered in item models for base and connecting models
  • Files generated through FusionModelProvider are now tracked in the existing file helper

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed crash when obtaining model data for a multipart model

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Added match_state connection predicate
  • Added is_face_visible connection predicate

### Fusion 1.1.0a
  • Fix Forge's render_type property not working for connecting models

### Fusion 1.1.0
  • Initial release of Fusion for NeoForge

[1.3.16-fabric-mc26.3] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed flag tracking breaking overlay rendering not being cleared, sometimes resulting in missing model parts

## Update to Minecraft 26.3

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11a
  • Fixed error when baking faces with null chunk layer

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed quad material cache not being invalidated when copying quad properties leading to incorrect material properties
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed connecting texture predicate resolution for item models
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed integration with Sodium
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

## Update to Minecraft 26.2

## Update to Minecraft 26.1

### Fusion 1.2.12a
  • Fixed performance issues when resolving custom texture tinting with Sodium installed

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash with Sodium

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

[1.3.16-fabric-mc26.2] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed flag tracking breaking overlay rendering not being cleared, sometimes resulting in missing model parts

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11a
  • Fixed error when baking faces with null chunk layer

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed quad material cache not being invalidated when copying quad properties leading to incorrect material properties
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed connecting texture predicate resolution for item models
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed integration with Sodium
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

## Update to Minecraft 26.2

## Update to Minecraft 26.1

### Fusion 1.2.12a
  • Fixed performance issues when resolving custom texture tinting with Sodium installed

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash with Sodium

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

[1.3.16-fabric-mc26.1] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11a
  • Fixed error when baking faces with null chunk layer

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed quad material cache not being invalidated when copying quad properties leading to incorrect material properties
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed connecting texture predicate resolution for item models
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed integration with Sodium
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

## Update to Minecraft 26.1

### Fusion 1.2.12a
  • Fixed performance issues when resolving custom texture tinting with Sodium installed

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash with Sodium

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

[1.3.16-fabric-mc1.21.11] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed crash from pane_culling_fix requesting invalid atlas id

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12a
  • Fixed performance issues when resolving custom texture tinting with Sodium installed

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash with Sodium

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

[1.3.16-fabric-mc1.21.9] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2b
  • Fixed crash from pane_culling_fix requesting invalid atlas id

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.9

[1.3.16-fabric-mc1.21.6] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9a
  • Fixed crash when using model modifiers with mods using Puzzles Lib installed

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layer

### Fusion 1.2.7a
  • Fixed quads not getting culled for base and connecting models

### Fusion 1.2.7
  • Initial release of Fusion for Minecraft 1.21.6 & 1.21.7

[1.3.16-fabric-mc1.21.5] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9a
  • Fixed crash when using model modifiers with mods using Puzzles Lib installed

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7b
  • Changed #createGeometryKey to provide a globally unique value by including the model itself

### Fusion 1.2.7a
  • Implemented #createGeometryKey for base and connecting models, so they can be cached

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.21 & 1.21.1

[1.3.16-fabric-mc1.21.4] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed block model predicates being rotated incorrectly due to floating point errors

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed connecting texture predicate resolution for item models
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9a
  • Fixed crash when using model modifiers with mods using Puzzles Lib installed

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.21 & 1.21.1

[1.3.16-fabric-mc1.21.3] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.21 & 1.21.1

[1.3.16-fabric-mc1.21] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed crash with Sodium reading dummy sprite contents
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.21 & 1.21.1

[1.3.16-fabric-mc1.20.6] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed item models that have a parent model at the same location as the item identifier failing to load

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed broken mixin crash
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11b
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layer

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items
  • Fixed custom texture tinting not working properly for connecting textures when Sodium is installed

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Initial release of Fusion for Minecraft 1.20.5 & 1.20.6

[1.3.16-fabric-mc1.20.4] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed item models that have a parent model at the same location as the item identifier failing to load

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed broken mixin crash
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items
  • Fixed custom texture tinting not working properly for connecting textures when Sodium is installed

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Added match_state connection predicate
  • Added is_face_visible connection predicate

### Fusion 1.1.0d
  • Add workaround for crash with Sodium 0.5.8

### Fusion 1.1.0c
  • Fixed Fusion's appearance API checks, so it works properly with mods like FramedBlocks

### Fusion 1.1.0b
  • Added workaround for weird Fabric API quirks when caching quads in connecting models

### Fusion 1.1.0a
  • Added ModMenu library badge
  • Fixed concurrency issue when checking connections for connecting models
  • Fixed crash with Indium

### Fusion 1.1.0
  • Added an option for resource packs to have optional Fusion integration
  • Added the option for connecting textures to override their render type
  • Added the option to specify connections per texture in connecting models
  • Added horizontal, vertical, and compact connecting texture layouts
  • Added support for Fabric's appearance API
  • Improved the performance of connecting models

### Fusion 1.0.6
  • Fixed concurrency issue when rendering connecting models

### Fusion 1.0.5
  • Initial release of Fusion for Minecraft 1.20.2

[1.3.16-fabric-mc1.20.2] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed item models that have a parent model at the same location as the item identifier failing to load

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed broken mixin crash
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed overrides folder not working for resource packs which use vanilla resource overlays
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items
  • Fixed custom texture tinting not working properly for connecting textures when Sodium is installed

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Added match_state connection predicate
  • Added is_face_visible connection predicate

### Fusion 1.1.0d
  • Add workaround for crash with Sodium 0.5.8

### Fusion 1.1.0c
  • Fixed Fusion's appearance API checks, so it works properly with mods like FramedBlocks

### Fusion 1.1.0b
  • Added workaround for weird Fabric API quirks when caching quads in connecting models

### Fusion 1.1.0a
  • Added ModMenu library badge
  • Fixed concurrency issue when checking connections for connecting models
  • Fixed crash with Indium

### Fusion 1.1.0
  • Added an option for resource packs to have optional Fusion integration
  • Added the option for connecting textures to override their render type
  • Added the option to specify connections per texture in connecting models
  • Added horizontal, vertical, and compact connecting texture layouts
  • Added support for Fabric's appearance API
  • Improved the performance of connecting models

### Fusion 1.0.6
  • Fixed concurrency issue when rendering connecting models

### Fusion 1.0.5
  • Initial release of Fusion for Minecraft 1.20.2

[1.3.16-fabric-mc1.20.1] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered
  • Fixed crash when Iris PBR texture has empty tiles resulting in a different number of sprites compared to regular texture

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Added integration with Iris to intercept normal and specular maps for Fusion textures and handle them as Fusion textures
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option
  • Fixed integration with Indium that was accidentally deleted in version 1.3.6

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed item models that have a parent model at the same location as the item identifier failing to load

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed broken mixin crash
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8a
  • Fixed texture metadata sometimes getting cleared to early

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed Fusion texture metadata cache not being cleared between resource reloads
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items
  • Fixed custom texture tinting not working properly for connecting textures when Sodium is installed

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Added match_state connection predicate
  • Added is_face_visible connection predicate

### Fusion 1.1.0c
  • Fixed Fusion's appearance API checks, so it works properly with mods like FramedBlocks

### Fusion 1.1.0b
  • Added workaround for weird Fabric API quirks when caching quads in connecting models

### Fusion 1.1.0a
  • Added ModMenu library badge
  • Fixed concurrency issue when checking connections for connecting models
  • Fixed crash with Indium

### Fusion 1.1.0
  • Added an option for resource packs to have optional Fusion integration
  • Added the option for connecting textures to override their render type
  • Added the option to specify connections per texture in connecting models
  • Added horizontal, vertical, and compact connecting texture layouts
  • Added support for Fabric's appearance API
  • Improved the performance of connecting models

### Fusion 1.0.6
  • Fixed concurrency issue when rendering connecting models

### Fusion 1.0.5a
  • Make sure parent models get resolved properly when combined with mods like DashLoader

### Fusion 1.0.5
  • Fixed VanillaModelDataBuilder setting ambient occlusion to false by default

### Fusion 1.0.4
  • Fixed concurrency issue where some texture are sometimes not loaded correctly

### Fusion 1.0.3
  • Added ModelBakingContext#getModel
  • Fixed parents for connecting models not always being resolved

### Fusion 1.0.2
  • Fixed simple connected texture sprite coordinates for the left,up,down connection

### Fusion 1.0.1
  • Fixed SpriteCreationContext sometimes returning the wrong atlas size

### Fusion 1.0.0a
  • Fusion is no longer marked as client-side only
  • Fixed versioning

### Fusion 1.0.0
  • Initial release of Fusion

[1.3.16-fabric-mc1.19.4] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed item models that have a parent model at the same location as the item identifier failing to load

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed broken mixin crash
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed broken textures when ModernFix mixin.perf.dynamic_resources is enabled
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8a
  • Fixed texture metadata sometimes getting cleared to early

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed Fusion texture metadata cache not being cleared between resource reloads
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items
  • Fixed custom texture tinting not working properly for connecting textures when Sodium is installed
  • Fixed crash with Sodium

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Added match_state connection predicate
  • Added is_face_visible connection predicate

### Fusion 1.1.0c
  • Fixed Fusion's appearance API checks, so it works properly with mods like FramedBlocks

### Fusion 1.1.0b
  • Added workaround for weird Fabric API quirks when caching quads in connecting models

### Fusion 1.1.0a
  • Added ModMenu library badge
  • Fixed concurrency issue when checking connections for connecting models
  • Fixed crash with Indium

### Fusion 1.1.0
  • Added an option for resource packs to have optional Fusion integration
  • Added the option for connecting textures to override their render type
  • Added the option to specify connections per texture in connecting models
  • Added horizontal, vertical, and compact connecting texture layouts
  • Added support for Fabric's appearance API
  • Improved the performance of connecting models

### Fusion 1.0.6
  • Fixed concurrency issue when rendering connecting models

### Fusion 1.0.5a
  • Make sure parent models get resolved properly when combined with mods like DashLoader

### Fusion 1.0.5
  • Fixed VanillaModelDataBuilder setting ambient occlusion to false by default

### Fusion 1.0.4
  • Fixed concurrency issue where some texture are sometimes not loaded correctly

### Fusion 1.0.3
  • Added ModelBakingContext#getModel
  • Fixed parents for connecting models not always being resolved

### Fusion 1.0.2
  • Fixed simple connected texture sprite coordinates for the left,up,down connection

### Fusion 1.0.1
  • Fixed SpriteCreationContext sometimes returning the wrong atlas size

### Fusion 1.0.0a
  • Fusion is no longer marked as client-side only
  • Fixed versioning

### Fusion 1.0.0
  • Initial release of Fusion

[1.3.16-fabric-mc1.19.2] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed texture dependencies for composite model not always being loaded

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items
  • Fixed custom texture tinting not working properly for connecting textures when Sodium is installed
  • Fixed crash with Sodium

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Added match_state connection predicate
  • Added is_face_visible connection predicate
  • Fixed log spam for resource packs which don't have a pack.mcmeta file

### Fusion 1.1.0c
  • Fixed Fusion's appearance API checks, so it works properly with mods like FramedBlocks

### Fusion 1.1.0b
  • Added workaround for weird Fabric API quirks when caching quads in connecting models

### Fusion 1.1.0a
  • Added ModMenu library badge
  • Fixed concurrency issue when checking connections for connecting models
  • Fixed crash with Indium

### Fusion 1.1.0
  • Added an option for resource packs to have optional Fusion integration
  • Added the option for connecting textures to override their render type
  • Added the option to specify connections per texture in connecting models
  • Added horizontal, vertical, and compact connecting texture layouts
  • Added support for Fabric's appearance API
  • Improved the performance of connecting models

### Fusion 1.0.6
  • Fixed concurrency issue when rendering connecting models

### Fusion 1.0.5
  • Fixed VanillaModelDataBuilder setting ambient occlusion to false by default

### Fusion 1.0.4
  • Fixed concurrency issue where some texture are sometimes not loaded correctly

### Fusion 1.0.3
  • Added ModelBakingContext#getModel
  • Fixed parents for connecting models not always being resolved

### Fusion 1.0.2
  • Fixed simple connected texture sprite coordinates for the left,up,down connection

### Fusion 1.0.1
  • Fixed textures not loading correctly when ModernFix is installed
  • Fixed SpriteCreationContext sometimes returning the wrong atlas size

### Fusion 1.0.0b
  • Fusion is no longer marked as client-side only
  • Fixed versioning

### Fusion 1.0.0a
  • Fixed crash with Iris

### Fusion 1.0.0
  • Initial release of Fusion

[1.3.16-fabric-mc1.18] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15b
  • Fixed error when a connecting texture is rendered without world context and an empty tile is picked

### Fusion 1.3.15a
  • Fixed animated textures using incorrect frame index when frames are not in sequential order

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Added DefaultModelTypes#BLOCK_ENTITY_MARKER
  • Fixed Fusion models with parent minecraft:builtin/entity not being marked as custom item renderer
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered

### Fusion 1.3.13
  • Added TextureType#getBlockStateRenderTypes which returns the render types that may be used by a texture
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context
  • Added workaround for Sodium's @Overwrite breaking any class extending InterpolationData

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed translucent item models being invisible when graphics is set to 'Fabulous'
  • Fixed model item transforms (display property) translations not being scaled by 1/16th
  • Fixed models sometimes failing to load with ModernFix' dynamic_resources option

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed texture dependencies for composite model not always being loaded

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed item model modifiers always using the default model's transforms
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed incorrect translucency handling for item models with translucent textures
  • Fixed any model with a cuboid parent being baked as a cuboid model
  • Fixed block model predicates being rotated incorrectly due to floating point errors

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Added workaround for Sodium breaking animated texture interpolation

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2
  • Fixed "Reference map could not be read" warning
  • Removed ModMenu 'library' tag

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed CuboidModelDataBuilder#material calling itself
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11a
  • Fixed crash when using a connecting texture and a continuous or random texture on the same model

### Fusion 1.2.11
  • Added show_breaking_overlay option to block model modifiers to not show the breaking overlay for appended models
  • Fixed crash when modded model bakeries do not contain model modifiers' target models
  • Fixed quad tinting sometimes taking tinting function from the wrong texture

### Fusion 1.2.10
  • Fixed all Fusion models loaded after any Fusion model has an error being broken

### Fusion 1.2.9
  • Fixed pieced layout when a quads' uv does not cover the entire sprite
  • Fixed connecting textures using connections for the wrong direction for rotated quads with mirrored uv in some cases

### Fusion 1.2.8
  • Added Hungarian translations (thanks to bayi!)
  • Ambient occlusion is now disabled for emissive quads
  • Fixed inverted vertical tile ordering for continuous textures
  • Fixed DefaultConnectionPredicates#isFaceVisible returning is_same_block predicate
  • Fixed NotConnectionPredicate serialization being invalid
  • Fixed crash when evaluating biome and dimension entity predicate
  • Fixed random texture seed always being 0 for bottom side
  • Fixed entity model modifiers using model for incorrect layer when targeting entities with multiple vanilla layers

### Fusion 1.2.7
  • Fixed argument validation for count and durability item predicates

### Fusion 1.2.6
  • Added data providers for block model modifiers and item model modifiers

### Fusion 1.2.5
  • Fixed emissive quads not being quite as bright as they should be

### Fusion 1.2.4
  • Fixed vertex permutations for rotated textures being wrong and hence pieced layout not looking correct when rotated

### Fusion 1.2.3
  • Added special casing for builtin/generated parent model to make it work properly
  • Added Turkish translations (thanks to RuyaSavascisi!)

### Fusion 1.2.2a
  • Fixed custom texture render types not working for items
  • Fixed custom texture tinting not working properly for connecting textures when Sodium is installed
  • Fixed crash with Sodium

### Fusion 1.2.2
  • Fixed pane_culling_fix culling being inverted, culling only quads which should not be
  • Fixed crash when mods use non-resource characters in model layer names

### Fusion 1.2.1
  • Fixed texture references overwriting model references in connecting models
  • Fixed block model modifiers with only pane_culling_fix option getting ignored

### Fusion 1.2.0
  • Added base model type
  • Allows for processing random and continuous textures
  • Base models can have multiple parent models
  • Connecting model type inherits all properties from the base model type
  • Added base texture type
  • Allows specifying emissiveness, custom render type, and custom tinting function
  • Added biome_grass, biome_foliage, and biome_water tinting functions
  • All texture types inherit properties from base texture type
  • Added block model modifiers
  • Allows overlaying additional models onto blocks
  • Added pane_culling_fix to cull the top/bottom quads of glass panes
  • Added item model modifiers
  • Allows for conditionally changing item models
  • Added count, durability, enchantment, and potion item predicates
  • Added custom entity models
  • Added entity model modifiers
  • Allows for random or conditional entity models and textures
  • Added altitude, is_baby, biome, and dimension entity predicates
  • Added a warning screen when a resource pack requires a newer Fusion version than the one installed
  • Added pieced connecting texture layout allowing bordered textures from only a few tiles
  • Added overlay connecting texture layout intended for block overlays
  • All Fusion texture types can now be animated
  • Added continuous texture type for textures which span multiple blocks
  • Added random texture type for randomly choosing from a number of variations
  • Connecting models now allow specifying a connections key similar to the texture key
  • Added match_block_in_front, match_state_in_front, and is_direction connection predicates
  • Improved error messages for match_state connection predicate
  • Drastically improved performance of connecting models
  • Added compatibility for Embeddium, Iris, ModernFix, Oculus, Rubidium, Sodium, and VintageFix
  • Removed empty space from the full connecting texture layout
  • Fixed match_state predicate not working correctly when not all block state properties are specified
  • Fixed incorrect connections for connected textures when using UV lock or texture rotations
  • Fixed specifying connections per texture in connecting models not working correctly
  • Fixed connecting model sometimes using the wrong render type
  • Fixed caching states in connecting model sometimes leading to incorrect connections

### Fusion 1.1.1
  • Added match_state connection predicate
  • Added is_face_visible connection predicate
  • Fixed log spam for resource packs which don't have a pack.mcmeta file

### Fusion 1.1.0c
  • Fixed Fusion's appearance API checks, so it works properly with mods like FramedBlocks

### Fusion 1.1.0b
  • Added workaround for weird Fabric API quirks when caching quads in connecting models

### Fusion 1.1.0a
  • Added ModMenu library badge
  • Fixed concurrency issue when checking connections for connecting models
  • Fixed crash with Indium

### Fusion 1.1.0
  • Added an option for resource packs to have optional Fusion integration
  • Added the option for connecting textures to override their render type
  • Added the option to specify connections per texture in connecting models
  • Added horizontal, vertical, and compact connecting texture layouts
  • Added support for Fabric's appearance API
  • Improved the performance of connecting models

### Fusion 1.0.6
  • Fixed concurrency issue when rendering connecting models

### Fusion 1.0.5
  • Fixed VanillaModelDataBuilder setting ambient occlusion to false by default

### Fusion 1.0.4
  • Fixed concurrency issue where some texture are sometimes not loaded correctly

### Fusion 1.0.3
  • Added ModelBakingContext#getModel
  • Fixed parents for connecting models not always being resolved

### Fusion 1.0.2
  • Fixed simple connected texture sprite coordinates for the left,up,down connection

### Fusion 1.0.1
  • Fixed textures not loading correctly when ModernFix is installed
  • Fixed SpriteCreationContext sometimes returning the wrong atlas size

### Fusion 1.0.0b
  • Fusion is no longer marked as client-side only
  • Fixed versioning

### Fusion 1.0.0a
  • Fixed crash with Iris

### Fusion 1.0.0
  • Initial release of Fusion

[1.3.16-forge-mc26.2] Fusion 1.3.16 by SuperMartijn642 on Oct 08, 2026
Download
### Fusion 1.3.16
  • Fixed calculation for rounding up size of continuous textures to power of 2 being off by 1 for items

### Fusion 1.3.15a
  • Fixed flag tracking breaking overlay rendering not being cleared, sometimes resulting in missing model parts

### Fusion 1.3.15
  • Fixed ambientocclusion, shade, and emissive model properties not always applying to texture types that have subtextures like connecting and random
  • Fixed is_biome predicate always evaluating to false for chunk geometry

### Fusion 1.3.14
  • Fixed DefaultModelTypes#ITEM_MODEL_GENERATOR not being registered

### Fusion 1.3.13
  • Fixed models without geometry being baked as missing model
  • Fixed sub-textures for random texture type receiving wrong texture data leading to a crash
  • Fixed crash when using is_face_visible connection predicate in an item model
  • Fixed pane_culling_fix option making submodels not receive world context

### Fusion 1.3.12
  • Fixed MutableQuad#chunkLayer not always overwriting flags

### Fusion 1.3.11a
  • Fixed error when baking faces with null chunk layer

### Fusion 1.3.11
  • Significantly reduced memory used by Fusion models
  • Facing and chunk render type of MutableQuads are now stored as bit flags
  • connecting textures ignore non-default tiles when predicate is always true or always false
  • connecting texture sub-texture data is now stored more compactly when some tiles are empty
  • When connecting texture has no sub-texture, its tiles are initialized lazily

### Fusion 1.3.10
  • Fixed model item transforms (display property) translations not being scaled by 1/16th

### Fusion 1.3.9
  • Fixed dimension block model predicate not working for chunk geometry

### Fusion 1.3.8
  • Fixed crash when using continuous texture type as a sub texture for other texture types
  • Fixed texture dependencies for composite model not always being loaded
  • Fixed crash when breaking a block targeted by a block model modifier
  • Fixed quad material cache not being invalidated when copying quad properties leading to incorrect material properties
  • Fixed Sodium preventing Fusion animated textures from animating

### Fusion 1.3.7
  • Fixed crash when breaking blocks targeted by block model modifiers due to Mixin bug

### Fusion 1.3.6
  • Added random_offset property for block model modifier model entries to overwrite hardcoded block random offsets
  • Improved randomness of random texture type
  • Significantly reduced memory footprint of MutableQuads and thus models from Fusion
  • Fixed match_state_in_front behaving as match_state
  • Fixed incorrect uv calculation when explicitly specifying frame indices for animated textures leading to it always showing the first frame
  • Fixed block model predicates being rotated incorrectly due to floating point errors
  • Fixed composite model parents not being loaded

### Fusion 1.3.5
  • Directional model predicates, i.e. match_block and match_state, are now rotated along with composite model entries
  • Replaced vanilla default uv calculation of model elements with calculation that better handles elements outside the center block space
  • Fixed deserialization of item transforms (display property) for Fusion models
  • Fixed match_block, match_state model predicates and match_block, match_state, match_block_in_front, match_state_in_front connection predicates only using the last block from the blocks array property
  • Fixed origin being offset for composite model transforms
  • Fixed composition order of composite model transforms with blockstate file transforms
  • Fixed vanilla uv-lock handling breaking for model transforms that translate or scale the model

### Fusion 1.3.4
  • Fixed threading issue with match_block and match_state block predicates potentially leading to incorrect results or crashes
  • Fixed element face 'uv' property being ignored

### Fusion 1.3.3
  • Fixed deserialization of dimension, match_block, and match_state block predicates
  • Fixed deserialization of dimension entity predicate

### Fusion 1.3.2a
  • Fixed crash when mods bake models outside the normal baking window

### Fusion 1.3.2
  • Fixed connecting texture predicate resolution for item models

### Fusion 1.3.1
  • Fixed overlay connecting texture layout producing way too many quads
  • Fixed connections property of connecting textures not working
  • Fixed base texture properties not working for connecting and random texture types
  • Fixed geometry of base models being duplicated
  • Fixed crash with quick pack mod
  • Renamed ConnectingModelData.ConnectingModelDataBuilder to ConnectingModelData.Builder
  • Fixed model materials map serialization not including '#' for references

### Fusion 1.3.0
  • Model related changes:
  • Overhauled ModelType and how models are loaded:
  • Any model with a Fusion model as parent will now be loaded as a Fusion model
  • Changes for base model type:
  • Model can now be made emissive, through emissive property
  • Shading can now be disabled, through shade property
  • Ambient occlusion can now be disabled, through ambient_occlusion property
  • Lighting in guis can now be changed, through gui_light property
  • Elements can now have light_emission, emissive, shade, ambient_occlusion properties
  • Element faces can now have light_emission, emissive, shade, ambient_occlusion properties
  • Overhauled block and item model modifiers:
  • Added priority property
  • Modifiers are now applied in order of priority, then file name, rather than 'random'
  • Missing targets (like modded items/blocks) can now be ignored, through ignore_missing_targets property
  • Added default_model_overwrites to allow changes the default model when item/block model predicates are met
  • Added append_models to append models when item/block model predicates are met
  • For block model modifiers, show_breaking_overlay can now be set per model entry
  • Added block model predicates:
  • Simple true, false, and, or, not types
  • match_block checks whether the block at a certain offset matches certain blocks
  • match_state checks whether the block at a certain offset matches certain blocks and state properties
  • biome checks whether the block is in a biome
  • dimension checks whether the block is in a dimension
  • altitude checks whether the block's y-position is within a range
  • Added item model predicates:
  • Simple true, false, and, or, not types
  • count checks if a stack's count is within a range
  • durability checks if a stack's durability is within a range
  • enchantment checks whether an enchantment is present has a certain level
  • match_name checks whether an item's custom name matches a string or regex
  • potion checks whether the stack has a potion type
  • Added composite model type:
  • Allows combining multiple models
  • Models can be applied conditionally based on item and block predicates
  • Models can be translated, scaled, and rotated
  • Texture related changes:
  • Overhauled TextureType and how textures are loaded:
  • Textures can now have multiple texture atlas sprites
  • Textures can now have sub-textures
  • Any model using a Fusion texture will now be loaded as a Fusion model
  • Added generic quad processing for custom texture types
  • Changes for base texture type:
  • No longer requires a base model
  • Changes for connecting texture type:
  • No longer requires a connecting model
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Added an option for a default connection predicate, through connections property
  • Changes to connection predicates:
  • Added true and false types
  • Added ignore_missing options for match_block, match_state, match_block_in_front, match_state_in_front
  • Allow specifying multiple blocks for match_block, match_state, match_block_in_front, match_state_in_front
  • Changes for random texture type:
  • Each tile is now its own sprite on the texture atlas
  • Empty tiles (completely transparent) are ignored and not stitched or processed
  • Tiles can now use a sub-texture type, through sub_texture property
  • Added randomness options position, position_facing, position_axis, through random_source property
  • Animated image layout can now be per-tile, through per_tile_animation property
  • Increased maximum rows and columns from 10 to 100
  • Changes for continuous texture type:
  • Default tile is now its own sprite on the texture atlas
  • Increased maximum rows and columns from 10 to 32
  • Changes for scrolling texture type:
  • Added 'wrap' loop type to allow the frame to wrap around the image
  • General changes:
  • Error messages are now printed in a user-friendly readable format
  • Improved clarity of error messages
  • Bug fixes:
  • Fixed handling of full layout connecting textures with a legacy square image
  • Fixed inconsistent randomness for block model modifier models
  • Fixed geometry key for block model modifiers
  • Fixed handling of generated item models
  • Fixed concurrency issue when using pane_culling_fix potentially leading to corrupted quads
  • Fixed item transforms not getting serialized for base model data
  • Fixed incorrect scaling of origin for rotation of base model data elements
  • Fixed not all vanilla model properties being serializable through cuboid model type
  • Fixed continuous textures not working correctly when rotated
  • Fixed thin edges sometimes showing around connecting, continuous, and random textures
  • Fixed sometimes broken mipmaps for Fusion textures on Minecraft 1.12
  • Fixed integration with FramedBlocks on Minecraft 1.20.1 and 1.21.1
  • Fixed inconsistent ordering of model modifiers on older Minecraft versions
  • Fixed model ordering of appended models in block model modifiers not being maintained when some models are vanilla and some are not

## Update to Minecraft 26.2

## Update to Minecraft 26.1

### Fusion 1.2.12
  • Fixed handling of connections key references in connecting models
  • Fixed texture references added through base model data builder having an extra '#'

### Fusion 1.2.11a
  • Fixed enchantment item model modifier predicate not working for enchanted books

### Fusion 1.2.11
  • Initial release of Fusion for Minecraft 1.21.11

Fusion (Connected Textures) Icon
Download Fusion (Connected Textures)
Select game version
Select platform