ArchiveXL: body mods and refits

Summary

Published: ?? by manavortex Last documented update: February 27 2025 by AllKnowingLion Minimum required ArchiveXL version: 1.5

This page explains how to enable body mod support in ArchiveXL:

Body modders: Adding support

Clothing mods: Making use of the tags

To learn more about body mods, check the Texture Frameworks for Player V page.

NOTE

The past method of adding the components to each individual appearance does still work. However, you'll want to use the new method (for version >= 1.14), since it is both more robust and less tedious.

Checking the current body

Run the following code snippet in CET to see which body is currently installed:

print(Game.GetScriptableSystemsContainer():Get("PuppetStateSystem"):GetBodyTypeSuffix(ItemID.new(), GetPlayer(), nil))

Body modders: Adding support

1. Registering the body mod

  1. Create an .xl file in your Wolvenkit Project's resources folder (File -> New file -> ArchiveXL)

  2. Optional: Name it the same as your current project (e.g. boobs_for_back_problems.archive.xl)

  3. Put the following file content:

player:
  bodyTypes: [ NewBody ]  # for substitutions, this will be converted 
                          # to snake case: new_body

2. Patch the player entity files

We'll make use of ArchiveXL: Resource patching for this.

Set up the patch .ent

If you downloaded the template project, a patch .ent will already be included.

Create your own patch .ent
  1. In Wolvenkit, select File -> New File

  2. Scroll down the menu until you find the one with the extension .ent (should be EntEntityTemplate)

  3. Add a new, blank EntEntityTemplate to your project

  4. Give it a good name and move it somewhere

  5. Open the file and select the components array

  6. Add a new entMeshComponent and name it Body:YourBodyTag

  7. Now, proceed with the rest of the guide

  1. Inside the patch .ent, find the entMeshComponent under the components array.

  2. Change its name to match your body mod, e.g. Body:BoobsForBackProblems -> Body:NewBody

Register the patch .ent

Make sure that your patch .ent is added to the game by telling ArchiveXL about it. Add the following block to your .xl file:

resource:
    patch:
        path\to\your\patch_file.ent:
          - !include player_wa.ent 
          - !include player_ma.ent 

Include only the relevant body gender!

3. Test

That's it, everything should work now! Let's test.

  1. Launch the game and load into a save

  2. check if the body tag registers by running the CET command.

If yes: Congratulations, you've made it much easier for people to add refits for your body!

Troubleshooting

General errors

The process is so simple that there aren't many things to go wrong:

  1. Update ArchiveXL

  2. Double-check your .yaml via yamllint and make sure you don't have syntax errors (indent matters)

If that doesn't work, check if the component gets added correctly. There are two ways to do this:

CET:

print(GetPlayer():FindComponentByName("Body:NewBody"))

If that still doesn't work, consider using the template from Nexus, which has been tried and tested on May 18 2024 with ArchiveXL

Invisible mesh for body xyz

Make sure that your mesh has appearances and materials. If you are using ArchiveXL: Resource patching, it's easy to forget a new body's mesh in the list like a gonk. This has never happened to the author, by the way.

Clothing mods: Making use of the tags

The problem

Even with the AKL AutoRefitter, the process of supporting body mods is tedious. And even worse: you then have to pack everything separately for Nexus:

Realistic refitting experience

The Solution

If a mod supports body tags, ArchiveXL can detect the current body mod, and conditionally load the correct mesh. Now, everything can be put into a single .archive!

Dynamic Appearances

If you're using dynamic appearances, you don't need to register a suffix and can simply match or substitute for the body tag:

appearance name:
t0_recoloured_netrunner_suit&body=new_body

substitution:
*my\mod\meshes\p{gender}a_netrunning_suit_{body}.mesh

Suffixes

If you're sticking to the classical approach, you need to add the following lines to your .yaml:

  appearanceSuffixes:
    - !append itemsFactoryAppearanceSuffix.BodyType

Now, you can use the suffixes in your root entity just like camera states or body genders:

appearanceName: my_custom_shirt&FPP&NewBody

If you know something that should be on the list, please edit The Wiki!

Supporting mods

The following body mods support dynamic body switching.

Body Mod - Male V
Tag Name
Substitution Value

Adonis

&body=adonis

Atlas

&body=atlas

Gymfiend

&body=gymfiend

Body Mod - Female V
Tag Name
Substitution Value

Lush

&body=lush

Ult

&body=ult

Solo_OG

&body=solo_og

SoloArms

&body=soloarms

Song2

&body=song2

Flat

&body=flat

ELEGY

&body=elegy

Angel

&body=angel

Small Big

&body=small &body=big

VTK - Vanilla HD Body - 3.0

*NOTE*: you don't need this unless your mod specially modifies body meshes for this body, otherwise the value is base_body(see official mod page for further info.)

VHD

&body=vhd

Last updated

Was this helpful?