mojira.dev
MC-302593

Unable to load overlays due to inconsistent pack format validation

In this scenario, we are trying to make a datapack that will load in both 1.21.5 and 1.21.9. However, due to some changes unimportant to this report, this datapack needs a single overlay to load properly in 1.21.9. The datapack/pack.mcmeta should validate without issue nor errors in both 1.21.5 and 1.21.9.

pack.mcmeta version 1 (with formats):

{
    "pack": {
        "supported_formats": [
            71,
            88
        ],
        "pack_format": 71,
        "min_format": 71,
        "max_format": 88,
        "description": "hi mcc"
    },
    "overlays": {
        "entries": [
            {
                "formats": {
                    "min_inclusive": 88,
                    "max_inclusive": 88
                },
                "directory": "1-21-9-overlay",
                "min_format": 88,
                "max_format": 88
            }
        ]
    }
}

In 1.21.5: Datapack validates just fine as expected

In 1.21.9: Datapack does not validate as expected, and gives the following error:

Couldn't load file overlays metadata: Overlay "1-21-9-overlay" key formats is deprecated starting from pack format 82. Remove formats from your pack.mcmeta.

Okay, let’s remove formats then…

pack.mcmeta version 2 (without formats):

{
    "pack": {
        "supported_formats": [
            71,
            88
        ],
        "pack_format": 71,
        "min_format": 71,
        "max_format": 88,
        "description": "test"
    },
    "overlays": {
        "entries": [
            {
                "directory": "1-21-9-overlay",
                "min_format": 88,
                "max_format": 88
            }
        ]
    }
}

In 1.21.5: Datapack validates just fine, however gives an error in console as it cannot understand the overlay entry without formats:

Couldn't load overlays metadata: DataResult.Error['No key formats in MapLike[{"directory":"1-21-9-overlay","min_format":88,"max_format":88}]': class_8617[overlays=[]]]

In 1.21.9: Datapack validates just fine

Summary

The first setup is what should work - both the old formatssystem and the new min_format/max_format systems are defined. However, the game refuses to load the overlay in 1.21.9 due to formats being deprecated, even though it is needed for the overlay to be recognized properly in older versions.

Some extra things to note:

  • It doesn’t matter if formats is defined as a single number (88), a list ([88, 88]), or as an object ({"min_inclusive": 88, "max_inclusive": 88}) - the results are the same.

  • This issue only happens in the scenario where a single overlay is present for pack version 88. If there’s another overlay that applies to older pack versions (say, 61 through 88, then the datapack with the first pack.mcmeta setup will validate fine as expected. See below for an example:

    ...
    {
        "formats": [
            80,
            88
        ],
        "min_format": 80,
        "max_format": 88,
        "directory": "1-21-6-overlay"
    },
    {
        "formats": 88,
        "min_format": 88,
        "max_format": 88,
        "directory": "1-21-9-overlay"
    }
    ...

Comments 0

No comments.

catter1

(Unassigned)

Confirmed

Platform

Normal

Data Packs

1.21.9, 1.21.10 Release Candidate 1, 1.21.10

Retrieved