Skip to content

Texture Types

SuperMartijn624 edited this page Jan 8, 2025 · 4 revisions

Texture Types

Fusion adds five new texture types: base, connecting, continuous, random, and scrolling. Each will be explained in the respective section below, as well as how to use Fusion's texture types.

How to use

Similar to vanilla's animated textures, Fusion uses the .mcmeta file to specify texture types and their configuration. For example, if we have a texture file flowing_magma.png, simply create a flowing_magma.png.mcmeta. Inside the .mcmeta file, simply create a new section under the fusion key. The texture type and additional data can then be specified in the section.

{
   "fusion": {
      "type": "<texture type>",
      <configuration>
   }
}

Note

Most of Fusion's texture types can be used in combination with the vanilla animated texture data.

Base texture properties

Fusion adds some common properties which can be used by all texture types. In case you want to use the properties on their own, the base identifier can be used.
The following base properties are available:

key values default description
emissive true or false false Whether the texture should always appear to be fully bright, i.e. as if at a light level of 15
render_type opaque, cutout, translucent None Overrides the render type to the set value rather than what is hardcoded for the block
tinting biome_grass, biome_foliage, biome_water None Overrides the texture tinting to the set method rather than what is hardcoded for the block. (usually no tinting, or think blocks like grass, vines, or leaves)

Important

The emissive and render_type properties must be used in combination with the base model type. For more info on the base model type see Base Models.

The render_type property can allow the use of transparent textures on otherwise opaque blocks. Setting the render type to opaque would mean pixels in the texture will be rendered fully opaque, to cutout would mean every pixel in the texture will be either fully transparent or fully opaque, and translucent would mean pixels will be rendered with the transparency in the texture.

The tinting property can tint textures based on where a block is placed. Normally this is hardcoded per block and only certain blocks have a tinting method set. Examples would be the grass block, most foliage like leaves, vines, or grass, or water. Setting the value to biome_grass would make it use the same tinting method as the grass block, to biome_foliage the same as for foliage, and biome_water the same as water.

Here is an example of what the metadata file for a base texture could look like:

{
   "fusion": {
      "type": "base",
      "emissive": true,
      "render_type": "cutout",
      "tinting": "biome_grass"
   }
}

Connecting textures

Connecting textures are textures with a special layout which allows them to connect to other blocks when combined with the connecting model type. Fusion offers 5 connected texture layouts: simple, full, compact, horizontal, vertical.

Important

The connecting texture type must be used in combination with the connecting model type. For more info on the connecting model type see Connecting Models.

Tip

Templates for all the connecting texture layouts can be found in the Fusion Examples repository.

Simple layout

The simple layout allows textures to connect to their four direct neighbors. This is ideal for textures which aren't affected by diagonal connections.

{
   "fusion": {
      "type": "connecting",
      "layout": "simple"
   }
}
Simple connected texture example

Full layout

The full layout allows textures to connect to all eight neighboring blocks, so also diagonally. It is the most extensive layout and thus also allows for the most control over connections. Most of the other layouts can also be achieved using the full layout, however it is advisable to use a simpler layout if possible to avoid duplicate tiles.

{
   "fusion": {
      "type": "connecting",
      "layout": "full"
   }
}
Full connected texture example

Pieced layout

The pieced layout does not quite have the same capabilities as the full or simple layouts, but it remains able to create a bordered texture whilst requiring far fewer tiles. It does so by piecing together corners from multiple tiles.

{
   "fusion": {
      "type": "connecting",
      "layout": "pieced"
   }
}
Pieced connected texture example

Compact layout

The compact layout consists of only 5 tiles and is intended to give a seemingly complex connection pattern with little effort. It contains an end tile, a center tile, a vertical section, a horizontal section and a cross section.

{
   "fusion": {
      "type": "connecting",
      "layout": "compact"
   }
}
Compact connected texture example

Horizontal layout

The horizontal layout allows textures to connect just horizontally.

{
   "fusion": {
      "type": "connecting",
      "layout": "horizontal"
   }
}
Horizontal connected texture example

Vertical layout

The vertical layout allows textures to connect just vertically.

{
   "fusion": {
      "type": "connecting",
      "layout": "vertical"
   }
}
Vertical connected texture example

Overlay layout

The overlay layout is intended for block overlays and works by overlaying multiple tiles to get the correct connections.

{
   "fusion": {
      "type": "connecting",
      "layout": "overlay"
   }
}
Overlay connected texture example

Continuous textures

Continuous textures are textures which stretch over multiple blocks. This allows for patterns larger than single block.

Important

The continuous texture type must be used in combination with the base model type. For more info on the base model type see Base Models.

The continuous texture type uses the identifier continuous and has two properties:

key values default description
rows integer, >0 <=10 1 The number of rows in the image, think of it as the number of blocks the texture is wide before it repeats
columns integer, >0 <=10 1 The number of columns in the image, think of it as the number of blocks the texture is tall before it repeats

Here is an example of stone bricks texture which extends over multiple blocks.

{
   "fusion": {
      "type": "continuous",
      "rows": 2,
      "columns": 3
   }
}
Stone bricks texture over multiple blocks

In Minecraft, the example would look like this:

Stone bricks example in game

Random textures

Random textures are a type of texture which has an image consisting of multiple tiles from which one is chosen at random.

Important

The random texture type must be used in combination with the base model type. For more info on the base model type see Base Models.

The random texture type uses the identifier random and has the following properties:

key values default description
rows integer, >0 <=10 1 The number of rows of tiles in the image
columns integer, >0 <=10 1 The number of columns of tiles in the image
seed integer none The seed used to generate random numbers when picking which tile to use

The seed option can be used to force two textures to use the same or different randomness. If seed is not specified, it is left up to Fusion.

Here is an example of tuff bricks with some random variations.

{
   "fusion": {
      "type": "random",
      "rows": 2,
      "columns": 3
   }
}
Tuff bricks with random variations

In Minecraft, the example would look like this:

Tuff bricks example in game

Scrolling textures

Scrolling textures are a type of animated texture similar to vanilla's animated textures. However, instead of specifying each frame individually, the frame 'scrolls' over the texture.
The scrolling texture type uses the identifier scrolling and has the following options:

key values default description
from top_left, top_right, bottom_left, bottom_right top_left Where the frame starts
to top_left, top_right, bottom_left, bottom_right bottom_left Where the frame ends
frame_width integer, >0 16 Width of the frame
frame_height integer, >0 16 Height of the frame
frame_time integer, >0 10 Duration each frame is displayed for in ticks, 1 second = 20 ticks
loop_type reset, reverse reset Loop type, 'reset' restarts from the start position, 'reverse' displays the frames in reverse order
loop_pause integer, >=0 0 Pause duration between loops in ticks, 1 second = 20 ticks

Here is an example of the scrolling texture type used to create a conveyor belt:

{
   "fusion": {
      "type": "scrolling",
      "from": "top_left",
      "to": "bottom_left",
      "frame_time": 10,
      "frame_width": 16,
      "frame_height": 16,
      "loop_type": "reset",
      "loop_pause": 0
   }
}
Connected model example

Clone this wiki locally