# 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!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://models.advancedplugins.net/models-and-guides/starter-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
