Skip to content

Creating Cosmetics without Additional Plugins

This is a guide to creating cosmetics in the traditional way, without using other plugins.

Hat

yaml
# Example YAML configuration for creating a hat.
cosmetics:
  mexican_hat:
    permission: 'cosmetics.mexican_hat' # permission to use the hat
    item:
      display: '&bMexican Hat'
      material: LEATHER_HORSE_ARMOR # item representing the hat
      lore:
        - ''
        - '&6Very Mexican!'
      unbreakable: true # item is unbreakable
      glow: false # no glow effect
      hide-attributes: true # hides item attributes
      modeldata: 10005 # model data for the hat
    colored: true # the hat can be colored
    type: HAT # cosmetic type: hat
    overlaps: true # if this option is enabled, you can wear a helmet and a hat at the same time.

Backpack

Here is how a regular backpack is created:

  • Cosmetic file:
yaml
# Example YAML configuration for creating a regular backpack.
cosmetics:
  creeper_backpack:
    permission: 'cosmetics.creeper_backpack' # permission to use the backpack
    item:
      display: '&bCreeper Backpack'
      material: LEATHER_HORSE_ARMOR
      lore:
        - ''
        - '&aSupport the creepers!'
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10003 # model data for the backpack that everyone will see.
    colored: true # the backpack can be colored
    type: BAG # cosmetic type: backpack
    distance: 100 # the distance at which players can see the backpack.
  • BlockBench:
ModelEngine
Edit Mode - Check Position
Display mode - Check Y Position
Display Mode - Check Y Position

And here is how a first-person backpack is created:

  • Cosmetic file:
yaml
# Example YAML configuration for creating a first-person backpack.
cosmetics:
  creeper_backpack:
    permission: 'cosmetics.creeper_backpack'
    item:
      display: '&bCreeper Backpack'
      material: LEATHER_HORSE_ARMOR
      lore:
        - ''
        - '&aSupport the creepers!'
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10003 # model data for the backpack that everyone will see.
      for-me: 10031 # If this option is set, this item or model data will be displayed for the player using it, while others will see the backpack with model 10003. Remember, this option can use either a number (modeldata) or an ID (itemsadder/nexo).
    colored: true
    type: BAG
    distance: 100 # the distance at which players can see the backpack.
    height: 3 # this is the height at which the backpack item will be set for the player themselves.
  • BlockBench file:
Edit Mode - Check Position
Edit Mode - Check Position
Display Mode - Position
Display Mode - Position

Finally, there is one last option for the backpack:

yaml
    space: 30 # if the player's view direction exceeds this number, the backpack will disappear, and if not, it will be visible again (only affects the player wearing the backpack, for others the backpack will remain in place). If you do not want the backpack to disappear, remove this parameter or set it to 0.
Here it does not yet exceed the space set for it.
Here it does not yet exceed the number set for it.
Here the space is already exceeded, so the backpack will be invisible only to the player wearing it; as soon as they look up again and do not exceed the number, it will return.
Here the number is already exceeded, so the backpack will be invisible only to the player wearing it; as soon as they raise their head again, it will return.

Off Hand

Creating a cosmetic for the off-hand is as simple as creating a hat. Here is an example:

yaml
# Example YAML configuration for creating an off-hand cosmetic.
cosmetics:
  magic_off_hand:
    permission: 'cosmetics.magic_offhand' # permission to use the off-hand cosmetic
    item:
      display: '&bMagic Wand'
      material: LEATHER_HORSE_ARMOR # item for the off-hand
      lore:
        - ''
        - '&6Very magical!'
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10005 # model data for the off-hand
    colored: true # the cosmetic can be colored
    type: WALKING_STICK # cosmetic type
    overlaps: true # If this option is enabled, you can use an item in your off-hand and the off-hand cosmetic at the same time.

Balloon

Balloons are a bit complex, but not as much as backpacks. Here is an example:

  • Cosmetic file:
yaml
# Example YAML configuration for creating a balloon without third-party plugins.
cosmetics:
  balloon:
    permission: 'cosmetics.balloon' # permission to use the balloon
    item:
      display: '&bBalloon'
      material: LEATHER_HORSE_ARMOR # item representing the balloon
      lore:
        - ''
        - '&aThis balloon will float in the sky!'
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10000 # model data for the balloon
    colored: true # the balloon can be colored
    type: BALLOON # cosmetic type
    space: 1 # here you can increase/decrease the balloon's height
    big-head: false # This option changes the position of the balloon item from the head to the right hand.
    distance: 100 # the distance at which players can see the cosmetic.
    invisible-leash: false # If this option is active, the balloon's string will not be visible.
    instant-follow: true # The balloon will follow you faster and almost instantly.
    rotation: # If you are not going to use this, you can remove the option
      enabled: false # choose if this balloon can rotate.
      type: RIGHT # RIGHT, UP, ALL (crazy rotation).
  • BlockBench:
Display mode - Transition Y Position
Display Mode - Transition Y

Now let's create a balloon with ModelEngine implementation:

yaml
# Example YAML configuration for a balloon with ModelEngine support.
cosmetics:
  balloon:
    permission: 'cosmetics.balloon'
    item:
      display: '&bBalloon'
      material: LEATHER_HORSE_ARMOR
      lore:
        - ''
        - '&aThis balloon will float in the sky!'
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10000
    colored: true
    type: BALLOON
    meg: # ID of the Model Engine plugin model. Attention: This will only be visible when you have the balloon equipped, meaning it will not replace the item and will not be visible in the GUI!
      model: custom-model
      colorable-parts: # optional; if you want all parts of the model to be colored, remove this
        - 'partid1'
        - 'partid2'
      animations: # optional; if you don't specify anything, the defaults will be "walk" and "idle".
        walk: animation-walk
        idle: animation-idle

and that's all.

Finally, let's create a balloon with ItemsAdder custom entities implementation:

yaml
# Example YAML configuration for a balloon with ItemsAdder support.
cosmetics:
  balloon:
    permission: 'cosmetics.balloon'
    item:
      display: '&bBalloon'
      material: LEATHER_HORSE_ARMOR
      lore:
        - ''
        - '&aThis balloon will float in the sky!'
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10000
    colored: true
    type: BALLOON
    ia: # ID of the ItemsAdder plugin model. Attention: This will only be visible when you have the balloon equipped, meaning it will not replace the item and will not be visible in the GUI!
      model: namespace:custom-model
      colorable-parts: # Not yet ready for ItemsAdder entities - this is optional; if you want all parts of the model to be colored, remove this option
        - 'partid1'
        - 'partid2'
      animations: # this option is optional; if you don't set anything, the defaults will be "walk" and "idle".
        walk: animation-walk
        idle: animation-idle

Spray

A spray is quite simple, in fact, as simple as hats.

yaml
# Example YAML configuration for creating a spray.
cosmetics:
  spray:
    permission: 'cosmetics.spray' # permission to use the spray
    item:
      display: '&bSpray'
      material: FEATHER
      lore:
        - ''
        - '&aThis spray is the best!'
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10044 # spray model data
    colored: true # the spray can be colored
    type: SPRAY # cosmetic type: spray
    url: 'https://localhost/img_url.png' # there are 2 options here: you specify the image URL or enter the name of the image you have in plugins/MagicCosmetics/sprays/
    item-image: false # This applies to sprays that are items, not images (they don't require a url path). If this option is activated, it will use the item displayed in the menu as the image.