Skip to content

Special Item Appearance

Invisible Item

To make an invisible item with Nexo, you can use the Nexo provided ItemModel nexo:empty.
This will render nothing for that Item no matter where it is used.

Here is a basic config-example for an invisible NexoItem

invisible_item:
  Components:
    item_model: nexo:empty

You can also use this in any other plugin, assuming they allow you to specify the ItemModel of your Item.

Oversized Items in GUI (1.21.6+)

As of 1.21.6+, Mojang made changes to how items render in the GUI.
By default they are no longer allowed to go beyond their 16x16 grid, but added an option called oversized_in_gui to ItemModels to return this behaviour.
This works best when using ItemModels (ItemModels vs. CustomModelData).
In Nexo you can use this for your items by following the below example;

my_oversized_item:
  material: PAPER
  Pack:
    oversized_in_gui: true
    model: my_oversized_model
  Components:
    item_model: nexo:my_oversized_item

Info

In Nexo 1.17+ there is Pack.generation.force_oversized_in_gui which can be used to change the default state of every item if you dont want to specify it for individual items

Here we do not use CustomModelData as that would apply to all items using PAPER.
If you are not sure what an ItemModel is, think of it as the base model of an item.
By default all items using the material PAPER will use minecraft:paper.
By specifying our own ItemModel here, we are changing the base-model of our item, preventing any conflicts or issues, and Nexo can properly mark the config

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

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

Info

All the methods below support a BLANK_texture(s) as well as models if all you have is a PNG
For example for a 2D bow with different pulling-stages.

Dyeable Items

myitem:
  Pack:
    model: example
    dyeable_model: example_dyeable
    #texture: example
    #dyeable_texture: example_dyeable

Blocking Model (Shields)

myitem:
  Pack:
    model: example_shield
    blocking_model: example_shield_blocking
    #texture: example_shield
    #blocking_texture: example_shield_blocking

Pulling Models (Bows / Crossbow)

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

Charged Model (Crossbow)

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
    #texture: default/combat_bow
    #pulling_textures:
    #  - default/combat_bow_pulling_0
    #  - default/combat_bow_pulling_1
    #  - default/combat_bow_pulling_2
    #charged_texture: default/custom_bow_pulling_2
    #firework_texture: default/custom_bow_charged #Optional

Cast Model (Fishing Rods)

myitem:
  Pack:
    model: default/fishing_rod
    cast_model: default/fishing_rod_cast
    #texture: default/fishing_rod
    #cast_texture: default/fishing_rod_cast

Damaged Model (Based on durability)

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

Composite Models

myitem:
  Pack:
    model: default/diamond_sword
    composite_models:
      - default/background
      - default/item
      - default/overlay