Thing Sheet โ
When making source sheets, always copy the first 3 rows from official rows and start your data at the 4th row. Do not alter the column order.
Sheet Columns โ
| Column | Type | Description |
|---|---|---|
| id | string | Unique identifier for the item. |
| name_JP | string | Display name in Japanese. |
| name | string | Display name in English. |
| unknown_JP | string | Japanese name of high-quality items when unidentified. Can also be a special property, e.g.: #randomBook, #randomPotion. |
| unit_JP | string | Japanese counter word for the object. See Unit JP below. |
| unit | string | Physical form of the object. See Unit below. |
| unknown | string | English name of high-quality items when unidentified. Can also be a special property, e.g.: #randomBook, #randomPotion. |
| category | string | Category the item belongs to. Used for auto-dumping and recipe menus (linked to the Category sheet). |
| sort | int | Sort order. E.g. 2200 places it in the bow range. |
| _tileType | string | How the object is displayed on the map. See Tile Type below. |
| _idRenderData | string | How the object sits on the ground and its clipping. See idRenderData below. |
| tiles | int | Replacement texture tile ID(s). Multiple tiles follow: front โ front reversed โ back โ back reversed. E.g. 123,-123,456,-456. |
| altTiles | int | Variant tiles for alternate states (e.g. a closed chest with contents inside). |
| anime | int[] | Two values: frameCount,frameDuration. When the idRenderData column uses the @obj and Sprite Animation is used, this column does not need to be filled in. |
| skins | int | Skin variant reference. When the idRenderData column uses the @obj and Sprite Variations is used, this column does not need to be filled in. |
| size | int[] | Grid size for large objects: height,width. |
| colorMod | int | Color saturation modifier. |
| colorType | string | Color source: default (first crafting ingredient), alt (secondary), or random. |
| recipeKey | string | How the recipe is acquired: * = known by default; a character ID = sold by that character. |
| factory | string | Crafting station where the item is made. See Factory below. |
| components | string | Crafting ingredients. See Components below. |
| disassemble | string | Items produced when disassembled. |
| defMat | string | Default material (e.g. oak). Determines the icon/preview color. |
| tierGroup | string | Tier grouping for upgrade/progression. |
| value | int | Base sell value in orens. |
| LV | int | Crafting skill level required. |
| chance | string | Spawn or generation chance modifier. |
| quality | int | Item quality tier. The โ and โ are determined by the quality column. (To be supplemented) |
| weight | int | Item weight. E.g. seed = 30, rod = 500, bed = 4500, piano = 85000. |
| electricity | int | Power draw. Negative values consume electricity (e.g. monitor = -10). |
| trait | string | Special behaviors. See Trait below. |
| elements | string | Element aliases from the Element sheet with /level. E.g. lumberjack/4 displays as Lumberjack [****]. |
| range | int | Weapon range in tiles. E.g. short bow = 1, bow = 3, rail gun = 5. |
| attackType | string | Damage/weapon type: Blunt, Bow, Cane, Claw, Gun, Pierce, Punch, Slash. |
| offense | int[4] | Offensive stats (4 values). |
| substats | int | Sub-stat modifiers. |
| defense | int[2] | Defensive stats: DV,PV. |
| lightData | string | Light emission preset. See Light Data below. |
| idExtra | string | Additional render data reference. |
| idToggleExtra | string | Toggleable render data (e.g. on/off lighting). |
| idActorEx | string | Ambient effect around the object. See Ambient Effects below. |
| idSound | string | Sound played when crafting: glass, money, paper, etc. |
| tag | string | Built-in behavior flags. See Tags below. |
| workTag | string | Work-related tags. |
| filter | string | Generation sources outside crafting: fish, gacha, supply, etc. Used by CreateFromFilter to randomly generate items. |
| roomNameJP | string | Room type definition in Japanese. Multiple entries separated by commas. |
| roomName | string | Room type definition in English. E.g. Bedroom or Kitchen,Dining Room. |
| detail_JP | string | Item description in Japanese. Shown above the stat info in-game. |
| detail | string | Item description in English. Shown above the stat info in-game. |
Unit JP โ
The unit_JP column defines the Japanese counter word for the object. These do not directly apply to the English version.
| Character | Romaji | Meaning |
|---|---|---|
| ๅก | katamari | cluster, clump |
| ๆฏใ | furi | handheld, melee |
| ๅฏพ | tai | pair (e.g. gloves) |
| ๅฐ | dai | machine, pedestal, harp |
| ๆบ | tei | long narrow object (e.g. gun, scissors, hoe) |
| ็บ | hatsu | ammo |
| ๆฌ | hon | base, body, object |
| ๆ | mai | sheet |
| ็ฒ | tsubu | grain, pebble |
| ๅทป | maki | rolled object |
| ๅ | saku | booklet |
| ้ | jou | pill |
| ้ป | seki | boat, ship |
| ๆ | taba | bundle, bunch |
| ไฝ | karada | form, statue |
| ่ข | fukuro | bag |
| ๅผต | chou / hari | stretched |
| ๆฏ | hai | cup |
| ๅน | biki | (small) animal |
| ๅ | hin | object |
Unit โ
The unit column defines the physical form of the object.
| Value | Value | Value |
|---|---|---|
| bottle | box | bucket |
| bundle | can | chunk |
| feather | gift box | grand cross |
| grimoire | handful | letter |
| painting | pair | piece |
| pinch | poster | pot |
| rod | set | signboard |
| spellbook | staff | statue |
| syringe | tree | tuft |
| whip | whistle |
Tile Type โ
The _tileType column controls how the object is displayed on the map.
| Type | Behavior |
|---|---|
| ObjBig | Blocks movement. |
| ObjHuge | Blocks movement. |
| Door | Requires a wall; acts as a door/opening. |
| Slope | Changes movement speed when traversing up/down. |
| Stairs | Like Slope but with a more dramatic speed/height change. |
| Paint | Requires a wall to attach to. |
| WallHang | Requires a wall to attach to. |
| Window | Requires a wall; hides when windows are hidden (e.g. when inside the building). |
idRenderData โ
The _idRenderData column controls how the object sits on the ground and its clipping behavior.
@obj โ Custom Texture (Non-Replacement) โ
Used for custom items not using Texture Replacement:
- File name must match the
idexactly. - Use lowercase
.pngextension (.PNGwill not work). - Place in the
Texturefolder of your mod.
obj โ Texture Replacement โ
Used for items using Texture Replacement. This occupies a tile slot in the Texture Viewer and may collide with other mods:
- File name format:
obj_tileID(e.g.objS_5032). - Use lowercase
.pngextension. - Place in the
Texture Replacefolder of your mod.
Snow Variants โ
| Type | Non-Replacement (@obj) | Replacement (obj) |
|---|---|---|
| Regular | ID.png | obj_123.png |
| Snow | ID_snow.png | objSnow_123.png |
| Small | โ | objS_456.png |
| Small Snow | โ | objSSnow_456.png |
Factory โ
The factory column defines where the item is crafted. Leave blank if the item is not craftable by the player.
| In-Game Name | Value |
|---|---|
| Quick Craft | self |
| Workbench | workbench |
| Tinker's Table | factory_tinker |
| Drafting Table | workbench2 |
| Signboard Workshop | factory_sign |
| Carpenter's Table | factory_wood |
| Blacksmith's Table | factory_metal |
| Anvil | anvil |
| Machine Table | machinebench |
| Mason's Table | factory_stone |
| Glassmaker's Table | factory_glass |
| Accessory Table | factory_accessory |
| Loom | loom |
| Writing Tool | tool_writing |
| Stove | stove |
Components โ
The components column defines crafting ingredients.
| Syntax | Meaning | Example |
|---|---|---|
tag/N | Requires N items with the given material tag. | rock/10 โ 10 rock materials. |
| | "Or" โ choose one of the options. | rock/2|ingot โ 2 rocks or 2 ingots. |
#category | Requires choosing an item from your inventory matching the category. | #book โ pick any book from your inventory. |
Examples โ
Well: rock/10,rope/3,log/2 โ 10 rock materials, 3 ropes, 2 logs.
Sickle: rock/2|ingot,string/1,stick/1 โ 2 rocks OR 2 ingots, 1 string, 1 stick.
Bookshelf: plank/4,#book,#book โ 4 planks, 2 books of your choice.
Trait โ
The trait column defines special behaviors. For container-type objects, use the format:
Container,rows,columns,backgroundImage,specialNotes| Example | Meaning |
|---|---|
beekeep,2,2,crate,honey | 2ร2 container with crate background, holds honey. |
ChestPractice,7,5,crate | 7ร5 container with crate background. |
Light Data โ
The lightData column defines the light emission appearance.
| Value |
|---|
altar_machine |
bonfire |
fireplace |
fridge |
gacha |
general |
kiln |
lamp_sun |
lamp_table |
light_floor |
light_spot |
light_stand |
light_wall |
Ambient Effects โ
The idActorEx column defines ambient effects around the object.
| Value | Effect |
|---|---|
amb_boat | Boat ambiance. |
amb_crowd | Crowd noise. |
amb_fire | Fire crackling. |
amb_fountain | Fountain sounds. |
amb_smelter | Smelter sounds. |
Tags โ
The tag column assigns built-in behavior flags.
Some tags, not all:
| Tag | Effect |
|---|---|
exotic | Considered an exotic item. |
godArtifact | Treated as a god artifact. See Religion |
noWish | Cannot be obtained via wishing. |
tourism | Counts as a tourism item. |
rareResource | Considered a rare resource. |
snowTile | Prefers snow tiles (optional if snow obj variants are set up). |
throwWeapon | Returns after being thrown (like a boomerang). |
noCopy | Cannot be copied. |
noShop | Does not appear in the corresponding type of shop. |
fixedElement | Fixed elements enchantment value. |
randomElement | Random elements enchantment value. |
Ranged Weapon โ
Sometimes you want to customize some data for your ranged weapon. The gun data is a JSON file located in your LangMod/**/Data/ folder, named EffectSetting.guns.json.
{
"biubiu_gun": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "gunfire",
"IdSprite": "ranged_gun",
"IdSound": "attack_gun",
"IdSoundEject": "bullet_drop",
"Eject": true,
"FirePos": {
"x": 0.23,
"y": 0.04
},
"CaneColor": "",
"CaneColorBlend": false,
"ForceLaser": false,
"ForceRail": false,
}
}This will import a gun data named biubiu_gun, which should match your ranged weapon ID. You can also use an existing weapon ID in the game to override it.
Here are the existing gun data in game:
Gun Data
{
"gun": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "gunfire",
"IdSprite": "ranged_gun",
"IdSound": "attack_gun",
"IdSoundEject": "bullet_drop",
"Eject": true,
"FirePos": {
"x": 0.23,
"y": 0.04
}
},
"gun_assault": {
"Num": 3,
"Delay": 0.1,
"IdEffect": "gunfire",
"IdSprite": "ranged_gun",
"IdSound": "attack_gun_assault",
"IdSoundEject": "bullet_drop",
"Eject": true,
"FirePos": {
"x": 0.48,
"y": 0.04
}
},
"bow": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "ranged_arrow",
"IdSound": "attack_bow",
"Eject": false,
"FirePos": {}
},
"gun_rail": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "",
"IdSound": "attack_gun_rail",
"Eject": false,
"FirePos": {}
},
"cane": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "ranged_cane",
"IdSound": "attack_cane",
"Eject": false,
"FirePos": {}
},
"windbow": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "ranged_arrow_wind",
"IdSound": "attack_windbow",
"Eject": false,
"FirePos": {}
},
"gun_mani": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "ranged_gun",
"IdSound": "attack_gun_shotgun",
"IdSoundEject": "bullet_drop",
"Eject": true,
"FirePos": {
"x": 0.23,
"y": 0.04
}
},
"gun_laser": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "",
"IdSound": "attack_gun_laser",
"Eject": false,
"FirePos": {}
},
"panzerfaust": {
"Num": 1,
"Delay": 0.01,
"IdEffect": "gunfire",
"IdSprite": "ranged_gun_rocket",
"IdSound": "attack_gun_rocket",
"Eject": false,
"FirePos": {}
},
"gun_laser_assault": {
"Num": 3,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "ranged_gun_laser",
"IdSound": "attack_gun_laser_assault",
"Eject": false,
"FirePos": {
"x": 0.28,
"y": 0.2
}
},
"shotgun": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "ranged_fun",
"IdSound": "attack_gun_shotgun",
"Eject": false,
"FirePos": {
"x": 0.3,
"y": 0.18
}
},
"sling": {
"Num": 1,
"Delay": 0.1,
"IdEffect": "",
"IdSprite": "ranged_stone",
"IdSound": "throw",
"Eject": false,
"FirePos": {}
}
}Numis the number of shots in a burst.Delayis the animation delay in seconds.IdEffectis the ID of the muzzle effect. You may use Custom Effect. Default value isgunfire. Lasers and canes don't use this value.IdSpriteis the name of the projectile texture, which needs to be an existing texture in the game or a texture you placed in the Texture folder. Lasers don't use this value.IdSoundis the ID of the firing sound. You may use Custom Sound. This can be set for all types of guns.IdSoundEjectis the ID of the ejecting sound. You may use Custom Sound. This can be set for all types of guns.Ejectdetermines whether there is a shell eject animation. This can be set for all types of guns.FirePosis the position offset of the muzzle effect relative to the center of the weapon. This can be set for all types of guns.CaneColoris the optional tint override for cane type weapons, leave blank to use weapon's default element's color. The format isRRGGBBhex string. Only guns with traitToolRangeCanecan use this value.CaneColorBlendenables default color and override color blending for cane type weapons. Only guns with traitToolRangeCanecan use this value.ForceLaserforces the gun to use laser animation(added in 23.206 Nightly). This is not needed if gun has traitToolRangeGunEnergy.ForceRailforces the gun to use railgun animation. This is no longer the default behaviour for guns with traitToolRangeGunEnergy.
Any value that you wish to use default for, can be omitted.
You may add as many gun data as you want in this file, simply separate them by , comma, such as:
{
"biubiu_gun": {
data
},
"rainbow_wand": {
data
}
}Gun Sockets โ
You can specify gun sockets by using the tag addSocket and addSocket(enchant_alias) in the Thing sheet. For example, addSocket,addSocket,addSocket(bane_god) will ensure 2 empty sockets and 1 socket with enchant God Bane will be added.
You can also use noRandomSocket tag to remove all random generated sockets before applying your own.