Page cover

Special Item Appearance

How to customize your item appearance?

Use a different model for Inventory Icon vs Equipped/In-Hand

This is for 1.21.2+ servers & clients only

If you want to say have an item with a 2D icon in the inventory but when worn on head or held in your hand, it uses a 3D model or another 2D icon, you can do so by following the below

You need to provide an ItemModel that specifies when to show what model. Here is an example using a mymodel_icon model for the GUI and a "fallback" for everything else. This approach can be used for most other contexts, which you can find here. This is not a detailed guide on ItemModels, but you can do very complex things with them beyond this.

{
  "model": {
    "type": "select",
    "property": "display_context",
    "cases": [
      {
        "when": "gui",
        "model": {
          "type": "model",
          "model": "namespace:mymodel_icon" // The model to display for the GUI
        }
      }
    ],
    "fallback": {
      "type": "model",
      "model": "namespace:mymodel" //The model that is used everywhere else
    }
  }
}

You can put this inside Nexo/pack/assets/namespace/items/mymodel.json .

Then you can make your NexoItem-config, which will reference this ItemModel

myitem:
  itemname: "My Item"
  Components:
    item_model: namespace:mymodel

Use a blocking json model (for shield)

myitem:
  Pack:
    model: example_shield.json #json extension is not mandatory
    blocking_model: example_shield_blocking.json #json extension is not mandatory

Use a pulling json model (for bows)

myitem:
  Pack:
    model: default/combat_bow
    pulling_models:
      - default/combat_bow_pulling_0
      - default/combat_bow_pulling_1
      - default/combat_bow_pulling_2

This also works with pulling_textures if you only have texture files

Use charged_model json model (for Crossbows)

myitem:
  Pack:
    model: default/custom_bow
    pulling_models:
      - default/custom_bow_pulling_0
      - default/custom_bow_pulling_1
      - default/custom_bow_pulling_2
    charged_model: default/custom_bow_pulling_2
    firework_model: default/custom_bow_charged #Optional

This also works with charged_texture & firework_texture if you only have texture files

Use cast_model json model (for fishing rods)

myitem:
  Pack:
    model: default/fishing_rod
    cast_model: default/fishing_rod_cast

This also works with cast_texture if you only have texture files

Use damaged_model json model (for different durability levels)

myitem:
  Pack:
    model: default/diamond_sword
    damaged_models:
      - default/diamond_sword_damaged1
      - default/diamond_sword_damaged2
      - default/diamond_sword_damaged3

This also works with damaged_textures if you only have texture files

Last updated