Creating Block Models

beginner

easy

PLEASE READ

This page will be part of a rewrite to accomodate for the removal of the Holiday Creator Feature experimental toggle. Expect this page to be rewritten or removed when this happens.

Although custom blocks are unable to make use of vanilla block shapes, we can create our own models which follow a similar format to entity models. This tutorial will walk you through the process of creating a custom block model for a "paper bag" using Blockbench. You should learn the main features of Minecraft geometry tailored towards creating custom blocks from this tutorial.

NOTE: Custom block models must be within the model size limits.

Model Setup

Open Blockbench and create a new Bedrock Block project.

New project panel with Bedrock Block selected

Now you can give your model an identifier! Your file name can be decided here, or changed later.

The UV mode and texture size should remain unchanged.

NAMESPACES

Model identifiers are not namespaced and cannot contain colons. Colons were previously used for model inheritance and are invalid in modern geometry formats.

Adding Cubes

Despite not necessarily being perfect cube shapes, elements in your model are called cubes. All cubes must be contained within bones, which act as groups.

First, let's create a root bone for our model from the outliner by clicking on Add Group. Bones can be renamed by pressing F2.

The "paper bag" model will need two cubes: one for the handle, and one for the main bag. These can be added by selecting your root bone and clicking Add Cube.

Cubes can be moved, resized and rotated from the top toolbar. Below are the two cubes my "paper_bag" model will use.

Removing Faces

Some of the faces of our cubes might not need to be visible. In my example, the top face of the paper_bag should be removed so that you can see inside.

To remove a face, click on it in the preview and remove its UV.

Additionally, only the north and south faces of the handle should be visible. You can select multiple faces by holding Ctrl while clicking on the face names in the UV panel.

Previewing Textures

TIP

Textures can be created in Blockbench by clicking Create Texture and selecting Blank.

The "paper_bag" model has multiple pre-made textures, listed below:

  • textures/blocks/paper_bag.png



  • textures/blocks/paper_bag_bottom_fold.png



  • textures/blocks/paper_bag_side_gusset.png

These can be imported into Blockbench and then dragged onto each appropriate block face, although they likely won't look quite right...

Rearranging UVs

To get textures into the right positions, you may need to reposition/resize your faces' UV mapping. This can be done by selecting the affected face and using the UV panel.


Changing Material Instances

Applying custom material instance names can be used to easily define how certain faces are rendered.

They can be edited by right-clicking on a cube and opening Edit Material Instances

For the "paper_bag" model, the east and west faces should have their own texture. We can indicate this by giving them a material instance.

Applying Geometry & Textures

Once exported from File > Export > Export Bedrock Geometry into your RP/models/blocks folder, you can reference a model in your block JSON.

Then, textures can be applied by material instances through their RP/textures/terrian_texture.json shortname. In this example, the paper_bag shouldn't block light, so its light dampening is set to 0.

BP/blocks/paper_bag.jsonCopy
json
{
  "format_version": "1.20.60",
  "minecraft:block": {
    "description": {
      "identifier": "wiki:paper_bag",
      "menu_category": {
        "category": "items"
      }
    },
    "components": {
      // Apply your model by referencing its identifier
      "minecraft:geometry": "geometry.paper_bag",
      // Apply textures and other rendering configuration
      "minecraft:material_instances": {
        "*": {
          "texture": "paper_bag",
          "render_method": "alpha_test" // Disable backface culling and allow transparency
        },
        "down": {
          "texture": "paper_bag_bottom_fold",
          "render_method": "alpha_test" // Must be the same in all instances
        },
        // Custom instance name used in model
        "side_gusset": {
          "texture": "paper_bag_side_gusset",
          "render_method": "alpha_test" // Must be the same in all instances
        }
      },
      // Prevent shadows
      "minecraft:light_dampening": 0
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

Contributors

QuazChick