Make a Fashion Pack - AbsolemJackdaw/JustFashion GitHub Wiki

Getting Started

a Fashion Pack is an ornamented ResourcePack.
I suggest you read up on Resource Packs here.

Demo Pack

https://github.com/ArtixAllMighty/JustFashion/wiki/Demo-Resource-Pack
Feel free to download a demo pack to ensure you got the correct folder structure

Fashion Pack Conventions

  • Write in all lowercase
  • Preferably work in clothing sets. End-Users find it to be easier to navigate trough and combine clothing
  • The order in which you write your names in the json file is important , items will be loaded in the same order
  • Each Body part has a texture associated with it. Here are some blank samples you can use :

Head :

Body :

Pants :

Boots :

Once you have drawn your own set of clothes, you can proceed to

Put your clothes in the resource pack

The base path for the clothing is assets / fashion / textures / **your_pack_name **/ **body_part_index **/ mytexture.png

  • your_pack_name will be the unique name you give your fashion pack ! the provided fashion pack on curseforge uses the id "outfits". Use another name ! get creative !
  • body_part_index will either be body, boots, hats, or pants.

as for the texture name, this name will be shown in the wardrobe gui in-game.
The basic convention of the provided resourcepack has all textures of the same set named the same way, so users can find their way back in complete sets of clothes !

In order for the pack to function correctly , you'll have to

Set up the Fashion Pack JSON file

Just like Resource Packs need their pack.mcmeta, Fashion Packs need their fashionpack.json file.
The fashionpack.json file should be put in assets / fashion The json file will contain all elements the mod needs to load in, as well as the unique name we were talking about in the previous section.
A good way to start of with the json file is by copying these contents :

{
	"pack" : "your_pack_name", 
	"hats" :  [], 

	"body" :  [], 

	"pants" : [], 

	"boots" : []
}

For all that's holy and sacred in this world : please do not call your pack "your_pack_name" Chances are big some other person may do the same, and you are going to end up with incompatible packs.

If you have a texture for a hat that is called "flowers.png" , then you should add the full name to the array (list) of hats , likewise :

"hats" : ["flowers.png"],
if you have multiple entries, seperate them with a comma :

"hats" : ["flowers.png" , "creeper_hat.png"],

If you have drawn complete sets , name all textures my_set_name.png and declare them in the same manner for all body parts :

{
	"pack" : "your_pack_name", 
	"hats" :  ["my_set_name.png", "flowers.png", "creeper_hat.png"], 

	"body" :  ["my_set_name.png"], 

	"pants" : ["my_set_name.png"], 

	"boots" : ["my_set_name.png"]
}

pro tip : use all lower case names, dont use spaces anywhere in any name, and keep the signs and names as simple as possible. If you do not do this, JSON readers will freak out and crash, and minecraft doesn't have a concept of spaces in texture files. so things will be bound to fail if you do not follow these conventions !

If you followed these instructions correctly, and have read the tutorial on Resource Packs, your folder pack should look anything like this :

\---FASHION PACK
    |   pack.mcmeta
    |   pack.png
    |
    \---assets
        \---fashion
            |   fashionpack.json
            |
            \---textures
                \---my_pack_name
                    +---body
                    |       my_set_name.png
                    |
                    +---boots
                    |       my_set_name.png
                    |
                    +---hats
                    |       creeper_hat.png
                    |       flowers.png
                    |       my_set_name.png
                    |
                    +---pants
                    |       my_set_name.png
                    |
                    \---sets

If you have added clothes, or dont want to add clothes, you can always

Sets (1.19.2 5.3.1.0 and up)

1.19.2 has had an experimental section, not mentioned above.
The introduction of sets adds the possibility to drag and drop a skin file into a subfolder called 'sets'.

By 'skin file', we mean the regular, minecraft skin layout.

Sets allow for a quick addition of a helmet, chest and pants or boots.

PRO :

  • your entire outfit fits in one texture
  • the layout is familiar and used for every other skin texture in the game

CON :

  • the mod cannot seperate legs from boots
  • therefor, legs still have to be added trough the 'legs' folder and json tag, to profit from the usage of the legs and body texturing

the 'sets' folder goes next to the head, body, ... folders

Add Aesthetic Shield and Armor Replacements

For Shields and Weapons alike , you can model your own item. Here's the one I found on the internet and edited in BlockBench to my own modeling needs.

I called the file smores.json
I decided to use minecraft textures for this model.
If you do have a texture :
The texture file name doesn't have to be the same name as the model

You can make any model for shields or weapons in BlockBench and just add their JSON file to the Fashion Pack.

Fixing up your json

BlockBench will not export your file with the correct texture path defined. You have to do it manually.
Open the saved JSON file and in the beginning of the file, you'll have the paths for the textures specified.
For the smores, I choose to use default minecraft textures, which i defined like this :

"textures": {
		"stick_tex": "block/oak_log",
		"marshmallow": "block/white_wool"
	},

If you change the texture names from 0 to stick_tex or something else like I did, do not forget to update the reference in each part of your model.

You can also pick a texture you made yourself, and which you will locate in the Fashion Pack. Here's an example :

"weapon_tex": "fashion:my_pack_name/weapons/sword"

For more info on where to put model files and textures , read up on

Paths

Model JSON files for weapons and shields respectively go in
assets/fashion/models/my_pack_name/weapons
assets/fashion/models/my_pack_name/shields

Registering the Aesthetic Models

Goes just the same as for armor. We will need 2 new categories, one for weapons and one for shields
example :

  "weapon_models":[
	"smores",
	"sword"
  ],
  "shield_models": [
	"kite_shield"
  ] 

- All names written in these categories should match their file names !
- Before 1.16, we needed to specify textures as well. this is no longer necessary. Texture locations will be directly read out of your model json file ! Make sure your texture is placed in the path you specify in your model json !

Item - Based Weapons

Before 1.16, Item Based Weapons needed a lot of extra information to be added.
In 1.16 however, it is simpler :

You do not need to put your textures in a subfolder called 'items'. You can put your textures anywhere you want, the directoy is read out of your model json.

If you want to re-use any existing minecraft files, you can just make a generic json minecraft item file.
The most important things in here are the texture layer, and the parent, which HAS TO BE item/handheld !!!

Example of a salmon (used in the provided base pack of JustFashion)

{
    "parent": "item/generated",
    "textures": {
        "layer0": "item/salmon"
    }
}

Example of a custom drawn axe (equally used in the base pack provided by JustFashion)

{
    "parent": "item/handheld",
    "textures": {
        "layer0": "fashion:outfits/weapons/lumber_axe"
    }
}

Register Aesthetic Weapon Items

Register Item weapons are now exactly the same as the other modeled weapons.
To differentiate the rendering between custom models and flat item textures, you only need to add a prefix to the name in your fashion_pack_name.json.

Here's an example :

"weapon_models" : ["item/relax"]

- The path for the texture will be read out of the json file.
- It is good practice to put your texture in "textures / fashion_pack_name / weapons "

Final Note

If you happen to struggle still, you can always join my Discord channel and I'll answer any question as soon as I can !
https://discord.gg/8MEdFZh