Repository navigation
Creating a custom pack
This is a full documentation of the custom pack format. This example creates the testPackV1, but with a different namespace. Instead of advancedclothing, this uses tutorial to make it clear, what is mod and what is your pack. When an element is not loaded correctly or not loaded at all, try looking in to the game logs and look for Failed to load... and read the message after.
You need knowledge of json, resourcepack creation and the tools for that.
Here you can see the full file structure required for a clothing element.
First of all, the element are divided into 3+ json files and at least one png.
<packname>\assets\<namespace>\clothing.json
{
"clothing": [
"tutorial:clothing/dress_1.json",
"tutorial:clothing/dress_2.json",
"tutorial:clothing/dress_3.json",
"tutorial:clothing/dress_4.json"
]
}
In this file, you register all clothing elements with the clothing directory and .json extension
<packname>\assets\<namespace>\clothing\<element_name>.json
{
"name": "clothing.dress.dress_1",
"type": "tutorial:dress",
"slim_model": "turorial:models/clothing/dress/player_model_slim.json",
"modifiers": {
"second_layer": {
"head": {
"scale": [0.98, 0.98, 0.98]
},
"body": {
"scale": [0.98, 0.98, 0.98]
},
"left_arm": {
"scale": [0.98, 0.98, 0.98]
},
"right_arm": {
"scale": [0.98, 0.98, 0.98]
},
"left_leg": {
"scale": [0.98, 0.98, 0.98]
},
"right_leg": {
"scale": [0.98, 0.98, 0.98]
},
"lboob": {
"scale": [0.98, 0.98, 0.98]
},
"rboob": {
"scale": [0.98, 0.98, 0.98]
}
}
},
"textures": [
{
"id": "#0",
"location": "tutorial:textures/clothing/dress/slim_dress_1.png",
"debug": "tutorial:textures/clothing/dress/alex.png",
"width": 64,
"height": 64
}
]
}
The
namefield contains the translation string for easy localization.
The
typefield contains the clothing type, heretutorial:dressit can be anything the follows that format<namespace>:<type>. It also requires localization, the format is alwaysadvancedclothing.type.<namespace>.<type>.
The
modelandslim_modelfields contain the different model locations<namespace>:models/clothing/<model_file>.jsonfor each player model respectively. (e.g. Steve model and Alex(slim) model, usefull for gloves, shirts or similar) You can leave one out and the other will applied on both slim and non slim players.
The
texturesfield is an array containing json objects:
id- the texture id defined in the model filelocation- the texture location:<namespace>:textures/clothing/<texture>.pngwidth- the texture pixel widthheight- the texture pixel heightdebug- optional - a debug texture with the same format as above, this texture is used when the optiondebugis enabled.
The
modifiersfield currently contains only ansecond_layerobject to modifyscale,offsetandvisible.scaleandoffsetare arrays that contain 3 values for x, y, z.visibleis a boolean to toggle the visibility. The second layer options arehead,body,left_arm,right_arm,left_leg,right_leg,lboobandrboob. Thelboobandrboobparts are parts of the Female Gender Mod by Wildfire, celeste and pupnewfster.
<packname>\assets\<namespace>\models\clothing\<element_name>.json
{
"anchors": [
{
"anchor": "minecraft:head",
"offset": [-8, 0, -8],
"elements": [
{
"name": "Head",
"from": [4, 0, 4],
"to": [12, 8, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]},
"faces": {
"north": {"uv": [2, 2, 4, 4], "texture": "#0"},
"east": {"uv": [0, 2, 2, 4], "texture": "#0"},
"south": {"uv": [6, 2, 8, 4], "texture": "#0"},
"west": {"uv": [4, 2, 6, 4], "texture": "#0"},
"up": {"uv": [4, 2, 2, 0], "texture": "#0"},
"down": {"uv": [6, 0, 4, 2], "texture": "#0"}
}
},
{
"name": "Hat Layer",
"from": [3.1, -0.1, 3.1],
"to": [12.1, 8.1, 12.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]},
"faces": {
"north": {"uv": [10, 2, 12, 4], "texture": "#0"},
"east": {"uv": [8, 2, 10, 4], "texture": "#0"},
"south": {"uv": [14, 2, 16, 4], "texture": "#0"},
"west": {"uv": [12, 2, 14, 4], "texture": "#0"},
"up": {"uv": [12, 2, 10, 0], "texture": "#0"},
"down": {"uv": [14, 0, 12, 2], "texture": "#0"}
}
}
]
}
]
}
The
anchorsfield is an array that contains anchor objects. The anchor objects are formatted as follows:The
anchorobject contains one of the following anchor stringsminecraft:head,minecraft:body,minecraft:left_arm,minecraft:right_arm,minecraft:left_leg,minecraft:right_leg,wildfire_gender:lboobandwildfire_gender:rboobto anchor the elements for easy animation on the player model.The
offsetfield contains an array with the x, y, z offset in the model space of the elements.An array with the elements part of the 1.21.11+ vanilla model format. Supports rotation of both 1.21.11+ and 1.21.1 formats.