MC Toolkit

Guides / Troubleshooting

A Bedrock addon is a zip, and the manifest is why it fails

Most rejected .mcaddon imports are a valid zip with one wrong header line, and the error message never names the field that broke it.

An .mcaddon is a zip archive with a different extension, and the game rejects it for reasons that have nothing to do with the zip. The usual culprit is manifest.json — a small file with a header UUID and a module UUID that must be distinct, and a format_version that is not the game version you are targeting.

Two UUIDs, never the same one

A manifest carries a header and a modules array. Each needs its own uuid, and reusing one across both is the single most common rejection:

{
  "format_version": 2,
  "header": {
    "name": "My Pack",
    "description": "Example",
    "uuid": "aaaaaaaa-0000-0000-0000-000000000000",
    "version": [1, 0, 0],
    "min_engine_version": [1, 21, 0]
  },
  "modules": [
    {
      "type": "data",
      "uuid": "bbbbbbbb-0000-0000-0000-000000000001",
      "version": [1, 0, 0]
    }
  ]
}

UUIDs are 128-bit values written as 32 hex digits in five hyphenated groups. Any generator is fine; a duplicate is not. version and min_engine_version are three-integer arrays, not strings — "1.0.0" is refused.

Java has no manifest at all

This is the split that trips people moving between editions. A Java resource pack ships a pack.mcmeta declaring the formats it supports (min_format and max_format on current versions). Bedrock ships manifest.json with UUIDs and a module list. Neither file is read by the other edition, and a pack cannot be ported by renaming the archive.

Check before you import

Unzip the archive and look at the top level. A pack nested one folder deep — MyPack/manifest.json instead of manifest.json — imports as nothing at all, with no error. The manifest must sit at the root of each pack, beside the folders it describes.

Block models are a separate format

A Java block-model JSON is not a Bedrock geometry file, and the two do not interchange. A Java model is usually just a parent plus a textures map — an elements list of cuboids is only needed for a custom shape — while Bedrock describes shapes in its own minecraft:geometry format. Both measure 16 units to a block, which is why a model can look right in one edition and import as nothing in the other.

Registry names are not interchangeable

Bedrock and Java disagree on identifiers for the same content. A pack that references a Java name for an enchantment, effect or biome will load and then quietly do nothing, because the name resolves to no entry. The registries themselves differ in size between editions, so a pack authored against one edition's list cannot be assumed complete in the other.

Validate the manifest, check the archive layout and generate a block model in the Bedrock & Pack Tools.

Bedrock & Pack Tools →

More guides

Browse all →