Patterns in Minecraft’s “Random” Multipart Models

 

Multipart blockstates allow models to be “added together” into one block when ceratin blockstates occur. You can specify the same blockstate several times for multiple models to be “added” when one specific blockstate has a certain value.

{“multipart: [
{“apply”: {“model”: “model1”}},
{“apply”: {“model”: “model2”}}
]}

This file will always apply two models to the block no matter what. Multipart blockstates allow for several models to be supplied via an array, in this case one model will be chosen at random from the array.

“apply”: [
{“model”: “model1”},
{“model”: “model2”}
]

In this case model1 or model2 will be applied but not at the same time.

Combining both of these features together leads to some intersting behaviour.

This is a blockstate file with 16 models in each array, with 4 arrays total, the arrays are in the same order of colours and in the screenshot you can see that each tower will have the same colour for each step.
This shows us that although the blockstate file chooses a random model this array index is used each time for each array, rather than what might be expected to happen which is for a random colour for each step.

This file has 4 arrays but the 2nd, 3rd, and 4th arrays only contain 8 objects, rather than the first which contains 16.
You’ll notice that the top 3 steps are all the same colour but the bottom step is not, but it will still follow a pattern. The black bottom will have black steps on it, but so will the magenta bottom step. Magenta is the first colour missed of the 8 object arrays, so it can be seen that the array will wrap around back to the top of the array when there is less objects in one array than another, but only if one of the arrayss is a multiple of the other.

 

These screenshots show a blockstate file with arrays containg 16, 8, 4, 2 objects and 15, 5, 3 objects, you should be able to spot the patterns here. Each colour step will only appear on top of a certain number of other coloured steps, you should also notice the exact same tower being made several times in each screenshot.

This final screenshot shows weighted values, you can see although some of the values have been weighted, patterns still emerge. The weighted values are picked more often, you may notice that the link between the top two steps and the bottom two steps has no pattern, meaning that weighting the values has broken some of the predictableness of the models.
It does not matter the order of the lists for the weighted values, they will always appear together, which suggests that the weighted values are pulled out of the array and then treated differently as the array models index will match up, ie the top two steps will be the same colour as long as only the weighted values are moved around the array.

random

Although there is predictable patterns that can be made with multipart blockstates, there is ways to disable them which involves either have the arrays not be the same size or multiples of each other, alternatively giving the values in the list different weights and different weights for the other arrays as well, will produce random model selection as viewed above.

Patterns in Minecraft’s “Random” Multipart Models