Note: This tutorial is intended to be used with Minecraft Bedrock edition. If you have Minecraft Java, you can get Minecraft Bedrock for free by following the instructions here.

If you already worked through our previous post, “How to Edit Minecraft Textures,” you know that it’s possible to edit the appearance of existing blocks in Minecraft (If you haven’t yet worked through that post, be sure to do so before reading this guide, or you will be lost!)

However, simply editing textures in Minecraft presents a bit of a problem - in the case of the golden bricks we presented in the previous post, for example, if you replace the default brick texture with the golden brick texture, it will replace all bricks in your Minecraft world, and you will lose access to the original bricks. What if you wanted to have access to both the original bricks and the golden bricks?

To solve this problem, instead of editing the texture of an existing block, it may be a good idea to create an entirely new block instead! Read on to learn how to add these custom blocks to Minecraft.

Want to learn how to incorporate more advanced blocks such as redstone, pistons, and observer blocks to build holiday lights, automatic doors, and even flying machines inside Minecraft? Join our live online Minecraft Redstone Engineering class, designed by experts from Google, Stanford, and MIT.

How to Create Custom Minecraft Blocks

In this example, we will be creating a brand new block - the rainbow cobblestone block. Follow the steps closely to learn how to implement a new custom block in Minecraft!

1. Open My_RESOURCE_Pack

In the previous tutorial, we created a folder inside the com.mojang folder called My_RESOURCE_Pack. Navigate to and open this My_RESOURCE_Pack folder. (If you do not yet have this folder, work through the “How to Edit Minecraft Textures” post before continuing).

2. Create a Text Document

Create a text document


Within My_RESOURCE_Pack, right click, mouse over New, and click Text Document. Name the new text document blocks.json, ensuring that you delete the .txt at the end.

Press Yes on the warning that appears.

3. Open blocks.json

Right click on blocks.json, click Open With, click more Apps, and click Notepad. The file should open up with the Notepad app.

4. Edit blocks.json

blocks.json will contain information about the custom block we are creating, including the images we will use on each surface of the block and what sound will be made when the block is placed. Copy and paste the following code into the open blocks.json file and save and close the file.

{

"format_version": "1.16.0",

"helloworld:rainbowcobble": {

"textures": {

"up": "rainbowcobble",

"down": "rainbowcobble",

"side": "rainbowcobble"

},

"sound":"stone"

}

}

5. Create terrain_texture.json

Terrain_texture.json will contain additional information about the images to be used on the block. Open the Textures folder inside My_RESOURCE_Pack. As before, create a new text document called terrain_texture.json. Paste in the code below, and then save and close the file.

{

"resource_pack_name": "My_BEHAVIOR_Pack",

"texture_name": "atlas.terrain",

"padding": 8,

"num_mip_levels": 4,

"texture_data": {

"rainbowcobble": {

"textures": "textures/blocks/rainbowcobble"

}

}

}

6. Add the texture file

In our code, we have been referencing a rainbowcobble image to be used on our custom block. Now, it is time to add that file! We have included a rainbow cobble image below for you to use; right click on the image, click “save as,” and save the image in My_RESOURCE_Pack/textures/blocks.

Download here:

7. Set Up Block Behavior

We have finished coding the visual components of the block, but now we need to work on the behavioral components, such as how much light the block emits, or whether or not it can catch fire.

Navigate to com.mojang, open development_behavior_packs, and make a folder called My_BEHAVIOR_Pack. Open this new folder.

Inside My_BEHAVIOR_Pack, create a new text file called manifest.json

Paste the following code into manifest.json. Leave the file open for the next step.

{

"format_version": 2,

"header": {

"description": "My Add-On!",

"name": "My Behavior Pack",

"uuid":"",

"version": [1, 0, 0],

"min_engine_version": [1, 16, 0]

},

"modules":

[

{

"description": "My First Add-On!",

"type": "data",

"uuid": "",

"version": [1, 0, 0]

}

],

"dependencies": [

{

"uuid":"UUID from the header section of manifest.json in My_RESOURCE_Pack",

"version":[1,0,0]

}

]

}

8. Establish UUIDs

As in the previous tutorial, use UUID Generator to generate two unique UUIDs and place them in the first two UUID fields in manifest.json (ensuring you are placing the UUID between the existing quotation marks). The third UUID field in this document is a bit special, so pay close attention!

Leave manifest.json open and navigate to com.mojang -> development_resource_packs -> My_RESOURCE_Pack. Open the manifest.json file located here and copy the first UUID located in the header portion of this file. Close the file and navigate back to the original manifest.json file we had opened (the manifest.json located inside your behavior pack folder). Delete “UUID from the header section of manifest.json in My_RESOURCE_Pack” and paste the copied UUID into the third and final UUID slot in this file between the quotation marks.

When you have finished, the manifest.json file located in My_BEHAVIOR_Pack should look like the image above, with two different UUIDs in the first two fields and the UUID in the third field being the same as the UUID from the header section of the manifest.json located in My_RESOURCE_Pack. By using the same UUIDs on each of these files, we are linking them together.

9. Define Block Characteristics

Inside My_BEHAVIOR_Pack, create a folder called blocks. Open this new folder and, inside, create a new text file called rainbowcobble.json. Open rainbowcobble.json and paste in the following code:

{

"format_version": "1.19.20",

"minecraft:block": {

"description": {

"identifier": "helloworld:rainbowcobble",

"is_experimental": false,

"register_to_creative_menu": true

},

"components": {

"minecraft:destructible_by_explosion": {

"explosion_resistance": 0

},

"minecraft:friction": 0.4,

"minecraft:flammable": {

"catch_chance_modifier": 5,

"destroy_chance_modifier": 20

},

"minecraft:light_emission": 8

}

}

}

Here, we are setting the characteristics of our new block. We have defined how likely it is that this block can be destroyed by an explosion, how quickly a player can walk over the block (the friction field), and how flammable the block is. The light_emission field ranges from 1-15, with 1 emitting no light and 15 emitting the most light. To make our rainbow cobblestone block a bit more interesting, we have set the glow value to 8, but you can change it as you see fit. Once you are satisfied with the characteristics of the block, save and close rainbowcobble.json.

10. Name the Block

We have finished coding what the block looks like and how it behaves. The last step is to name the block.

Navigate to My_RESOURCE_Pack and create a new folder called texts. Inside texts, create a new text file called en_US.lang

Open en_US.lang (you may need to right click, press Open With, and press Notepad) and paste in the following code:

tile.helloworld:rainbowcobble.name=Rainbow Cobblestone

Save and close the file. Now, inside Minecraft, the block will be referred to as Rainbow Cobblestone.

11. Set Up a Minecraft World

Set up a Minecraft world

Our new block is finally ready for use! Open Minecraft and create a new world (or, alternatively, edit the settings of an existing world). Under Add-Ons, click Resource Packs, click MY PACKS, click My Resource Pack, and click Activate.

Similarly, under Add-Ons, click Behavior Packs, click MY PACKS, click My Behavior Pack, and click Activate.

Finally, set the game mode to creative and create the world.

12. Use Your New Block

Use your custom Minecraft block

Since we are the ones who created this new rainbow cobblestone block, there is no way to find it naturally in the Minecraft world. Instead, we will have to use a command to give it to ourselves. Inside the new Minecraft world, press t to open the chat, and paste in the following command:

/give @p helloworld:rainbowcobble

Tada! If you have followed the steps correctly, you should find our original rainbow cobblestone block in your inventory. Now, in addition to being able to build with ordinary cobblestone, you can also construct things with this new, custom block. And, as an added bonus, it glows!

What Else Can I Do? Editable Minecraft Block Characteristics


As we mentioned before, there are many different characteristics of blocks that you can control. Take a look at rainbowcobble.json inside My_BEHAVIOR_Pack. Try modifying the following numbers to further customize your block:

Explosion_resistance: The higher this number, the less likely it is that your block will be destroyed by an explosion. For reference, the explosion resistance of obsidian is 1200.

Minecraft:friction: The higher this number, the slower a player is able to walk on a block, while the lower the number, the faster the player is able to walk. Values range from 0.0 to 0.9. For reference, ice has a friction value of .02, while soul sand has a friction value of .9.

Catch_chance_modifier: The higher this number, the more likely the block is to catch fire when surrounding blocks are on fire. For reference, the catch chance modifier of wood planks is 5.

Destroy_chance_modifier: The higher this number, the more likely it is that a block will be destroyed when it catches on fire. If the value is 0, the block cannot be destroyed by fire. For reference, the destroy chance modifier of wood planks is 20.

Light_emission: As mentioned before, the light emission value can range from 0-15. Blocks with 0 light emission will produce no light, while blocks with 15 light emission will produce the maximum amount of light. For example, fire and lava have a light emission value of 15.

In addition to these block characteristics we have already included in rainbowcobble.json, there are many, many more. For example, you can control how easily a mob can breathe when stuck inside a block, how much light is able to pass through the block, or whether or not the block can be destroyed by mining. Check out this website for a full list of block characteristics that you can edit on your own custom block. And explore lots of original blocks for ideas.

Discover custom Minecraft block makers to use

In addition to creating custom textures using an image editing program such as Paint, there are also various websites that you can use to edit blocks and also find custom block textures created by others.

One such website is Nova Skin. In the search bar, search for the block you wish to edit (“diamond block”, for example). Click on the block, edit it as you wish, and press save. Click save as resource pack template and open the downloaded folder. You will find your custom texture within assets -> minecraft -> textures -> blocks. Ensure the file has the right naming convention, move it to your blocks folder, and you’re all set!

Get started making custom Minecraft Blocks

If you have made it this far, congratulations! Creating custom Minecraft blocks is not an easy feat, and you should be proud of yourself for bettering your understanding of the game and of computers by working through this guide. While you’re enjoying your new custom Minecraft block, be sure to check out our other guides, such as how to make a Minecraft skin.

For live expert guidance making cool ideas to come to life in Minecraft, join our Minecraft Redstone Engineering class, designed by experts from Google, Stanford, and MIT. Or get started with our free Minecraft coding class. Thank you for reading, and happy crafting!

Written by Matt Schofield, an educator and avid coder. After studying Spanish at the University of Pennsylvania, Matt began teaching English as a second language to elementary students in Baltimore. In addition to his full-time teaching position, Matt enjoys teaching computer science in the evenings and weekends with Create & Learn.