> For the complete documentation index, see [llms.txt](https://models.advancedplugins.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://models.advancedplugins.net/models-and-guides/starter-guide.md).

# Starter Guide

## Starter Guide: Creating Models

Creating custom models is straightforward. This guide will help you design and implement your own models from scratch using **Blockbench** and **model.yml** configuration.

### 1. Designing Your Model

The first step in creating a model is designing it. We recommend using **Blockbench**, a 3D model editor tailored for Minecraft. Follow these steps:

1. Open Blockbench and create a new model.
2. Design your model using various tools provided by Blockbench.
3. When you're satisfied, export the model as a `.bbmodel` file.

Make sure you save it with a clear name, as this will be used later in your plugin's configuration.

### 2. Setting Up the Model Folder

Next, you need to add the model to your server. Each model must have its own folder under `plugins/`AdvancedModels or AdvancedCosmetics`/models/`. Follow this structure:

```
plugins 
    └── AdvancedModels or AdvancedCosmetics
         └── models
              └── [model_name]
                   ├── [model_name].bbmodel
                   └── model.yml
```

For example, if you're creating a chair model, your folder structure would look like this:

```
plugins 
    └── AdvancedModels or AdvancedCosmetics
         └── models 
              └── chair 
                   ├── chair.bbmodel 
                   └── model.yml
```

### 3. Configuring model.yml

Every model needs a `model.yml` file to function correctly. This file defines the model’s properties, parameters, and behavior. Here's a basic `model.yml` template:

```yaml
name: "Chair"
description: "A simple wooden chair"
properties:
  item:
    type: OAK_LOG 
  entity-collision-threshold: 0.5
  block-collision-threshold: 0.3 
recipe:
  # Layout for crafting. If you want no item in that slot, use a space ` `, e.g. `W W`
  layout:
    - 'P P'
    - 'PPP'
    - 'P P'
  # Define each material below. Material name, e.g. `W` must be 1 capital letter
  materials:
    P:
      type: OAK_PLANKS 
parameters:
  wood:
    default: "OAK"
    values: "OAK, BIRCH, SPRUCE"
    description: "Type of wood used for the chair"
  collision: true
parts:
  chair: 
    material: <wood>_LOG
  sitPart:
    material: <wood>_LOG
    interaction: SIT
```

### 4. Testing Your Model (AdvancedModels)

Once your model is set up in the folder and the `model.yml` is configured, restart your server or run the `/am reload` command to load the new model.

You can now spawn the model in-game using:

`/am spawn [model_name]`

Example:

`/am spawn chair`

Congratulations, you're now ready to create and customize your own models with **AdvancedModels**!

### 4. Testing Your Model (AdvancedCosmetics)

Before testing, for AdvancedCosmetics plugin only, you need to create a file inside `/plugins/AdvancedCosmetics/cosmetics/models`folder, specifically defining additional required characteristics of the cosmetic.

Here is the example of `cone.yml`from default cosmetics

```yaml
enabled: true
model: cosmetics:cone

#name: "&dThe Backpack" # You can override model's name here
#description: "A fashionable backpack." # You can override model's description here

item: # You can override model's shown item here
  head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2M4NDk3MTc4ZTZlMjYzYWEwOTM0NDM5MmU4NTY4MzM4OTAwNDk3NzhiNmMzNDQ3ZTYxYmU2ZDQ5ZWRlNzBhOCJ9fX0=

type: HAT
```

Now, save this file. And that's it! The cosmetic will now show up in `/cosmetics`menu!
