Skip to content

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 โ€‹

ColumnTypeDescription
idstringUnique identifier for the item.
name_JPstringDisplay name in Japanese.
namestringDisplay name in English.
unknown_JPstringJapanese name of high-quality items when unidentified. Can also be a special property, e.g.: #randomBook, #randomPotion.
unit_JPstringJapanese counter word for the object. See Unit JP below.
unitstringPhysical form of the object. See Unit below.
unknownstringEnglish name of high-quality items when unidentified. Can also be a special property, e.g.: #randomBook, #randomPotion.
categorystringCategory the item belongs to. Used for auto-dumping and recipe menus (linked to the Category sheet).
sortintSort order. E.g. 2200 places it in the bow range.
_tileTypestringHow the object is displayed on the map. See Tile Type below.
_idRenderDatastringHow the object sits on the ground and its clipping. See idRenderData below.
tilesintReplacement texture tile ID(s). Multiple tiles follow: front โ†’ front reversed โ†’ back โ†’ back reversed. E.g. 123,-123,456,-456.
altTilesintVariant tiles for alternate states (e.g. a closed chest with contents inside).
animeint[]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.
skinsintSkin variant reference. When the idRenderData column uses the @obj and Sprite Variations is used, this column does not need to be filled in.
sizeint[]Grid size for large objects: height,width.
colorModintColor saturation modifier.
colorTypestringColor source: default (first crafting ingredient), alt (secondary), or random.
recipeKeystringHow the recipe is acquired: * = known by default; a character ID = sold by that character.
factorystringCrafting station where the item is made. See Factory below.
componentsstringCrafting ingredients. See Components below.
disassemblestringItems produced when disassembled.
defMatstringDefault material (e.g. oak). Determines the icon/preview color.
tierGroupstringTier grouping for upgrade/progression.
valueintBase sell value in orens.
LVintCrafting skill level required.
chancestringSpawn or generation chance modifier.
qualityintItem quality tier. The โ˜† and โ˜… are determined by the quality column. (To be supplemented)
weightintItem weight. E.g. seed = 30, rod = 500, bed = 4500, piano = 85000.
electricityintPower draw. Negative values consume electricity (e.g. monitor = -10).
traitstringSpecial behaviors. See Trait below.
elementsstringElement aliases from the Element sheet with /level. E.g. lumberjack/4 displays as Lumberjack [****].
rangeintWeapon range in tiles. E.g. short bow = 1, bow = 3, rail gun = 5.
attackTypestringDamage/weapon type: Blunt, Bow, Cane, Claw, Gun, Pierce, Punch, Slash.
offenseint[4]Offensive stats (4 values).
substatsintSub-stat modifiers.
defenseint[2]Defensive stats: DV,PV.
lightDatastringLight emission preset. See Light Data below.
idExtrastringAdditional render data reference.
idToggleExtrastringToggleable render data (e.g. on/off lighting).
idActorExstringAmbient effect around the object. See Ambient Effects below.
idSoundstringSound played when crafting: glass, money, paper, etc.
tagstringBuilt-in behavior flags. See Tags below.
workTagstringWork-related tags.
filterstringGeneration sources outside crafting: fish, gacha, supply, etc. Used by CreateFromFilter to randomly generate items.
roomNameJPstringRoom type definition in Japanese. Multiple entries separated by commas.
roomNamestringRoom type definition in English. E.g. Bedroom or Kitchen,Dining Room.
detail_JPstringItem description in Japanese. Shown above the stat info in-game.
detailstringItem 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.

CharacterRomajiMeaning
ๅกŠkatamaricluster, clump
ๆŒฏใ‚Šfurihandheld, melee
ๅฏพtaipair (e.g. gloves)
ๅฐdaimachine, pedestal, harp
ๆŒบteilong narrow object (e.g. gun, scissors, hoe)
็™บhatsuammo
ๆœฌhonbase, body, object
ๆžšmaisheet
็ฒ’tsubugrain, pebble
ๅทปmakirolled object
ๅ†Šsakubooklet
้Œ joupill
้šปsekiboat, ship
ๆŸtababundle, bunch
ไฝ“karadaform, statue
่ข‹fukurobag
ๅผตchou / haristretched
ๆฏhaicup
ๅŒนbiki(small) animal
ๅ“hinobject

Unit โ€‹

The unit column defines the physical form of the object.

ValueValueValue
bottleboxbucket
bundlecanchunk
feathergift boxgrand cross
grimoirehandfulletter
paintingpairpiece
pinchposterpot
rodsetsignboard
spellbookstaffstatue
syringetreetuft
whipwhistle

Tile Type โ€‹

The _tileType column controls how the object is displayed on the map.

TypeBehavior
ObjBigBlocks movement.
ObjHugeBlocks movement.
DoorRequires a wall; acts as a door/opening.
SlopeChanges movement speed when traversing up/down.
StairsLike Slope but with a more dramatic speed/height change.
PaintRequires a wall to attach to.
WallHangRequires a wall to attach to.
WindowRequires 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 id exactly.
  • Use lowercase .png extension (.PNG will not work).
  • Place in the Texture folder 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 .png extension.
  • Place in the Texture Replace folder of your mod.

Snow Variants โ€‹

TypeNon-Replacement (@obj)Replacement (obj)
RegularID.pngobj_123.png
SnowID_snow.pngobjSnow_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 NameValue
Quick Craftself
Workbenchworkbench
Tinker's Tablefactory_tinker
Drafting Tableworkbench2
Signboard Workshopfactory_sign
Carpenter's Tablefactory_wood
Blacksmith's Tablefactory_metal
Anvilanvil
Machine Tablemachinebench
Mason's Tablefactory_stone
Glassmaker's Tablefactory_glass
Accessory Tablefactory_accessory
Loomloom
Writing Tooltool_writing
Stovestove

Components โ€‹

The components column defines crafting ingredients.

SyntaxMeaningExample
tag/NRequires 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.
#categoryRequires 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
ExampleMeaning
beekeep,2,2,crate,honey2ร—2 container with crate background, holds honey.
ChestPractice,7,5,crate7ร—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.

ValueEffect
amb_boatBoat ambiance.
amb_crowdCrowd noise.
amb_fireFire crackling.
amb_fountainFountain sounds.
amb_smelterSmelter sounds.

Tags โ€‹

The tag column assigns built-in behavior flags.

Some tags, not all:

TagEffect
exoticConsidered an exotic item.
godArtifactTreated as a god artifact. See Religion
noWishCannot be obtained via wishing.
tourismCounts as a tourism item.
rareResourceConsidered a rare resource.
snowTilePrefers snow tiles (optional if snow obj variants are set up).
throwWeaponReturns after being thrown (like a boomerang).
noCopyCannot be copied.
noShopDoes not appear in the corresponding type of shop.
fixedElementFixed elements enchantment value.
randomElementRandom 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.

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
json
{
    "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": {}
    }
}
  • Num is the number of shots in a burst.
  • Delay is the animation delay in seconds.
  • IdEffect is the ID of the muzzle effect. You may use Custom Effect. Default value is gunfire. Lasers and canes don't use this value.
  • IdSprite is 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.
  • IdSound is the ID of the firing sound. You may use Custom Sound. This can be set for all types of guns.
  • IdSoundEject is the ID of the ejecting sound. You may use Custom Sound. This can be set for all types of guns.
  • Eject determines whether there is a shell eject animation. This can be set for all types of guns.
  • FirePos is the position offset of the muzzle effect relative to the center of the weapon. This can be set for all types of guns.
  • CaneColor is the optional tint override for cane type weapons, leave blank to use weapon's default element's color. The format is RRGGBB hex string. Only guns with trait ToolRangeCane can use this value.
  • CaneColorBlend enables default color and override color blending for cane type weapons. Only guns with trait ToolRangeCane can use this value.
  • ForceLaser forces the gun to use laser animation(added in 23.206 Nightly). This is not needed if gun has trait ToolRangeGunEnergy.
  • ForceRail forces the gun to use railgun animation. This is no longer the default behaviour for guns with trait ToolRangeGunEnergy.

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:

json
{
    "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.

This project is an unofficial documentation site and is not affiliated with, endorsed by, or associated with Elin or Lafrontier / Noa. All trademarks are the property of their respective owners.