How do I make a custom block with Minecraft Addons? [closed]

How can I add an entirely new block to Minecraft with addons, like mods on Java Edition?


Solution 1:

Requirements

  • Windows 10
  • Minecraft Windows 10 Edition
  • I also recommend getting a new text editor other than notepad, I use Notepad++

Before We Begin

  • This answer assumes you know how to create a proper manifest, pack icon, and pack dependency linking.
  • A rule of thumb for naming is use only no cap a-z, _, and 0-9 where the first character is not a number.

Creating the Block File

Create a folder in your behavior pack called blocks. Then go into it. Create a .json file and call it what you want the ID for your block to be (Should use underscores _ instead of spaces, also no caps). I have made a file called beige_brick.json.

{
    "format_version":"1.16.0",
    "minecraft:block":{
        "description":{
            "identifier":"msab:beige_brick",
            "is_experimental":false,
            "register_to_creative_menu":true
        },
        "components":{
            "minecraft:destroy_time":1
        }
    }
}

Open it in your editor and paste that. What did we do?

  • "identifier":"msab:beige_brick" - I made a block with ID msab:beige_brick. The thing before the colon : is your prefix. This will be the unique prefix for everything new your addon creates. Make it whatever you want, as long as it is not minecraft:. The part after that is what our item's unique ID is. The block's ID must be the same as the file name or it will not work.
  • "minecraft:destroy_time:1" - We have a destroy time of one. In the latest full release, tools cannot affect destruction time at all. This is one of many components.

Adding & Registering a New Texture

In your resource pack, make a folder called textures. Then inside a new folder called blocks. Inside that put your PNG that you want your block to look like. Name it beige_brick (or whatever you made your ID)

  • Default Minecraft Blocks are 16x16, although you can use any square size. Go back to your textures folder and make a JSON file called terrain_textures.json. This is where we will actually register our textures. In it paste:
{
    "num_mip_levels":4,
    "padding":8,
    "resource_pack_name":"msab",
    "texture_data":{
        "msab:beige_brick":{
            "textures":"textures/blocks/beige_brick"
        }
    },
    "texture_name":"atlas.terrain"
}

All that matters here is that msab is our prefix and blocks/beige_brick is our file path. Obviously if you used a different ID/prefix, change these.

Resource Pack Texture Assignment

In your resource pack create a file called blocks.json. In it paste:

"format_version":[1,1,0],
    "msab:beige_brick":{
        "sound":"stone",
        "textures":"msab:beige_brick"
    }
}

We apply a sound and texture to our Beige Bricks. I set the sound to stone, but there are many others such as metal, and you can even add your own new sound, although I will not go over that right now. I also use the texture msab:beige_brick, which we registered before.

Language Files

Language files is how we name our item, for example, a lit pumpkin is called a Jack O' Lantern.
Make a folder called texts in your resource pack, and in that a file called en_US.lang. In that put this:

block.msab:beige_brick.name=Beige Brick

We do block.<prefix:ID>.name=<Block Name>. Pretty easy.
I also like to copy this file and have a second called en_GB for UK English.

We're Done

Try compressing and putting this into Minecraft!