Bedrock Wiki
  • Discord
  • Contribute
  • bedrock.dev
  • MS Learn
Beginner's Guide
  • Guide
    • 1. Introduction
      guide
    • 2. Add-Ons Explained
    • 3. Software & Preparation
    • 4. Project Setup
    • 5. Create a Custom Item
    • 6. Create a Custom Entity
    • 7. Blockbench: Modeling, Texturing & Animating
    • 8. Adding a Loot Table, Spawn Rule & Crafting Recipe
  • Extra
    • a. Understanding JSON
    • b. Download Example Packs
    • c. Troubleshooting
      help
    • d. Advanced Manifest
    • e. Format Versions
    • f. Project Setup Android
Animation Controllers
  • Intro to Animation Controllers
    guide
  • Entity Commands
  • AFK Detector
  • Death Commands
  • Molang into Scoreboard
  • Respawn Commands
Blocks
  • General
    • Intro to Blocks
      guide
    • Block Components
    • Block Tags
    • Block States
    • Block Traits
    • Block Permutations
    • Block Events
      Scripts
    • Block Event Migration
      help
    • Blocks as Items
    • Troubleshooting Blocks
      help
  • Visuals
    • Block Culling
    • Block Models
      guide
    • Block Texture Animation
    • Block Texture Variation
    • Block Tinting
  • Tutorials
    • Applying Constant Effects
      Scripts
    • Avoiding State Limit
    • Fake Blocks
    • Ore Loot Tables
      Scripts
    • Precise Interaction
      Scripts
    • Precise Rotation
      Scripts
    • Rotatable Blocks
  • Vanilla Re-Creations
    • Custom Crops
      Scripts
    • Custom Glass
    • Custom Glazed Terracotta
    • Custom Trapdoors
      Scripts
  • Documentation
    • Block Format History
    • Block Shapes
    • Block Sounds
    • Vanilla Block Models
Commands
  • General
    • Intro to Command Blocks
    • Functions
    • Block States
    • Coordinate System
    • NBT Commands
    • Scoreboard Operations
    • Understanding Selectors
  • Commands
    • Damage
    • Execute
    • Playanimation
    • Playsound
  • On Event Systems
    • On Player First Join
    • On Player Join
    • On Player Leave
    • On Player Death
    • On Player Respawn
    • On First World Load
  • Scoreboard Systems
    • Entity Counter
    • Scoreboard Timers
    • Comparing And Retrieving Scores
  • Techniques
    • Execute Logic Gates
    • MBE - Max's Block Entity
    • FMBE - A New Way to Create Display Entities
    • Look Detection
    • Movement Detections
    • Orbital Camera
  • Useful Creations
    • Custom Crafter
    • Multiplayer Position Rearrangement
      function
Concepts
  • contents.json
  • Emojis & Symbols
  • Molang
  • Namespaces
  • Overwriting Assets
  • Raw Text
  • Shaders
  • Sounds
  • Subpacks
  • Text and Localization
  • Texture Atlases
  • textures_list.json
Documentation
  • Shared Constructs
  • Advanced Molang
  • File Types
  • Fog IDs
  • Material Configuration Description
  • Menu Categories
  • Molang Queries
  • Pack Folder Structure
  • Sound Definitions
  • Vanilla Materials
Entities
  • General
    • Intro to Entities BP
      guide
    • Intro to Entities RP
      guide
    • Troubleshooting Entities
      help
    • Entity Events
    • Entity Properties
    • NPC Dialogues
    • Render Controllers
    • Spawn Rules
  • Tutorials
    • Convert Points Between Any Space (World, Entity, Bones)
    • Creating Boats
    • Detecting Other Entities
    • Disabling Team Damage
    • Dummy Entities
    • Entity Attacks
    • Entity Holds Item
    • Entity Movement
    • Entity Timers
    • Flying Entities
    • Introduction to AOE Clouds
    • Invulnerable Entities
    • Look at Entity
    • Sleeping Entities
    • Solid Entities
    • Spawning Tamed Entities
      Scripts
    • Village Mechanic
  • Documentation
    • Dummy Components
    • Non-Mob Runtime Identifiers
    • Projectiles
    • Runtime Identifiers
    • Vanilla Usage Components
    • Vanilla Usage Spawn Rules
Items
  • General
    • Intro to Items
      guide
    • Item Components
    • Item Tags
    • Item Events
      Scripts
    • Item Event Migration
      help
    • Troubleshooting Items
      help
  • Tutorials
    • Custom Armor
    • Custom Food
      Scripts
    • Custom Pottery Sherds
    • Custom Weapons
    • Equipment-Based Commands
    • High Resolution Items
    • Spawning Items
    • Throwable Items
  • Documentation
    • Enchantments
    • Attachables
    • Item Format History
    • Numerical Item IDs
    • Vanilla Item Identifiers
    • Vanilla Usage Components
JSON UI
  • General
    • Intro to JSON UI
      guide
    • Best Practices
      guide
  • Tutorials
    • Adding HUD Elements
    • Aseprite Animations
    • Buttons and Toggles
    • Modifying Server Forms
    • Preserve Title Texts
    • String to Number
  • Documentation
    • JSON UI Documentation
Loot, Recipes & Trading
  • General
    • Trading Behavior
  • Documentation
    • Loot Tables
    • Trade Tables
    • Recipes
    • Item Functions
  • Tutorials
    • Randomized Structure Loot
Meta
  • Add-On Performance
  • Style Guide
  • Useful Links
  • Using Schemas
  • Version Control
  • Q&A
    • Blocks and Items Q&A 2024/08/30
    • Deferred Technical Preview Q&A 2024/02/23
    • GameTest Q&A 2021/08/06
    • Scripting and Editor Q&A 2023/09/22
    • World Generation Q&A 2024/11/15
NBT
  • General
    • .mcstructure
  • Tutorials
    • Experiments in Education Edition
    • Extending Structure Limits
  • NBT in Depth
    • About NBT (Named Binary Tag)
    • NBT Libraries
    • Reading NBT Example
Particles
  • General
    • Intro to Particles
      guide
  • Tutorials
    • Disabling Particles
  • Documentation
    • Vanilla Particles
Scripting
  • General
    • Intro to Scripting
    • What is Script API?
    • API Modules
  • Tutorials
    • Block Placement Prevention
    • GameTests
    • Script Core Features
    • Script Forms
    • Script Requests API
    • Simple Chat Commands
  • Documentation
    • Engine Environment
    • Script Resources
    • Script Watchdog
    • Troubleshooting JavaScript
    • TypeScript
Servers
  • Software
    • Bedrock Server Software
  • Protocols
    • Bedrock Protocol
    • NetherNet Protocol
    • RakNet Protocol
Visuals
  • General
    • Introduction to Entity Visuals
      guide
    • Bedrock Modeling
    • Custom Death Animations
    • Effects in Animations
    • Material Creations
    • Materials
    • Math-Based Animations
    • Skin Packs
  • Tutorials
    • Entity Texture Animation
    • Glowing Entity Texture
    • Hurt Animations
    • Leash Position
    • Player Geometry
    • Remove Entity Shadows
    • Retexturing Spawn Eggs
  • Ideas
    • Structure Presentation
World Generation
  • General
    • Intro to World Generation
      guide
    • Biomes
      guide
    • Feature Types
    • Jigsaw Structures
  • Tutorials
    • Block Conditions for Features
    • Generating Custom Ores
    • Generating Custom Structures
    • Generating Patches
    • Heightmap Noise
  • Documentation
    • Biome Tags

Project Setup

Project Setup
  • Introduction
  • The com.mojang Folder
    • Windows
    • Android
    • ChromeOS
    • iOS
    • Development Packs
  • Your Workspace
  • BP Manifest
    • Manifest Explained
    • UUID Explained
  • RP Manifest
  • Pack Icon
  • Language Files
  • Checking Your Work
  • Turn on Content Log
  • Creating Your Testing World
  • Overview
  • What You Have Learned
  • Your Progress So Far

Introduction ​

This page will guide you through the steps required to create your first "working" add-on and view it in game. If you're joining on android, you should follow this alternative guide:

Android guide

The com.mojang Folder ​

The com.mojang folder is a special folder where Minecraft stores data (Add-ons, Worlds, Player info...). Minecraft understands this location, and all files we access or create will be placed somewhere in this folder!

You should create a shortcut to the com.mojang folder on your Desktop or on your mobile device, so you can easily access it at any time. The exact location of the com.mojang folder will depend on your device OS.

Windows ​

On windows, the com.mojang folder is located within your app-data folder.

Tip: You can type %appdata% into the searchbar to jump directly into the C:\Users\<USERNAME>\AppData\ folder.

C:\Users\<USERNAME>\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang

Android ​

Android 11 or older: Phone > games > com.mojang

Android 12 and newer: Phone > Android > data > com.mojang.minecraftpe > files > games > com.mojang

ChromeOS ​

Before you can see the com.mojang in your files, make sure to change the File Storage Location to External in your Minecraft Settings:

  • Go to Minecraft Settings.
  • Navigate to Settings > General > Storage.
  • Change the File Storage Location to External.

After that you can access the com.mojang folder in your Android Subsystem:

My Files > Play Files > Android > data > com.mojang.minecraftpe > files > games > com.mojang

iOS ​

My iDevice > Minecraft > games > com.mojang

Development Packs ​

We will develop our add-on in development_behavior_packs and development_resource_packs. When you make changes within these folders, you can exit and re-enter a world with the packs applied, to automatically reload the content. This allows you to quickly test your add-on without reloading Minecraft.

resource_packs and behavior_packs on the other hand contain stable add-ons, including those imported via .mcpack. We can ignore these folders for now.

Your Workspace ​

TIP

In this guide, BP refers to the folder you created in development_behavior_packs ("the behavior pack"), and RP refers to the folder you created in development_resource_packs ("the resource pack")

First of all, you will need to create the proper folders in suitable locations and set up your workspace. The remainder of this guide assumes you are using VSCode. You may also follow along with other editors.

Let's create your first add-on workspace in Visual Studio Code now.

  1. Open VSCode (Visual Studio Code, the code editor)
  2. Create a folder named "your_pack_name_RP" in development_resource_packs. I'll refer to this folder as RP
  3. Create a folder "your_pack_name_BP" in development_behavior_packs. I'll refer to this folder as BP.
  4. Go to File > Add folder to workspace... and choose BP. Do the same with RP.
  5. Press File > Save Workspace as... to save the workspace file to your Desktop. Whenever you're working on your add-on, all you have to do is open the workspace by double-clicking, and you will get quick access to both BP and RP folders.

BP Manifest ​

Creating Files

In this guide, you will often be instructed to create files with specific names, placed in specific folders. If the folder doesn't exist yet, please create it!

The manifest is a file that identifies your pack to Minecraft. Every pack has one manifest. A folder with a correctly formatted manifest will show up in Minecraft, and we consider this the "minimal" pack before we can add additional content.

Manifest files are written in json. If this isn't familiar to you, you can learn more about json here.

First, create a new file in your BP folder by right-clicking on the folder and selecting New File. Call the file manifest.json. To begin, you can copy paste the following code into the file.

BP/manifest.json
json
{
    "format_version": 2,
    "header": {
        "name": "pack.name",
        "description": "pack.description",
        "uuid": "...",
        "version": [1, 0, 0],
        "min_engine_version": [1, 16, 0]
    },
    "modules": [
        {
            "type": "data",
            "uuid": "...",
            "version": [1, 0, 0]
        }
    ],
    "metadata": {
        "product_type": "addon"
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Manifest Explained ​

  • "format_version" defines what version of manifest syntax you are using. Version 2 is the most recent stable version; use it.

  • "name" is the name of your behavior pack. "description" will show up under it in-game. We are defining these files in "code form" so we can translate them later into other languages. For more information about localization, look here.

  • The "UUID" field is essential, and will be discussed in more detail below.

  • "version" defines the version of your add-on. When you import an add-on with a newer version on a device with an older version installed, the more recent version will overwrite the older one. You don't need to change the version if you have the add-on in development_*_packs folders and only use them on private worlds.

  • "min_engine_version" defines the minimum Minecraft client version that'll be able to read your add-on. The number specified here should match the version number of the game, unless you're planning for backwards compatibility with older versions.

  • In "modules", the "type" is defined to be "data". This makes your pack a Behavior Pack.

  • In "metadata", the "product_type" allows your add-on to enable achievements on your world. It must be a product type of "addon".

UUID Explained ​

A UUID (Universally Unique Identifier) identifies your pack for other programs (in this case, Minecraft) to read. It looks something like this: 5c830391-0937-44d6-9774-406de66b6984

NEVER USE THE SAME UUID TWICE. You can generate your own UUIDs here or, if you use VSCode, you can install this extension. Many other tools like bridge. generate UUIDS automatically. Every manifest file uses two different UUIDs.

To ensure that your add-on will work correctly you should generate two new UUID's which you will paste into the BP manifest.json file, at each "...". When you are finished, it should look something like this:

"uuid": "5c830391-0937-44d6-9774-406de66b6984"

RP Manifest ​

The next step is to create the manifest.json for the RP. The format for a resource-pack manifest is nearly identical to a BP manifests except that the type is resources, which marks the pack as a Resource Pack.

Copy the following code into your newly created RP/manifest.json and insert your own UUIDs.

RP/manifest.json
json
{
    "format_version": 2,
    "header": {
        "name": "pack.name",
        "description": "pack.description",
        "uuid": "...",
        "version": [1, 0, 0],
        "min_engine_version": [1, 16, 0]
    },
    "modules": [
        {
            "type": "resources",
            "uuid": "...",
            "version": [1, 0, 0]
        }
    ],
    "metadata": {
        "product_type": "addon"
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Pack Icon ​

The pack icon is an image file which identifies how your add-on will look in-game. If you have a low-resolution square image, you can use it. Otherwise, download and use this example icon:

Pack Icon
Download Image

You should place a copy of your desired image into both the RP and the BP. The image needs to be named pack_icon.png

Language Files ​

The last thing to do is setup language support for your add-on. You will need to create a language file for both the RP and the BP. You can learn more about how Minecraft handles localization here.

RP/texts/en_US.lang
lang
pack.name=Wiki Resource Pack
pack.description=A Ghostly Guide
1
2
BP/texts/en_US.lang
lang
pack.name=Wiki Behavior Pack
pack.description=A Ghostly Guide
1
2
RP/texts/languages.json
json
["en_US"]
1
BP/texts/languages.json
json
["en_US"]
1

Checking Your Work ​

If you have done everything correctly, your packs should show up in Minecraft now! If you don't see your pack, you should follow the troubleshooting guide.

Turn on Content Log ​

Content Log

Content log is the most useful tool you have for debugging your add-ons. Please do not skip this step!

Content Log is an extremely important debugging tool, which you should always have on.

Turn on both content log settings in settings > creator. This will show you any errors in your add-on when you enter a world with it applied. You can open the content log GUI in-game by pressing ctrl+h or by pressing Content Log History in the creator settings panel. Learn more about the content log here.

Creating Your Testing World ​

Now we create a world to test your new add-on!

  1. Click "Create new world";

  2. Ensure that the following settings are set.

  3. Now activate your behavior pack, and your resource pack. You can do this by selecting the packs, and clicking 'apply'.

  4. Now click 'Create'!


Overview ​

Here is how your project should look, after completing this page:

Remember that in future, we will represent com.mojang/development_behavior_packs/guide_RP/ as RP, and com.mojang/development_behavior_packs/guide_BP/ as BP.

        • 📝manifest.json
        • 🖼️pack_icon.png
          • 🈵en_US.lang
          • 📝languages.json
        • 📝manifest.json
        • 🖼️pack_icon.png
          • 🈵en_US.lang
          • 📝languages.json

What You Have Learned ​

What you have learned:

  • What the com.mojang folder is, where it is and what folders it contains
  • How to setup your workspace
  • What a manifest.json file is
  • How to use UUIDs
  • How to create an icon for your add-on
  • What a .lang file is

Your Progress So Far ​

What you have learned

Next: Custom Item

Contributors

Edit Project Setup on GitHub

Bedrock Wiki by Bedrock OSS

"Minecraft" is a trademark of Mojang AB.

Bedrock OSS, Bedrock Wiki and bedrock.dev are not affiliated in any way with Microsoft or Mojang AB.

  • Privacy Policy
  • Join our Discord
  • Learn how to Contribute
  • Visit our Repository