Optifine:
https://optifine.net/downloads
pack.mcmeta:
{
"pack": {
"pack_format": 49,
"supported_formats": [49, 999],
"description": "My custom texture pack"
}
}
texture_name.json:
{
"parent": "item/handheld",
"textures": {
"layer0": "item/texture_name"
}
}
item_name.json (for 1 custom texture):
{
"model": {
"type": "condition",
"property": "has_component",
"component": "custom_name",
"on_true": {
"type": "select",
"property": "component",
"component": "custom_name",
"cases": [
{
"when": "Texture Name",
"model": {
"type": "model",
"model": "item/texture_name"
}
}
],
"fallback": {
"type": "model",
"model": "item/item_name"
}
},
"on_false": {
"type": "model",
"model": "item/item_name"
}
}
}
item_name.json (for 2+ custom texture):
{
"model": {
"type": "condition",
"property": "has_component",
"component": "custom_name",
"on_true": {
"type": "select",
"property": "component",
"component": "custom_name",
"cases": [
{
"when": "Texture Name",
"model": {
"type": "model",
"model": "item/texture_name"
}
},
{
"when": "Texture Name",
"model": {
"type": "model",
"model": "item/texture_name"
}
}
],
"fallback": {
"type": "model",
"model": "item/item_name"
}
},
"on_false": {
"type": "model",
"model": "item/item_name"
}
}
}
Anytime the code says texture_name that is equivalent to golden_scythe as shown in my example. Texture Name is equivalent to Golden Scythe and item_name is equivalent to netherite_hoe.
Again I will answer any comments if you need troubleshooting.