How to add new IPL

1

How to Add a New IPL Interior

This guide explains how to add a new IPL interior to RTX Housing System.

IPL interiors are defined in:

config/ipls.lua

All IPL interiors are stored inside:

Config.HouseIpls
circle-exclamation
2

Basic Structure of an IPL

Each IPL entry requires:

  • a unique key

  • at least one theme

  • valid world coordinates

  • optional preview images

triangle-exclamation
3

Config Fields Explained

chevron-rightClick to expand – IPL config fieldshashtag
  • key – unique IPL identifier

  • label – name shown in UI

  • tags – tags used for filtering (Furnished, Apartment, etc.)

  • exitcoords – exit position inside the interior (coords + heading)

  • managmentcoords – property management interaction position

  • wardrobecoords – wardrobe interaction position

  • storagecoords – storage interaction position

  • cookcoords – kitchen interaction position

  • sinkcoords – sink interaction positions

  • showercoords – shower interaction positions

  • cleanpoints – cleaning interaction positions

  • images – preview images shown in UI

  • themes – selectable interior themes (IPL variants)

Theme fields

  • id – theme identifier

  • label – theme name shown in UI

  • ipl – IPL name to load

  • interiorId – interior ID used for enabling/disabling props

4

Example: IPL with a Single Theme (Default)

Use this setup if your IPL does not support multiple themes.

chevron-rightExample – Single-theme IPLhashtag
["newipl"] = {
    label = "IPL New",
    tags = {"Furnished", "Apartment"},

    exitcoords = {coords = vector3(-785.45, 314.41, 216.63), heading = 10.5},
    managmentcoords = {coords = vector3(-781.00, 315.64, 217.13)},
    wardrobecoords = {coords = vector3(-795.57, 326.44, 216.53)},
    storagecoords = {coords = vector3(-788.64, 320.94, 216.53)},
    cookcoords = {coords = vector3(-782.27, 329.07, 216.53)},

    sinkcoords = {
        {coordswater = vector3(0.0, 0.0, 0.0), coordsplayer = vector3(0.0, 0.0, 0.0), heading = 0.0},
    },
    showercoords = {
        {coordswater = vector3(0.0, 0.0, 0.0), coordsplayer = vector3(0.0, 0.0, 0.0), heading = 0.0},
    },

    cleanpoints = {
        {coords = vector3(-797.02, 324.79, 216.03)},
    },

    images = {
        {url = "img/previewimages/newipl_1.webp"},
        {url = "img/previewimages/newipl_2.webp"},
    },

    themes = {
        {
            id = "default",
            label = "Default",
            ipl = "",
            interiorId = 0,
        },
    },
}
5

Example: IPL with Multiple Themes

Use this setup if your IPL supports multiple visual variants.

chevron-rightExample – Multi-theme IPLhashtag
themes = {
    {
        id = "modern",
        label = "Modern",
        ipl = "apa_v_mp_h_01_a",
        interiorId = 227329,
    },
    {
        id = "moody",
        label = "Moody",
        ipl = "apa_v_mp_h_02_a",
        interiorId = 228097,
    },
}
6

Important Rules & Tips

  • ✔ Always define at least one theme

  • ✔ Use world coordinates, not offsets

  • ✔ Make sure IPL names and interior IDs are valid

  • ✔ Preview images improve user experience

  • ❌ Missing themes will cause the interior to not load

circle-info

Preview images and valid interior IDs help users and prevent runtime issues.

7

Testing Your IPL

  • Restart the housing resource:

restart rtx_housing
  • Open Property Creator

  • Create a property using your new IPL

  • Test:

    • exit

    • management menu

    • wardrobe/storage (if enabled)

    • theme switching (if applicable)

8

Need help?

If you want, we can add or configure the IPL for you, including themes and props. Contact us on Discord: https://discord.gg/rtxdev