1. Wiki
  2. /Beginner's Guide
  3. /Your first pack

Your first pack

Build the folder layout for a Bedrock behavior pack and resource pack, write both manifest.json files, link them together and add a pack icon.

In this guide you will build an empty add-on that Minecraft recognizes. It will not add anything yet, but it is the base for every item, block and mob you make later. It takes about ten minutes.

The folder layout

Create a project folder anywhere you like, for example on your desktop. Inside it, make two folders: one for the behavior pack and one for the resource pack.

My first add-on
my_first_addon/
  BP/
    manifest.json
    pack_icon.png
    items/
  RP/
    manifest.json
    pack_icon.png
    textures/
    texts/

The names BP and RP are just a habit that most creators use. Minecraft does not care what the outer folders are called. It only cares about what is inside them, and the most important file is manifest.json.

What a manifest does

Every pack needs a manifest.json in its top folder. It tells Minecraft:

  • the pack's name and description
  • a unique ID (the UUID) so the game can tell packs apart
  • the pack's version
  • what kind of pack it is (behavior or resource)
  • which other packs it needs

If the manifest is missing or broken, Minecraft will not show the pack at all.

UUIDs

A UUID is a long random ID that looks like this: 7da910dc-081d-41d2-84e6-fcd9e04cbffb. Each pack needs its own UUIDs, and no two packs in the world should ever share one.

You need four UUIDs for a BP + RP add-on:

  1. Behavior pack header
  2. Behavior pack module
  3. Resource pack header
  4. Resource pack module

To get them, search for "UUID generator" in your browser and copy four fresh ones. In VS Code, extensions for Bedrock can also generate them.

Never copy UUIDs from a tutorial

The UUIDs on this page are examples. If you copy them and someone else did too, your packs will clash and one of them will not load. Always generate your own.

The behavior pack manifest

Create BP/manifest.json and paste this, then replace the UUIDs with your own:

BP/manifest.json
{
  "format_version": 2,
  "header": {
    "name": "My First Add-on",
    "description": "My very first behavior pack",
    "uuid": "7da910dc-081d-41d2-84e6-fcd9e04cbffb",
    "version": [1, 0, 0],
    "min_engine_version": [1, 26, 50]
  },
  "modules": [
    {
      "type": "data",
      "uuid": "92b4a8c1-cbc4-4b82-85bd-e36e922d0621",
      "version": [1, 0, 0]
    }
  ],
  "dependencies": [
    {
      "uuid": "f67430fa-ef89-4f40-802d-9574599c764d",
      "version": [1, 0, 0]
    }
  ]
}

The resource pack manifest

Create RP/manifest.json. Notice that the module type is different, and its header UUID matches the one in the behavior pack's dependencies:

RP/manifest.json
{
  "format_version": 2,
  "header": {
    "name": "My First Add-on",
    "description": "My very first resource pack",
    "uuid": "f67430fa-ef89-4f40-802d-9574599c764d",
    "version": [1, 0, 0],
    "min_engine_version": [1, 26, 50]
  },
  "modules": [
    {
      "type": "resources",
      "uuid": "654e78d1-0b0d-4f13-9a3b-6336f0ceab13",
      "version": [1, 0, 0]
    }
  ]
}

Every field explained

format_version

The version of the manifest format itself. Use 2, which is what Mojang's own vanilla packs use. It is a plain number, not text in quotes.

Note

There is also a newer manifest format_version 3, where versions are written as text like "1.0.0" instead of arrays. Version 2 is still fully supported and is what this wiki uses.

Information about the pack as a whole.

  • name: shown in the pack list in game.
  • description: the small text under the name.
  • uuid: the pack's unique ID.
  • version: three numbers: major, minor, patch. Raise it when you release an update, for example from [1, 0, 0] to [1, 0, 1]. Minecraft uses this to know a pack is newer.
  • min_engine_version: the oldest Minecraft version your pack is written for. This also decides how the game reads some of your files, so set it to the version you are testing on, like [1, 26, 50].

modules

What is inside the pack. A pack needs at least one module, and each module has its own UUID.

Module typeUsed inContains
dataBehavior packItems, blocks, entities, recipes, loot tables, functions
resourcesResource packTextures, models, sounds, texts
scriptBehavior packJavaScript files using the Script API

dependencies

A list of other packs this one needs. Each entry has the uuid and version of the other pack's header.

Here, the behavior pack depends on the resource pack. That link has a nice effect: when you turn on the behavior pack in a world, Minecraft turns on the resource pack for you too. Without it, players could enable the BP alone and see items with no textures.

Tip

The dependency must point at the RP's header UUID, not its module UUID. This is one of the most common beginner mistakes.

Pack icons

Add a pack_icon.png to the top of each pack folder, next to the manifest. This is the picture shown in the pack list.

  • Make it square. 128x128 or 256x256 pixels both look good.
  • Save it as PNG.
  • You can use the same picture for both packs.

If there is no icon, the pack still works, but it shows a blank placeholder picture.

Add a language file

Names shown in game come from language files in the resource pack. Create these two files now so they are ready for later guides:

RP/texts/languages.json
["en_US"]
RP/texts/en_US.lang
pack.name=My First Add-on
pack.description=My very first add-on

Later you will add lines like item.demo:ruby.name=Ruby here.

Test that it loads

  1. Copy the BP folder into com.mojang/development_behavior_packs.
  2. Copy the RP folder into com.mojang/development_resource_packs.
  3. Open Minecraft and create a new world.
  4. In world settings, open Behavior Packs and look under Available. Your pack should be there with its icon.
  5. Activate it. The resource pack should turn on by itself, thanks to the dependency.

If the pack does not show up, check When it breaks. The most likely cause is a typo in a manifest, so read JSON in 5 minutes next.

The easy way

Writing manifests and generating UUIDs by hand is a one-time chore per project, but it is also where small typos break everything. GodCraft does this part for you: every add-on you create in the Workshop gets its own fresh UUIDs, both manifests and the dependency link between the two packs. You only fill in the details you care about in the pack settings.

Next steps

Your empty add-on works. Now give it something to do:

Beginner's Guide: Guide

We use cookies to improve your experience and analyse site traffic. Learn more