Blacklist Import (illenium)
illenium keeps its restrictions in Config.Blacklist, a Lua table in their config file. kartik-clothing keeps them as rows in kc_item_locks, authored in-game.
So moving across is a one-shot import of their table into ours, not a config option you point at their file. Paste the block, look at what it would do, then write it.
This page is about their blacklist config. Player skins and saved outfits are a separate tool, see Migration.
🖥️ The Import Page (the normal way)
- Open
/shopmanageras an administrator. - Pick Blacklist Import in the left sidebar.
- Paste their
Config.Blacklist = { … }block into the box. - Press Check it.
- Read the table it shows you, then press Import.
Nothing is written until the second press. Check it parses the paste and reports what it found; Import is the same read, committed.
What the preview tells you
| Column | Meaning |
|---|---|
| Body | male, female, or Both |
| Slot | The garment slot in plain words, Masks, Tops & Jackets, Hats |
| Drawable | The garment id |
| Texture | A single colour, or every |
| Who may wear it | The jobs carried over, or Nobody for a plain blacklist |
Above the table: how many garments in total, how many are blacklisted, how many are job-restricted, and every job name the config mentions. Any category name this resource has no slot for is listed as skipped rather than guessed at.
Long configs are summarised, the table shows the first 40 rows, and a line underneath says how many more will be imported.
Undoing an import
The page counts how many of your locks came from an import and offers Remove imported locks. That deletes exactly those rows and the job rules under them. Locks you authored yourself in the LOCK EDITOR are untouched.
Fix the config, then import again.
💬 The Same Thing By Command
For a server that still has their resource on disk:
/migrateilleniumblacklist -- find their config and import it
/migrateilleniumblacklist dry -- print what it would do, write nothing
/migrateilleniumblacklist path/to.lua -- read a specific fileWith no path it looks at kartik-clothing/data/illenium_blacklist.lua first, then illenium-appearance/config.lua and the usual places under it.
-- Or from any server script
local result = exports['kartik-clothing']:migrateIlleniumBlacklist({ dry = true })
print(result.total, result.blacklisted, result.restricted)🔁 What Their Entries Become
| In their config | In kc_item_locks |
|---|---|
masks = {1, 2, 3} | Three locks with blacklisted = 1, nobody wears them |
{ drawables = {…}, jobs = {"police"} } | One lock per drawable, one rule row per job, only those jobs wear it |
jobs = {{ name = "police", grade = 2 }} | The same, with min_grade = 2 |
male / female | The lock's gender; anything else becomes any |
[!IMPORTANT]
jobsin their config is a whitelist, not a list of who is banned, it names the people who may wear an otherwise-blacklisted garment. It is carried over that way. An entry whosejobskey names nobody is treated as a plain blacklist.
Their category names map onto GTA component and prop ids, upperBody is component 3, jackets is 11, hats is prop 0, and so on. hair is component 2 whether it sits inside components or beside it.
Both shapes are accepted, including mixed in one category:
Config.Blacklist = {
male = {
hair = {12, 13}, -- a plain list
components = {
masks = {
{
drawables = {298, 297, 296},
jobs = {"hadesautos", "wagner"} -- only these two jobs
},
},
upperBody = {5, 6, 7}, -- nobody
},
props = {
hats = { { drawables = {1, 2} } },
},
},
}You can paste the whole Config.Blacklist = { … } assignment, or just the table inside it. Anything else in the file is ignored.
🛈 Worth Knowing
- Importing the same config twice changes nothing. Garments are keyed on kind + id + drawable + texture + body, so the second run lands on the same rows, no duplicate locks, and the job rules under each one are replaced rather than appended. Import as often as you like.
- Re-importing an edited config overwrites in place. Raise
policefrom grade 0 to grade 3, flip a blacklisted garment to a job, or the other way round, and the existing lock is updated. Garments you removed from their config are not removed here, though, a shrinking config leaves the old locks behind. Use Remove imported locks and import again for a clean slate. - Every row it writes is stamped
created_by = 'illenium-migration'. That is what Remove imported locks matches on. - No hint text is written. The hint is the line a player is shown when a garment is refused, so it belongs to whoever authored the lock, an imported lock falls back to the default "You are not entitled to wear this." A hint you write by hand in the LOCK EDITOR survives a re-import.
- Locks apply immediately. A player already wearing a garment they are no longer entitled to loses it at their next save or spawn.
- An import wins over a lock you authored by hand for the same garment: its blacklist flag and rules are replaced by the config's. That row keeps your
created_bystamp, so Remove imported locks will not take it away afterwards, it stays, carrying the imported rules. If you have hand-tuned locks, import first and tune second. - Their config is parsed, not executed. The
Blacklisttable is cut out by matching braces and compiled on its own in an empty environment, so nothing else in their file runs.
🩺 If Something Goes Wrong
| Message | What it means |
|---|---|
| no Config.Blacklist table found in that text | The paste has no Blacklist = { in it, and does not start with { |
the blacklist table is never closed, a } is missing | Half a config was copied out of the file |
| that config has no blacklisted garments in it | It parsed, but every category was empty |
| that config is too large to import | Over 512 KB, use the console command against the file instead |
| You are not allowed to import a blacklist | You are not an admin. The check is server side, not just on the button |
➡️ After Importing
Everything is now an ordinary garment lock. Edit, extend or remove any of them in the LOCK EDITOR, see Item Locks & Restricted Clothing, or from the console with Item Lock Commands.