Migration
This guide details how to migrate player skins, outfit presets, and server configurations from illenium-appearance, rcore_clothing, or qb-clothing to kartik-clothing.
⚡ Automated illenium-appearance Migration
kartik-clothing features a built-in automated migration script that reads the playerskins and player_outfits database tables and converts player skin snapshots and saved outfits into kc_player_skins and kc_player_outfits.
The same command also works for qb-clothing databases. Both scripts use tables with these names but store the data differently, and the migration detects this per table and per row:
- illenium-appearance skins and outfits (
components/propscolumns) are copied as they are. - qb-clothing skins (
{ "pants": { "item": 24, "texture": 2 }, ... }) and qb-clothing outfits (a singleskincolumn inplayer_outfits) are converted: clothing, props (hats, glasses, ears, watches, bracelets), hair, eyebrows, beard and other overlays, face shape and features, and eye colour. - Ped models saved as a number (for example
1885233650) are turned back into model names.
1. In-Game or Console Command
Run the following command from the server console or in-game as an administrator (group.admin):
/migrateillenium
/migrateillenium forceWhat the Migration Command Does:
- Verifies the existence of the
playerskinstable in your database. - Reads all active player skins (
WHERE active = 1) and converts each one. - Keeps any look a player already made in kartik-clothing, so running the command again never overwrites new looks. Use
/migrateillenium forceto import the old look over it anyway. - Reads saved outfits from
player_outfits(if present) and copies them intokc_player_outfits. Outfits that were already imported (same character and outfit name) are skipped, so running it twice gives no duplicates. - Rows that cannot be read are skipped, and a
player_outfitstable with an unknown layout is skipped with a notice. A database error stops the migration with a message instead of a script error. - Outputs a summary log in the server console:
[kartik-clothing Migration] Migrated 142 player skins and 89 saved outfits. Kept 3 existing kartik-clothing looks, skipped 0 outfits already imported, 1 rows could not be read.
Back up your database before migrating. The migration only reads playerskins and player_outfits, it never changes or deletes them.
2. Server Export Trigger
Alternatively, you can trigger the migration programmatically from any server script:
local ok, resultMsg = exports['kartik-clothing']:migrateIlleniumAppearance()
print("Migration Result:", resultMsg)
-- import over looks players already made in kartik-clothing
exports['kartik-clothing']:migrateIlleniumAppearance(true)ok is true when the migration finished, false when the playerskins table is missing or a database error stopped it. resultMsg is the summary shown above.
🚫 Automated illenium-appearance Blacklist Import
The command above moves players. Their Config.Blacklist, the garments they had restricted, is a separate import, because it lands in kc_item_locks rather than in a player table.
Paste their block into /shopmanager → Blacklist Import, press Check it, then Import. Or from the console:
/migrateilleniumblacklist dry -- print what it would do
/migrateilleniumblacklist -- import itA plain drawable list becomes a garment nobody may wear; an entry carrying jobs becomes a garment only those jobs may wear. Full walkthrough: Blacklist Import (illenium).
⚡ Automated rcore_clothing Migration
kartik-clothing includes built-in migration support for rcore_clothing. The migration script parses active player clothing snapshots from rcore_clothing_current and saved outfit presets from rcore_clothing_outfits (handling DLC strings, texture numbers, and component maps) and converts them into kc_player_skins and kc_player_outfits.
1. In-Game or Console Command
Run the following command from the server console or in-game as an administrator (group.admin):
/migratercoreWhat the Migration Command Does:
- Verifies the existence of
rcore_clothing_currentandrcore_clothing_outfitstables. - Parses legacy clothing formats (
dlcName--slot--drawable--textureandslot_drawable_texture). - Extracts streamed DLC collection names (e.g.
dlcName) so streamed clothing collections are preserved without index shifts. - Inserts migrated active player skin records into
kc_player_skins. - Converts saved outfits into
kc_player_outfits. - Outputs a summary log in the server console:
[kartik-clothing Migration] Successfully migrated 186 active player skins and 112 saved outfits from RCore clothing!
2. Server Export Trigger
local ok, resultMsg = exports['kartik-clothing']:migrateRcoreClothing()
print("RCore Migration Result:", resultMsg)🛈 Migrating from qb-clothing
If you are migrating from qb-clothing:
kartik-clothingautomatically listens for legacyqb-clothingnet events (such asqb-clothing:client:openMenuandqb-clothing:saveOutfit).- Run
/migrateilleniumonce. It reads qb-clothing'splayerskinsandplayer_outfitstables and converts the qb-clothing format (see the illenium-appearance section above). - You can safely stop or remove
qb-clothingfrom yourserver.cfg.
🛑 Post-Migration Steps
- Verify that player skins load properly on player spawn.
- Ensure legacy resource scripts (
illenium-appearance,rcore_clothing, orqb-clothing) are stopped and removed fromserver.cfg. - Retain database backups until you confirm all active player data has successfully migrated.