Custom Player Models¶
sp614x with 2 CPMs active¶
Custom Player Models (CPM; sometimes called Special Cosmetics) is a feature that can modify player models. They are loaded on join and can be associated with a specific player.
CPMs are loaded from an online OptiFine server, but may also be specified to work with local files.
Available online CPMs can be chosen under the Cape Change menu.¶
CPMs cannot be bought and like Special capes, they are normally not available to normal donators.
Seasonal CPMs¶
Some CPMs are available to all donators during certain time periods.
Available CPMs can be chosen under the Cape Change menu. Here, the Halloween hat is available and enabled.¶
Christmas¶
Uses Santa Hat.
Date applied |
Date removed |
|---|---|
2020/12/25 |
2021/01/01 |
2021/12/24 |
2022/01/01 |
2022/12/23 |
2023/01/01 |
2023/12/23 |
2024/01/01 |
2024/12/24 |
2025/01/01 |
Halloween¶
Uses Jingy Hat.
Date applied |
Date removed |
|---|---|
2021/10/30 |
2021/11/07 |
2022/10/26 |
2022/11/07 |
2023/10/30 |
2023/11/08 |
2024/10/29 |
2024/11/07 |
List of online models¶
This is a list of all CPMs available from the OptiFine server.
Santa Hat¶
A santa hat.
ID:
hat_santaModel file: https://optifine.net/items/hat_santa/model.cfg
Texture file: https://optifine.net/items/hat_santa/users/sp614x.png
{
"type" : "PlayerItem",
"texture": "optifine:textures/features/hat_santa.png",
"textureSize": [64, 32],
"models": [
{
"part": "santa_hat",
"id": "santa_hat",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "xy",
"translate": [0, 0, 0],
"rotate": [0, -90, 0],
"submodels": [
{
"id": "sant_hat_top2",
"invertAxis": "xy",
"translate": [0.53024, 10.61642, 0],
"rotate": [0, 0, -60],
"boxes": [
{"coordinates": [-0.5, 2, -1.5, 3, 3, 3], "textureOffset": [0, 0]}
]
},
{
"id": "sant_hat_top1",
"invertAxis": "xy",
"translate": [1.03024, 9.75039, 0],
"rotate": [0, 0, -50],
"boxes": [
{"coordinates": [-3, -1, -3, 6, 4, 6], "textureOffset": [0, 0]}
]
},
{
"id": "santa_hat_top0",
"invertAxis": "xy",
"translate": [0.2892, 8.72718, 0],
"rotate": [0, 0, -20],
"boxes": [
{"coordinates": [-4, -1, -4, 9, 3, 8], "textureOffset": [0, 0]}
]
},
{
"id": "sant_hat_top3",
"invertAxis": "xy",
"translate": [5.78024, 12.11642, 0],
"rotate": [0, 0, 15],
"boxes": [
{"coordinates": [-0.90192, -1.83013, -2, 4, 4, 4], "textureOffset": [0, 16]}
]
},
{
"id": "santa_hat_base",
"invertAxis": "xy",
"translate": [0.2892, 8.72718, 0],
"rotate": [0, 0, -15],
"boxes": [
{"coordinates": [-4.5, -3, -4.5, 10, 4, 9], "textureOffset": [0, 16], "sizeAdd": 0.1}
]
}
]
}
]
}
MrCheeze¶
Rings at the top and bottom of the head. It resembles the rings at the top of Lego blocks; MrCheeze's cape is a reference to Legos, as well as his skin and profile. The ID is the username of an OptiFine Discord moderator.
ID:
mrcheezeModel file: https://optifine.net/items/mrcheeze/model.cfg
Texture file: Uses player's skin
{
"type": "PlayerItem",
"usePlayerTexture": true,
"textureSize": [
64,
64
],
"models": [
{
"id": "tail",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "z",
"translate": [
0,
0,
0
],
"submodels": [
{
"part": "tail",
"id": "tail",
"invertAxis": "z",
"translate": [
0,
3.5,
-7.2
],
"rotate": [
-57,
0,
0
],
"boxes": [
{
"coordinates": [
-0.5,
-3,
-7.2,
1,
7,
1
],
"textureOffset": [
60,
20
]
}
]
},
{
"part": "tail2",
"id": "tail2",
"invertAxis": "z",
"translate": [
0,
-8.8,
-16.9
],
"rotate": [
-102.5,
0,
0
],
"boxes": [
{
"coordinates": [
-0.5,
4.5,
-22,
1,
6,
1
],
"textureOffset": [
60,
20
]
}
]
}
]
}
]
}
Jiingy Hat¶
A ushanka, a Russian hat. The ID is the username of an OptiFine Discord moderator.
ID:
jiingyModel file: https://optifine.net/items/jiingy/model.cfg
Texture file: https://optifine.net/items/jiingy/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
62,
23
],
"models": [
{
"id": "Main",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "xy",
"translate": [
0,
0,
0
],
"rotate": [
5,
0,
0
],
"boxes": [
{
"coordinates": [
-5,
4.5,
-6,
10,
5,
5
],
"textureOffset": [
0,
0
]
},
{
"coordinates": [
-4.5,
3,
-2.5,
9,
6,
7
],
"textureOffset": [
0,
10
],
"sizeAdd": "0.1"
},
{
"coordinates": [
3.5,
0,
-1.5,
1,
3,
4
],
"textureOffset": [
30,
1
],
"sizeAdd": "0.1"
},
{
"coordinates": [
-4.5,
0,
-1.5,
1,
3,
4
],
"textureOffset": [
30,
1
],
"sizeAdd": "0.1"
}
]
}
]
}
Jiingy Scarf¶
A blue and white scarf. The ID is the username of an OptiFine Discord moderator.
ID:
jiingy_scarfModel file: https://optifine.net/items/jiingy_scarf/model.cfg
Texture file: https://optifine.net/items/jiingy_scarf/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
62,
23
],
"models": [
{
"id": "Main",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "xy",
"translate": [
0,
0,
0
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"coordinates": [
-5,
0,
-2.5,
10,
1,
5
],
"textureOffset": [
32,
10
]
},
{
"coordinates": [
-4,
-1,
-2.5,
8,
1,
5
],
"textureOffset": [
32,
17
]
},
{
"coordinates": [
1,
-6,
-2.5,
2,
5,
1
],
"textureOffset": [
41,
2
]
},
{
"coordinates": [
1,
-7,
-2.5,
1,
1,
1
],
"textureOffset": [
48,
6
]
}
]
}
]
}
Kai Ears¶
Cat ears. Likely for KaiAF, an OptiFine Discord moderator.
ID:
kai_earsModel file: https://optifine.net/items/kai_ears/model.cfg
Texture file: Uses player's skin
{
"type": "PlayerItem",
"usePlayerTexture": true,
"textureSize": [
64,
64
],
"models": [
{
"id": "ears",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "z",
"translate": [
0,
0,
0
],
"submodels": [
{
"part": "leftEar",
"id": "leftEar",
"invertAxis": "xy",
"translate": [
0,
0,
0
],
"rotate": [
0,
-180,
0
],
"boxes": [
{
"coordinates": [
2,
7.7,
-2,
1,
2,
3
],
"textureOffset": [
0,
0
]
}
]
},
{
"part": "rightEar",
"id": "rightEar",
"invertAxis": "xy",
"translate": [
0,
0,
0
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"coordinates": [
2,
7.7,
-1,
1,
2,
3
],
"textureOffset": [
0,
0
]
}
]
}
]
}
]
}
Kai Tail¶
A cat's tail. Likely for KaiAF, an OptiFine Discord moderator.
ID:
kai_tailModel file: https://optifine.net/items/kai_tail/model.cfg
Texture file: Uses player's skin
{
"type": "PlayerItem",
"usePlayerTexture": true,
"textureSize": [
64,
64
],
"models": [
{
"id": "tail",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "z",
"translate": [
0,
0,
0
],
"submodels": [
{
"part": "tail",
"id": "tail",
"invertAxis": "z",
"translate": [
0,
3.5,
-7.2
],
"rotate": [
-57,
0,
0
],
"boxes": [
{
"coordinates": [
-0.5,
-3,
-7.2,
1,
7,
1
],
"textureOffset": [
60,
20
]
}
]
},
{
"part": "tail2",
"id": "tail2",
"invertAxis": "z",
"translate": [
0,
-8.8,
-16.9
],
"rotate": [
-102.5,
0,
0
],
"boxes": [
{
"coordinates": [
-0.5,
4.5,
-22,
1,
6,
1
],
"textureOffset": [
60,
20
]
}
]
}
]
}
]
}
Back Sword¶
An old Iron Sword at the player's back.
ID:
back_swordModel file: https://optifine.net/items/back_sword/model.cfg
Texture file: https://optifine.net/items/back_sword/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "yz",
"translate": [
-7,
2,
-4
],
"rotate": [
0,
0,
-90
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Back Pickaxe¶
An old Iron Pickaxe at the player's back.
ID:
back_pickaxeModel file: https://optifine.net/items/back_pickaxe/model.cfg
Texture file: https://optifine.net/items/back_pickaxe/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "yz",
"mirrorTexture": "u",
"translate": [
-7,
-14,
-4
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Back Axe¶
An old Iron Axe at the player's back.
ID:
back_axeModel file: https://optifine.net/items/back_axe/model.cfg
Texture file: https://optifine.net/items/back_axe/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "yz",
"mirrorTexture": "uv",
"translate": [
-8,
1,
-4
],
"rotate": [
0,
0,
-90
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Back Quiver¶
A quiver at the player's back. Quivers are a remnant of Minecraft; the texture was removed in 1.9 snapshot 15w31a.
ID:
back_quiverModel file: https://optifine.net/items/back_quiver/model.cfg
Texture file: https://optifine.net/items/back_quiver/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "yz",
"mirrorTexture": "u",
"translate": [
-8,
-13,
-4
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Back Bow¶
This cosmetic has an old-textured Bow at the player's back.
ID:
back_bowModel file: https://optifine.net/items/back_bow/model.cfg
Texture file: https://optifine.net/items/back_bow/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "yz",
"mirrorTexture": "uv",
"translate": [
-8,
2,
-4
],
"rotate": [
0,
0,
-90
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Back Carrot on a Stick¶
An old Carrot on a Stick at the player's back.
ID:
back_carrot_stickModel file: https://optifine.net/items/back_carrot_stick/model.cfg
Texture file: https://optifine.net/items/back_carrot_stick/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "yz",
"mirrorTexture": "u",
"translate": [
-7,
-14,
-4
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Back Fishing Rod¶
An old Fishing Rod at the player's back.
ID:
back_fishing_rodModel file: https://optifine.net/items/back_fishing_rod/model.cfg
Texture file: https://optifine.net/items/back_fishing_rod/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "yz",
"mirrorTexture": "u",
"translate": [
-7,
-14,
-4
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Body Boobs¶
ID:
body_boobsModel file: https://optifine.net/items/body_boobs/model.cfg
Texture file: Uses player's skin
{
"type": "PlayerItem",
"usePlayerTexture": true,
"textureSize": [
64,
32
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "z",
"translate": [
-4,
3,
1.9
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"textureOffset": [
20,
23
],
"coordinates": [
0,
0,
0,
8,
3,
1
]
}
]
}
]
}
Body Sword¶
An old Iron Sword at the player's front.
ID:
body_swordModel file: https://optifine.net/items/body_sword/model.cfg
Texture file: https://optifine.net/items/body_sword/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "yz",
"translate": [
-1,
-6,
-14
],
"rotate": [
90,
-45,
90
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Body Hearth¶
A heart at the player's chest. Hearth is likely to be a typo, intended to be heart.
ID:
body_hearthModel file: https://optifine.net/items/body_hearth/model.cfg
Texture file: https://optifine.net/items/body_hearth/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Main",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "z",
"translate": [
-3,
3,
2.1
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
7,
6,
1
]
}
]
}
]
}
Arrow Hat¶
An arrow through the player's head.
ID:
hat_arrowModel file: https://optifine.net/items/hat_arrow/model.cfg
Texture file: https://optifine.net/items/hat_arrow/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "SideA",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
0,
5,
0
],
"rotate": [
-45,
0,
0
],
"scale": 0.75,
"boxes": [
{
"comment": "Tail",
"textureOffset": [
0,
5
],
"coordinates": [
-13,
-2.5,
0,
8,
5,
0
]
},
{
"comment": "Head",
"textureOffset": [
0,
0
],
"coordinates": [
5,
-2.5,
0,
8,
5,
0
]
}
]
},
{
"id": "SideB",
"baseId": "SideA",
"rotate": [
45,
0,
0
]
},
{
"id": "Back",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
0,
5,
0
],
"rotate": [
45,
0,
0
],
"scale": 0.75,
"boxes": [
{
"comment": "Back (tex coord V is 5 instead of 10!)",
"textureOffset": [
0,
5
],
"coordinates": [
12,
-2.5,
-2.5,
0,
5,
5
]
}
]
}
]
}
Axe Hat¶
An axe through the player's head.
ID:
hat_axeModel file: https://optifine.net/items/hat_axe/model.cfg
Texture file: https://optifine.net/items/hat_axe/users/sp614x.png
Error
Missing render
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"mirrorTexture": "",
"translate": [
-1,
-1,
-16
],
"rotate": [
90,
0,
90
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Bee Antenna¶
A bee antenna coming out of the east side of the player's head.
ID:
hat_beeModel file: https://optifine.net/items/hat_bee/model.cfg
Texture file: https://optifine.net/items/hat_bee/users/sp614x.png
{
"type": "PlayerItem",
"texture": "optifine:textures/features/hat_bee.png",
"textureSize": [
16,
16
],
"models": [
{
"id": "RightAntenna",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
2,
8,
0
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"comment": "V",
"textureOffset": [
0,
0
],
"coordinates": [
-1,
0,
0,
1,
4,
1
]
},
{
"comment": "H",
"textureOffset": [
0,
5
],
"coordinates": [
0,
4,
0,
2,
1,
1
]
},
{
"comment": "Dot",
"textureOffset": [
4,
0
],
"coordinates": [
2,
3,
0,
1,
1,
1
]
},
{
"textureOffset": [
4,
0
],
"coordinates": [
3,
4,
0,
1,
1,
1
]
},
{
"textureOffset": [
4,
0
],
"coordinates": [
4,
3,
0,
1,
1,
1
]
},
{
"textureOffset": [
4,
0
],
"coordinates": [
3,
2,
0,
1,
1,
1
]
},
{
"comment": "DotCenter",
"textureOffset": [
4,
2
],
"coordinates": [
3,
3,
0,
1,
1,
1
]
}
]
},
{
"id": "LeftAntenna",
"baseId": "RightAntenna",
"invertAxis": "xyz",
"mirrorTexture": "u"
}
]
}
Jingy Hat¶
A modified Witch Hat, used for Halloween.
The name Jingy is misspelled; it is supposed to be Jiingy. The ID is a reference to Jiingy, an OptiFine Discord admin.
ID:
hat_jingyModel file: https://optifine.net/items/hat_jingy/model.cfg
Texture file: https://optifine.net/items/hat_jingy/users/sp614x.png
{
"type": "PlayerItem",
"texture": "optifine:textures/features/hat_jingy.png",
"textureSize": [
96,
26
],
"models": [
{
"part": "witch_hat",
"type": "ModelBox",
"attachTo": "head",
"id": "witch_hat",
"invertAxis": "xy",
"translate": [
-2.372,
-23.5,
-8.5
],
"rotate": [
90,
72.5,
89.5
],
"submodels": [
{
"id": "Tip",
"invertAxis": "xy",
"translate": [
-2.3828,
40.3367,
2.1
],
"rotate": [
0,
-90,
50
],
"boxes": [
{
"coordinates": [
-1,
-1.5,
-1,
2,
3,
2
],
"textureOffset": [
75,
21
]
}
]
},
{
"id": "Top",
"invertAxis": "xy",
"translate": [
-0.2993,
37.9964,
2.1
],
"rotate": [
0,
-90,
37.5
],
"boxes": [
{
"coordinates": [
-2,
-2,
-2,
4,
4,
4
],
"textureOffset": [
58,
18
]
}
]
},
{
"id": "Middle",
"invertAxis": "xy",
"translate": [
0.5898,
35.475,
2.1
],
"rotate": [
0,
-90,
14.5
],
"boxes": [
{
"coordinates": [
-2.8999,
-2.3873,
-3,
6,
4,
6
],
"textureOffset": [
33,
16
]
}
]
},
{
"id": "Bottom2",
"invertAxis": "xy",
"translate": [
0.9,
33.05,
2.1
],
"rotate": [
0,
-90,
-3
],
"boxes": [
{
"coordinates": [
-4,
-1,
-4,
8,
2,
8
],
"textureOffset": [
0,
16
],
"sizeAdd": 0.1
}
]
},
{
"id": "Bottom1",
"invertAxis": "xy",
"translate": [
0.775,
31.4594,
2.1
],
"rotate": [
0,
-90,
-7.5
],
"boxes": [
{
"coordinates": [
-4.9348,
-1,
-5,
10,
2,
10
],
"textureOffset": [
56,
3
]
}
]
},
{
"id": "Base",
"invertAxis": "xy",
"translate": [
0.775,
30.9636,
2.1
],
"rotate": [
0,
0,
-7.5
],
"boxes": [
{
"coordinates": [
-7.00004,
-0.5136,
-7,
14,
0,
14
],
"textureOffset": [
0,
0
]
}
]
}
]
}
]
}
Link Hat¶
A prototype of the Santa Hat.
ID:
hat_linkModel file: https://optifine.net/items/hat_link/model.cfg
Texture file: https://optifine.net/items/hat_link/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
64,
64
],
"models": [
{
"id": "Level1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "y",
"translate": [
-5,
7,
-5
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
10,
3,
10
],
"sizeAdd": 0.1
}
],
"submodel": {
"comment": "Level2",
"invertAxis": "y",
"translate": [
1,
3,
1
],
"rotate": [
-20,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
13
],
"coordinates": [
0,
0,
0,
8,
4,
8
]
}
],
"submodel": {
"comment": "Level3",
"invertAxis": "y",
"translate": [
1,
4,
1
],
"rotate": [
-25,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
25
],
"coordinates": [
0,
0,
0,
6,
4,
6
]
}
],
"submodel": {
"comment": "Level4",
"invertAxis": "y",
"translate": [
0.5,
4,
0.5
],
"rotate": [
-40,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
35
],
"coordinates": [
0,
0,
0,
5,
4,
5
]
}
],
"submodel": {
"comment": "Level5",
"invertAxis": "y",
"translate": [
0.5,
4,
0.5
],
"rotate": [
-40,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
44
],
"coordinates": [
0,
0,
0,
4,
4,
4
]
}
],
"submodel": {
"comment": "Level6",
"invertAxis": "y",
"translate": [
0.5,
4,
0.5
],
"rotate": [
-35,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
52
],
"coordinates": [
0,
0,
0,
3,
5,
3
]
}
],
"submodel": {
"comment": "Level7",
"invertAxis": "y",
"translate": [
0.5,
5,
0.5
],
"rotate": [
-15,
0,
0
],
"boxes": [
{
"textureOffset": [
32,
13
],
"coordinates": [
0,
0,
0,
2,
5,
2
]
}
],
"submodels": [
{
"comment": "Level8",
"invertAxis": "y",
"translate": [
0.5,
5,
0.5
],
"rotate": [
-3,
0,
0
],
"boxes": [
{
"textureOffset": [
40,
0
],
"coordinates": [
0,
0,
0,
1,
4,
1
]
}
]
}
]
}
}
}
}
}
}
}
]
}
Pickaxe Hat¶
An old Iron Pickaxe through the player's head.
ID:
hat_pickaxeModel file: https://optifine.net/items/hat_pickaxe/model.cfg
Texture file: https://optifine.net/items/hat_pickaxe/users/sp614x.png
Error
Missing render
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
0,
1,
-14
],
"rotate": [
0,
-90,
0
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Reddit Hat¶
Similar to hat_bee, except that the antenna is more centered, and the yellow dot is white.
It is intended to look like Snoo's (the alien-like mascot of Reddit) single antenna.
ID:
hat_redditModel file: https://optifine.net/items/hat_reddit/model.cfg
Texture file: https://optifine.net/items/hat_reddit/users/sp614x.png
{
"type": "PlayerItem",
"texture": "optifine:textures/features/hat_reddit.png",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
0,
8,
0
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"comment": "V",
"textureOffset": [
0,
0
],
"coordinates": [
-1,
0,
0,
1,
4,
1
]
},
{
"comment": "H",
"textureOffset": [
0,
5
],
"coordinates": [
0,
4,
0,
2,
1,
1
]
},
{
"comment": "Dot",
"textureOffset": [
4,
0
],
"coordinates": [
2,
3,
0,
1,
1,
1
]
},
{
"textureOffset": [
4,
0
],
"coordinates": [
3,
4,
0,
1,
1,
1
]
},
{
"textureOffset": [
4,
0
],
"coordinates": [
4,
3,
0,
1,
1,
1
]
},
{
"textureOffset": [
4,
0
],
"coordinates": [
3,
2,
0,
1,
1,
1
]
},
{
"comment": "DotCenter",
"textureOffset": [
4,
2
],
"coordinates": [
3,
3,
0,
1,
1,
1
]
}
]
}
]
}
Reindeer Antlers¶
Two reindeer antlers from the top of the player's head.
ID:
hat_reindeerModel file: https://optifine.net/items/hat_reindeer/model.cfg
Texture file: https://optifine.net/items/hat_reindeer/users/sp614x.png
Error
Missing render
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
-8,
6,
0
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
6,
1
]
}
]
}
]
}
Shovel Hat¶
An old Iron Shovel in the player's head.
ID:
hat_shovelModel file: https://optifine.net/items/hat_shovel/model.cfg
Texture file: https://optifine.net/items/hat_shovel/users/sp614x.png
Error
Missing render
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"mirrorTexture": "",
"translate": [
-1,
-3,
-15
],
"rotate": [
90,
0,
90
],
"sprites": [
{
"comment": "Axe",
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
}
]
}
Witch Hat¶
This cosmetic looks like the Vanilla Witch's hat. It is not the same as hat_jingy.
ID:
hat_witchModel file: https://optifine.net/items/hat_witch/model.cfg
Texture file: https://optifine.net/items/hat_witch/users/sp614x.png
{
"type": "PlayerItem",
"texture": "optifine:textures/features/hat_witch.png",
"textureSize": [
64,
64
],
"models": [
{
"id": "Level1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
0,
7,
0
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
0
],
"coordinates": [
-5,
0,
-5,
10,
2,
10
],
"sizeAdd": 0.1
}
]
},
{
"id": "Level2",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
0,
8.75,
0
],
"rotate": [
-3,
0,
-1.5
],
"boxes": [
{
"textureOffset": [
0,
12
],
"coordinates": [
-3.5,
0,
-3.5,
7,
4,
7
]
}
]
},
{
"id": "Level3",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
0,
12.5,
0
],
"rotate": [
-9,
0,
-4.5
],
"boxes": [
{
"textureOffset": [
0,
23
],
"coordinates": [
-2,
0,
-2,
4,
4,
4
]
}
]
},
{
"id": "Level4",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
0,
16.25,
0
],
"rotate": [
-21,
0,
-10.5
],
"boxes": [
{
"textureOffset": [
0,
31
],
"coordinates": [
-0.25,
0,
-1,
1,
2,
1
],
"sizeAdd": 0.25
}
]
}
]
}
Nose Up¶
A nose, raised up.
ID:
head_nose_upModel file: https://optifine.net/items/head_nose_up/model.cfg
Texture file: Uses player's skin
{
"type": "PlayerItem",
"usePlayerTexture": true,
"textureSize": [
64,
32
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
-1,
3,
4
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"textureOffset": [
11,
13
],
"coordinates": [
0,
0,
0,
2,
1,
1
]
}
]
}
]
}
Nose Down¶
A nose, lowered down.
ID:
head_nose_upModel file: https://optifine.net/items/head_nose_down/model.cfg
Texture file: Uses player's skin
{
"type": "PlayerItem",
"usePlayerTexture": true,
"textureSize": [
64,
32
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
-1,
2,
4
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"textureOffset": [
11,
13
],
"coordinates": [
0,
0,
0,
2,
1,
1
]
}
]
}
]
}
Villager Nose¶
A Villager's nose.
ID:
head_nose_villagerModel file: https://optifine.net/items/head_nose_villager/model.cfg
Texture file: https://optifine.net/items/head_nose_villager/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Level 1",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"translate": [
-1,
-1,
4
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
2,
4,
2
]
}
]
}
]
}
Mouse Ears¶
An mouse's ears in the player's head.
ID:
ears_mouseModel file: https://optifine.net/items/ears_mouse/model.cfg
Texture file: https://optifine.net/items/ears_mouse/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
32,
32
],
"models": [
{
"id": "Main",
"type": "ModelBox",
"attachTo": "head",
"invertAxis": "yz",
"mirrorTexture": "",
"translate": [
0,
0,
0
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"textureOffset": [
0,
0
],
"coordinates": [
2,
6,
0,
4,
4,
1
]
}
]
},
{
"id": "Second",
"type": "ModelBox",
"baseId": "Main",
"invertAxis": "xyz",
"mirrorTexture": "u"
}
]
}
Angel Wings¶
An angel's wings.
ID:
wings_angelModel file: https://optifine.net/items/wings_angel/model.cfg
Texture file: https://optifine.net/items/wings_angel/users/sp614x.png
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "Main",
"type": "ModelBox",
"attachTo": "body",
"invertAxis": "",
"translate": [
1,
0,
3
],
"rotate": [
0,
0,
0
],
"sprites": [
{
"textureOffset": [
0,
0
],
"coordinates": [
0,
0,
0,
16,
16,
1
]
}
]
},
{
"id": "Other",
"baseId": "Main",
"attachTo": "body",
"invertAxis": "x",
"mirrorTexture": "u"
}
]
}
Wolverine Hand¶
Long "claws" coming out of the player's hand.
ID:
hand_wolverineModel file: https://optifine.net/items/hand_wolverine/model.cfg
Texture file: https://optifine.net/items/hand_wolverine/users/sp614x.png
Error
Missing render
{
"type": "PlayerItem",
"textureSize": [
16,
16
],
"models": [
{
"id": "LeftHand",
"type": "ModelBox",
"attachTo": "leftArm",
"translate": [
0,
6.5,
0
],
"rotate": [
0,
0,
0
],
"boxes": [
{
"comment": "1",
"textureOffset": [
0,
0
],
"coordinates": [
2.4,
0,
-2,
1,
9,
1
],
"sizeAdd": -0.3
},
{
"comment": "2",
"textureOffset": [
0,
0
],
"coordinates": [
2.4,
0,
-0.5,
1,
9,
1
],
"sizeAdd": -0.3
},
{
"comment": "3",
"textureOffset": [
0,
0
],
"coordinates": [
2.4,
0,
1,
1,
9,
1
],
"sizeAdd": -0.3
}
]
},
{
"id": "RightHand",
"baseId": "LeftHand",
"attachTo": "rightArm",
"invertAxis": "x"
}
]
}
Technical details¶
After trying to load a player's cape, OptiFine will also check base + /users/USERNAME.cfg,
where USERNAME is the player's case-corrected username.
The term "base" refers to how OptiFine is loading the CPM, and thus where it's looking. CPMs may be loaded from 2 places:
Online
Important
Here, base is the URL
http://s.optifine.netBy default, OptiFine will load CPMs through the OptiFine website if local CPMs are not enabled. OptiFine will use the URL
http://s.optifine.netas the 'base' for file locations and model references.Locally
Important
Here, base is the file path
.minecraft/playermodelsIf enabled, OptiFine will load CPMs through files locally stored on your computer. Instead of querying a website, it will use your filesystem as the 'base' for file locations and model references.
Local CPMs are not enabled by default. To enable local CPMs:
Set
-Dplayer.models.local=truein JVM Arguments.Create a
playermodels/folder in your.minecraftfolder. Or, if you are using MultiMC, your instance's folder.
Warning
When local CPMs are enabled, online CPMs will not load.
If the path is to a valid JSON file, OptiFine will process it.
For each object in the root "items" array, OptiFine will load the model referenced in "type".
Models are obtained from base + /items/TYPE/model.cfg, where TYPE is the value of key "type".
Next, if the model does not use the player's skin and does not specify a texture,
OptiFine will load that texture from base + items/TYPE/users/USERNAME.png.
If a texture cannot be loaded, red wool replaces it.
Warning
Models with "usePlayerTexture": true and "textureSize": [64, 32] will not load correctly, as they depend on old 64 x 32 player skin sizes.
In summary, this structure is:
BASE/ (URL or local folder)
users/
USERNAME.cfg (what models a player has)
items/
MODEL/
model.cfg (the model)
users/
USERNAME.cfg (the model's texture for this player)
Limitations¶
CPMs have some limitations that may make them unsuitable for certain needs:
(local only) They cannot be in resource packs.
(local only) You can only target specific players by username.
They require OptiFine, and (local only) specific JVM arguments.
They are client-side, and (local only) other players will not see your own CPMs.
They do not support animations, as in Animation.
External links¶
Warning
These resources are not related to OptiDocs, but may provide some help.