# Custom Compass Resource Pack

The model and the name of the compass can be customized using a resource pack.

## Compass Model

The client item used by the compass can be specified in its [datapack definition](./datapack-format#model).

While you may use any client item, if you only want to change your compass' background texture and its needle colors, it is recommended to use the following format, which only requires a single model for the background.

Item definition in `assets/<provided_namespace>/items/<provided_name>.json`, where the first model is the compass base and the others are the needle models:
<details>
<summary>Click to expand</summary>
```json
{
  "model": {
    "type": "minecraft:composite",
    "models": [
      {
        "type": "minecraft:model",
        "model": "omnicompass:item/biome_compass_base"
      },
      {
        "type": "minecraft:range_dispatch",
        "entries": [
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_16",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 0.0
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_17",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 0.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_18",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 1.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_19",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 2.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_20",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 3.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_21",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 4.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_22",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 5.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_23",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 6.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_24",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 7.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_25",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 8.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_26",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 9.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_27",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 10.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_28",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 11.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_29",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 12.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_30",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 13.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_31",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 14.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_00",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 15.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_01",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 16.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_02",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 17.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_03",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 18.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_04",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 19.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_05",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 20.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_06",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 21.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_07",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 22.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_08",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 23.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_09",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 24.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_10",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 25.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_11",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 26.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_12",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 27.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_13",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 28.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_14",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 29.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_15",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 30.5
          },
          {
            "model": {
              "type": "minecraft:model",
              "model": "omnicompass:compass/needle_16",
              "tints": [
                {
                  "type": "omnicompass:needle",
                  "shadow": true
                },
                {
                  "type": "omnicompass:needle"
                }
              ]
            },
            "threshold": 31.5
          }
        ],
        "property": "omnicompass:target_position",
        "scale": 32.0
      }
    ]
  }
}
```
</details>

Model for the compass base in `assets/<provided_namespace>/models/<provided_name>.json`:
```json
{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "omnicompass:item/biome_compass_base"
  }
}
```

## Needle Colors

You can apply a color tint to the compass's needle and its shadow using a [datapack](./datapack-format#needle-colors).

## Compass Translation

Each compass type requires a translation for its name, which has to be specified in `assets/<namespace>/lang/en_us.json`:

```json
"compass_type.<namespace>.<compass_name>": "Compass Name"
```