Skip to content

Instantly share code, notes, and snippets.

@MulverineX
Last active December 12, 2018 16:47
Show Gist options
  • Save MulverineX/4de913fa8a3a930ad21df56afc5d3be4 to your computer and use it in GitHub Desktop.
Save MulverineX/4de913fa8a3a930ad21df56afc5d3be4 to your computer and use it in GitHub Desktop.
mcmisceo Minecraft Java Pack Format

A universal pack format.

pack.zip
 --- data/
 --- assets/
 --- pack.json

pack.json

{
    "name": "(datapack_name)", // format: a-z0-9-_
    "display": "(Datapack Name)", // format: string -- OPTIONAL
    "description": "(Description, of pack!)", // format: string
    "data-format": 2, // format: integer -- OPTIONAL
    "assets-format": 4, // format: integer -- OPTIONAL
    "logo": "(https://imageurl.com/path/image.png)", // format: direct url string to png -- OPTIONAL
    "version": "(x.x.x)", // format: 'version'
    "dependencies": [ // format: component array -- OPTIONAL
        {
            "author": "(user or org)", // format: github user/org name
            "repo": "(repository)", // format: github repository name
            "version": "(x.x.x)", // format: 'version'
            "internal": { // format: component -- OPTIONAL
                "order": 1, // format: integer -- OPTIONAL
                "merge-type": "(type)" // format: 'merge_type' -- OPTIONAL
            },
            "disabled": false, // format: boolean -- OPTIONAL
            "user_option": false // format: boolean -- OPTIONAL
        }
    ]
}

data-format: data (functions, advancements, loot tables, etc) mcmeta format

asset-format: assets` (textures, models, translations, etc) mcmeta format

version: x=integer|latest|depender. lastest will select the latest released version of that place. depender will select the version the parent (depender) pack is in that place. Adding -all to latest or depender will make the whole version string be that dependencies

=user_option: when true is basically telling the site that when the user is installing the pack to ask if they'd like to change the state of the dependency (it being disabled or not)

=internal: when defined (even just "internal": {}) content will be merged with depender

==order: determines merge order for current stack (internal/not internal), depender defaults to 0

==merge-type: defines merge type, defaults to replace. options: replace, smart-replace (uses git like merging (automatic; can mess up)), no-replace (only new files are copied)

=disable: Disables pack

=user_option: Tells enviroment/installer that it can give the user a choice to change the disable status

Example:

{
    "id": "mechanization",
    "title": "Mechanization",
    "description": "Datapack aimed at recreating popular tech mods like IC2 and Thermal Expansion, feature set ranging from an extensive power system to custom ore generation to plasma guns",
    "logo": "https://i.imgur.com/bccpfPv.png",
    "version": "2.0.6",
    "dependancies": [
        {
            "repo": "ImCoolYeah/Mechanization-Resources:32x",
            "internal": {
                "order": 1,
                "merge-type": "replace"
            },
            "disable": true,
            "user_option": true,
            "version": "$parent.$latest.$latest"
            
        },
        {
            "repo": "ImCoolYeah105/Mechanization-Resources",
            "internal": {
                "order": 2,
                "merge-type": "replace"
            },
            "version": "$parent.$latest.$latest"
        },
        {
            "source": "Ensconcer/ensconcer-modules",
            "version": "$latest-all"
        }
    ],
    "data-format": 2,
    "assets-format": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment