Skip to main content
LandSandBoat includes a content restriction system that can prevent out-of-era content from loading when specific expansions are disabled. This is controlled by two mechanisms: the RESTRICT_CONTENT setting and the content_tag column present in many SQL tables.
Content restriction is partially implemented. Not all content is tagged, and some era-accurate behaviors may still require additional module-level configuration. Do not rely solely on RESTRICT_CONTENT for a fully era-accurate server.

The RESTRICT_CONTENT setting

In settings/main.lua, set RESTRICT_CONTENT to 1 to enable expansion-locked content filtering:
xi.settings.main =
{
    ENABLE_COP     = 1,
    ENABLE_TOAU    = 1,
    ENABLE_WOTG    = 0,
    ENABLE_ABYSSEA = 0,
    -- ...

    RESTRICT_CONTENT = 1,
}
With RESTRICT_CONTENT = 0 (the default), all content is loaded regardless of which expansion toggles are set. Content appears in-game even if the corresponding expansion is disabled. With RESTRICT_CONTENT = 1, content whose content_tag matches a disabled expansion is excluded from loading.

The content_tag column

Many SQL tables include a content_tag column that associates a row with a specific expansion. When RESTRICT_CONTENT is enabled, the server reads this column and skips rows whose tag corresponds to a disabled expansion. Examples of tables with content_tag:
  • NPC spawn data
  • Item shop listings
  • Quest and mission data
  • Zone content flags

Tag values

Tag values correspond to expansion identifiers that map to the ENABLE_* settings:
content_tag valueExpansionSetting
COPChains of PromathiaENABLE_COP
TOAUTreasures of Aht UrhganENABLE_TOAU
WOTGWings of the GoddessENABLE_WOTG
ACPA Crystalline ProphecyENABLE_ACP
AMKA Moogle Kupo d’EtatENABLE_AMK
ASAA Shantotto AscensionENABLE_ASA
ABYSSEAAbysseaENABLE_ABYSSEA
SOASeekers of AdoulinENABLE_SOA
ROVRhapsodies of Vana’dielENABLE_ROV
TVRThe Voracious ResurgenceENABLE_TVR
Rows with no content_tag value (or a tag matching an enabled expansion) are always loaded.

What gets disabled

When RESTRICT_CONTENT = 1 and an expansion is disabled:
  • NPCs with a matching content_tag are not spawned. Players will not see expansion-specific NPCs in the world.
  • Items in NPC shops with a matching tag are removed from shop inventories.
  • Quests and missions associated with the disabled expansion are not offered.
  • Zone-specific content flagged with the tag is excluded.
Items that already exist in a player’s inventory are not removed. Content restriction only applies at the loading and availability stage, not retroactively to existing character data.

Partial implementation status

The content_tag system is not complete. Many pieces of expansion content have not yet been tagged in the SQL files. As a result:
  • Some expansion content may remain visible even with RESTRICT_CONTENT = 1 and the relevant expansion disabled.
  • Era-specific behavior changes (combat formulas, cap changes, etc.) are not handled by RESTRICT_CONTENT at all.

Era accuracy beyond content tags

RESTRICT_CONTENT handles content availability (what appears), not behavioral accuracy (how things work). For era-accurate mechanics — such as pre-ToAU combat formulas, older skill-up rates, or removed content tweaks — you need the module system. The era accuracy modules in modules/era-accuracy provide opt-in behavioral changes that revert specific mechanics to match earlier eras of the game. These are separate from the content_tag system and can be used independently. See Era accuracy modules for the full list of available reversions.

Example configuration

A server targeting the Wings of the Goddess era (November 2007):
xi.settings.main =
{
    -- Enable expansions up to WotG
    ENABLE_COP       = 1,
    ENABLE_TOAU      = 1,
    ENABLE_WOTG      = 1,

    -- Disable post-WotG expansions
    ENABLE_ACP       = 0,
    ENABLE_AMK       = 0,
    ENABLE_ASA       = 0,
    ENABLE_ABYSSEA   = 0,
    ENABLE_SOA       = 0,
    ENABLE_ROV       = 0,
    ENABLE_TVR       = 0,
    ENABLE_VOIDWATCH = 0,

    -- Enable content restriction
    RESTRICT_CONTENT = 1,
}
Combine this with appropriate era accuracy modules to revert combat and gameplay behavior to the WotG era.

Build docs developers (and LLMs) love