> For the complete documentation index, see [llms.txt](https://documentation.rcore.cz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.rcore.cz/paid-resources/rcore_housing/features/interior-creator.md).

# Interior Creator

The Interior Creator authors custom SHELL and IPL interiors that the Property Creator can then use. Open it from `/housing` → **Interior Creator**.

{% hint style="warning" %}
This page is admin-only by default (`PAGE_INTERIOR_CREATOR` permission is `nil`).
{% endhint %}

![Interior Creator UI](/files/FkQEJweIDnRe86CdNjR9)

## 🧱 SHELL vs IPL

| Type    | When to use                                                                 |
| ------- | --------------------------------------------------------------------------- |
| `SHELL` | A standalone interior model (e.g. `lf_house_*`) spawned via `CreateObject`. |
| `IPL`   | A vanilla Rockstar interior loaded with `LoadInterior` / IPL streaming.     |

## ⌨️ Keybinds

```lua
Config.InteriorCreator.Keys = {
    Place      = 191, -- ENTER
    Cancel     = 177, -- BACKSPACE
    CycleLeft  = 174, -- cursor LEFT
    CycleRight = 175, -- cursor RIGHT
    Confirm    = 47,  -- G
    ScrollUp   = 241,
    ScrollDown = 242,
    StepMod    = 36,  -- LCTRL
    Skip       = 74,  -- H
}
```

| Key                  | Action                                        |
| -------------------- | --------------------------------------------- |
| **ENTER**            | Place / reposition the tentative point.       |
| **BACKSPACE**        | Cancel the current authoring session.         |
| **G**                | Confirm the tentative point or finish review. |
| **H**                | Skip an optional point.                       |
| **LEFT / RIGHT**     | Cycle through placed points in review mode.   |
| **SCROLL UP / DOWN** | Rotate heading on directional points.         |
| **CTRL + SCROLL**    | Adjust the rotation step itself.              |

All values are FiveM native control IDs - replace them in `config.lua` if you want different bindings. See the [FiveM controls reference](https://docs.fivem.net/docs/game-references/controls/) for the full list.

## 📍 Point Reference

The creator asks you to place up to three kinds of positional points. Understanding what each one does prevents the most common setup mistakes.

| Point                              | Where you place it                                                                             | What it controls                                                                                                                                                                  |
| ---------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Exterior origin** *(SHELL only)* | In the open world, at the spot where the shell object should be spawned.                       | The world-space position and heading of the physical shell model. This is **not** a teleport destination — it is the object's anchor.                                             |
| **Entry point**                    | **Inside** the interior, at the spot where a player should land after entering the property.   | Teleport destination used when a player *enters* the apartment (goes in). Place it in a logical starting position inside — e.g. just inside the front door, facing into the room. |
| **Exit point**                     | **Outside** in the world, at the spot where a player should appear after leaving the property. | Teleport destination used when a player *exits* the apartment (goes out). Place it on the pavement, driveway, or entrance — wherever feels like "stepping outside."               |

{% hint style="info" %}
A quick mental model: **Entry = where you land when you go IN. Exit = where you land when you go OUT.** The exterior origin (shells only) is a third, separate concept — it is where the building sits, not where the player teleports.
{% endhint %}

## 🪜 SHELL Flow

Use this flow to register any shell that isn't in the [built-in catalog](/paid-resources/rcore_housing/integrations/shells.md) (K4MB1 and similar).

{% stepper %}
{% step %}

### Verify the model is streamed

Make sure your shell resource is started on the server — the model must be streamable on the client. Models that aren't streamed are skipped at runtime and the creator will refuse them.
{% endstep %}

{% step %}

### Open the Interior Creator and name the shell

Open the Interior Creator, pick **Shell**, and enter:

* **Label** — the name shown in the Property Creator picker (e.g. `Beach House`).
* **Shell** — the exact model name used to spawn the shell (e.g. `k4_house11_shell`).
  {% endstep %}

{% step %}

### Place the exterior origin

Walk to the spot **in the open world** where the shell building should sit, then press **ENTER**.

> This sets the world-space anchor for the shell object — it is **not** a player teleport point. Think of it as "where does the building live on the map."
> {% endstep %}

{% step %}

### Place the Entry point (inside)

Step **inside** the shell and walk to the spot where players should appear when they enter the property. Press **ENTER** to place the **ENTRY** point.

> Entry = the player's landing position after teleporting **in**. Face the direction you want the player to be looking when they arrive.
> {% endstep %}

{% step %}

### Place the Exit point (outside)

Walk **back outside** to the spot where players should appear when they leave the property. Press **ENTER** to place the **EXIT** point.

> Exit = the player's landing position after teleporting **out**. A driveway, pavement in front of the door, or porch all work well.
> {% endstep %}

{% step %}

### Place optional zones

Continue to place wardrobe, storage, management, and any optional zones (shower, etc.) as prompted.
{% endstep %}

{% step %}

### Confirm and save

Press **G** to confirm and save the interior to the catalog. It is immediately available in the Property Creator picker for all admins.
{% endstep %}
{% endstepper %}

## 🪜 IPL Flow

{% stepper %}
{% step %}

### Provide the IPL name

Open the Interior Creator, pick **IPL**, and enter:

* **Label** — the name shown in the Property Creator picker (e.g. `Clipse Tower`).
* **IPL** — the exact IPL string used to load the interior (e.g. `apa_v_mp_h_01_a`). You can find IPL names in the [FiveM IPL reference](https://github.com/femga/rdr3_discoveries) or community IPL lists.

{% hint style="info" %}
The IPL must be a valid Rockstar interior name. `rcore_housing` calls `LoadInterior` with this string — an incorrect name will silently fail to load.
{% endhint %}
{% endstep %}

{% step %}

### Place the Entry point (inside the IPL)

Teleport or walk into the interior. Place the **ENTRY** point at the spot where players should appear when they enter the property.

> Entry = the player's landing position after teleporting **in**. For apartments this is typically the living room or just past the front door.
> {% endstep %}

{% step %}

### Place the Exit point (outside)

Walk to the spot **outside in the world** (street level, building entrance, etc.) where players should appear after leaving the property. Place the **EXIT** point.

> Exit = the player's landing position after teleporting **out**.
> {% endstep %}

{% step %}

### Confirm and save

Press **G** to confirm. The IPL is registered in `rcore_housing_interior_catalog` and immediately available in the Property Creator picker.
{% endstep %}
{% endstepper %}

Interiors are stored in the `rcore_housing_interior_catalog` table. Delete an interior from the Interior Creator UI to remove it from the catalog.
