Skip to content

Attributes and properties

Dana edited this page Apr 21, 2026 · 11 revisions

Important

Make sure to familiarize yourself with the library's syntax: Attribute‐based Matching

Here are listed all "attributes" and "properties" that are implemented for attribute-based items and blocks.

See Wearable behavior properties for wearable-specific properties.

If you need to set any attribute like in normal "attributes", but want to do it per type, read about ARL attributes.

Note

Behaviors use "properties": { } only and ignore "attributes": { }.

Property Used for Used in
Tags Blocks / Items Behavior properties / Attributes
TagsCombine Blocks / Items Behavior properties / Attributes
Shape Blocks / Items Behavior properties / Attributes
ShapeInventory Blocks Behavior properties
ShapeIgnoreElements Blocks / Items Behavior properties / Attributes
ShapeSelectiveElements Blocks / Items Behavior properties / Attributes
ShapeIgnoreElementsCombine Blocks / Items Behavior properties / Attributes
ShapeSelectiveElementsCombine Blocks / Items Behavior properties / Attributes
Textures Blocks / Items Behavior properties / Attributes
TexturesInventory Blocks Behavior properties
Name Blocks / Items Behavior properties / Attributes
Description Blocks / Items Behavior properties / Attributes
ContainedName Blocks / Items Behavior properties / Attributes
ContainedDescription Blocks / Items Behavior properties / Attributes
LightHsv Blocks / Items Behavior properties / Attributes
StorageFlags Blocks / Items Behavior properties / Attributes
Durability Blocks / Items Behavior properties / Attributes
AttackPower Blocks / Items Behavior properties / Attributes
AttackRange Blocks / Items Behavior properties / Attributes
MiningSpeed Blocks / Items Behavior properties / Attributes
DamagedBy Blocks / Items Behavior properties / Attributes
Tool Blocks / Items Behavior properties / Attributes
ToolTier Blocks / Items Behavior properties / Attributes
CombustibleProps Blocks / Items Behavior properties / Attributes
NutritionProps Blocks / Items Behavior properties / Attributes
GrindingProps Blocks / Items Behavior properties / Attributes
CrushingProps Blocks / Items Behavior properties / Attributes
TransitionableProps Blocks / Items Behavior properties / Attributes
JuiceableProperties Blocks / Items Behavior properties / Attributes
DistillationProps Blocks / Items Behavior properties / Attributes
HeldLeftReadyAnimation Blocks / Items Behavior properties / Attributes
HeldLeftTpIdleAnimation Blocks / Items Behavior properties / Attributes
HeldRightReadyAnimation Blocks / Items Behavior properties / Attributes
HeldRightTpIdleAnimation Blocks / Items Behavior properties / Attributes
HeldTpHitAnimation Blocks / Items Behavior properties / Attributes
HeldTpUseAnimation Blocks / Items Behavior properties / Attributes
AttachableToEntity Blocks / Items Behavior properties / Attributes
Drops Blocks Behavior properties
RequiredMiningTier Blocks Behavior properties
BlockMaterial Blocks Behavior properties
LiquidBarrierOnSides Blocks Behavior properties
CollisionBoxes Blocks Behavior properties
SelectionBoxes Blocks Behavior properties
CollisionSelectionBoxes Blocks Behavior properties
Handbook Blocks / Items Behavior properties / Attributes
Tags

Item / block tags that are used in recipes etc.

If not set or nothing matched, then TagsCombine is used.

Example:

"tags": {
    "key-value": [ "tag1", "tag2", "tag3" ],
    "key2-value2": [ "tag1", "tag2" ] 
}
TagsCombine

Item / block tags that are used in recipes etc.

Combines values of all matched keys!

Example:

"tags": {
    "key-value": [ "tag1" ],
    "key2-value2": [ "tag2" ], 
    "@key3-(value3|value4)": [ "tag3", "tag4" ], 
}
Shape

Model of the item / block (placed).

Value example / Available values

Example:

"shape": {
    "key-value": { "base": "path/to/shape" },
    "key2-value2": { "base": "path/to/shape/2" }
}
ShapeInventory

Model of the held block (when in hand, dropped or in gui slot)

Value example / Available values

Example:

"shapeInventory": {
    "key-value": { "base": "path/to/inventory/shape" },
    "key2-value2": { "base": "path/to/inventory/shape/2" }
}
ShapeIgnoreElements

If set will not tesselate elements with given name in the item/block model.

Gets combined with Shape.IgnoreElements!

Example:

"shapeIgnoreElements": {
    "key-value": [ "ignored/elements" ],
    "key2-value2": [ "ignored/elements", "more/ignored/elements" ]
}
ShapeSelectiveElements

If set will only tesselate elements with given name in the item/block model.

Gets combined with Shape.SelectiveElements!

Example:

"shapeSelectiveElements": {
    "key-value": [ "selected/elements" ],
    "key2-value2": [ "selected/elements", "more/selected/elements" ]
}
ShapeIgnoreElementsCombine

If set will not tesselate elements with given name in the item/block model.

Combines values of all matched keys!

Example:

"ShapeIgnoreElementsCombine": {
    "key-value": [ "ignored/elements" ],
    "key2-value2": [ "ignored/elements", "more/ignored/elements" ]
}
ShapeSelectiveElementsCombine

If set will only tesselate elements with given name in the item/block model.

Combines values of all matched keys!

Example:

"shapeSelectiveElementsCombine": {
    "key-value": [ "selected/elements" ],
    "key2-value2": [ "selected/elements", "more/selected/elements" ]
}
Textures

Textures of the item / block.

Value example / Available values

Example:

"textures": {
    "key-value": {
    	"charcoal": { "base": "block/coal/charcoal" },
	    "coke": { "base": "block/coal/coke" },
	    "ore-anthracite": { "base": "block/coal/anthracite" },
	    "ore-lignite": { "base": "block/coal/lignite" },
	    "ore-bituminouscoal": { "base": "block/coal/bituminous" },
	    "ember": { "base": "block/coal/ember" }
    },
    "key2-value2": {
    	"charcoal": { "base": "block/coal/charcoal" },
	    "coke": { "base": "block/coal/coke" },
	    "ore-anthracite": { "base": "block/coal/anthracite" },
	    "ore-lignite": { "base": "block/coal/lignite" },
	    "ore-bituminouscoal": { "base": "block/coal/bituminous" },
	    "ember": { "base": "block/coal/ember" }
    }
}
TexturesInventory

Textures of the held block (when in hand, dropped or in gui slot)

Value example / Available values

Example:

"texturesInventory": {
    "key-value": {
    	"charcoal": { "base": "block/coal/charcoal" },
	    "coke": { "base": "block/coal/coke" },
	    "ore-anthracite": { "base": "block/coal/anthracite" },
	    "ore-lignite": { "base": "block/coal/lignite" },
	    "ore-bituminouscoal": { "base": "block/coal/bituminous" },
	    "ember": { "base": "block/coal/ember" }
    },
    "key2-value2": {
    	"charcoal": { "base": "block/coal/charcoal" },
	    "coke": { "base": "block/coal/coke" },
	    "ore-anthracite": { "base": "block/coal/anthracite" },
	    "ore-lignite": { "base": "block/coal/lignite" },
	    "ore-bituminouscoal": { "base": "block/coal/bituminous" },
	    "ember": { "base": "block/coal/ember" }
    }
}
Name

Name of the item / block.

Example:

"name": {
    "key-value": [ "name", "with", " (", "something", ")" ], // output: "name with (something)"
    "key2-value2": [ "made", "from", " (",, ["Metal: {0}", "{metal}" ], ")" ], // output: "made from (Metal: copper)"
}
Description

Description of the item / block.

Example:

"description": {
    "key-value": [ "description", "with", " (", "something", ")" ], // output: "description with (something)"
    "key2-value2": [ "made", "from", " (",, ["Metal: {0}", "{metal}" ], ")" ], // output: "made from (Metal: copper)"
}
ContainedName

Name of the collectible when stored in container like ground storage etc.

Example:

"containedName": {
    "key-value": [ "name", "with", " (", "something", ")" ], // output: "name with (something)"
    "key2-value2": [ "made", "from", " (",, ["Metal: {0}", "{metal}" ], ")" ], // output: "made from (Metal: copper)"
}
ContainedDescription

Description of the collectible when stored in container like ground storage etc.

Example:

"containedDescription": {
    "key-value": [ "description", "with", " (", "something", ")" ], // output: "description with (something)"
    "key2-value2": [ "made", "from", " (",, ["Metal: {0}", "{metal}" ], ")" ], // output: "made from (Metal: copper)"
}
LightHsv

For light emitting collectibles: hue, saturation and brightness value.

Value example / Available values

Example:

"lightHsv": {
    "key-value": [ 7, 3, 18 ],
    "key2-value2": [ 7, 3, 20 ]
}
StorageFlags

Determines in which kind of bags the item can be stored in.

Value example / Available values

Example:

"storageFlags": {
    "key-value": 128,
    "key2-value2": 80
}
Durability

How many uses does this collectible has when being used. Item disappears at durability 0.

Example:

"durability": {
    "key-value": 100,
    "key2-value2": 200
}
AttackPower

How much damage this collectible deals when used as a weapon.

Example:

"attackPower": {
    "key-value": 1.5,
    "key2-value2": 5
}
AttackRange

Until how for away can you attack entities using this collectible.

Example:

"attackRange": {
    "key-value": 5,
    "key2-value2": 3
}
MiningSpeed

Modifies how fast the player can break a block when holding this item.

Value example / Available values

Example:

"miningSpeed": {
    "key-value": {
	    "wood": 4,
	    "plant": 2.6,
	    "leaves": 2.2
    },
    "key2-value2": {
	    "wood": 5.2,
	    "plant": 2.8,
	    "leaves": 2.4
    }
}
DamagedBy

From which damage sources does the item takes durability damage.

Value example / Available values

Example:

"damagedBy": {
    "key-value": ["blockbreaking", "attacking"],
    "key2-value2": ["blockbreaking"]
}
Tool

If set, this item will be classified as given tool

Value example / Available values

Example:

"tool": {
    "key-value": "Axe",
    "key2-value2": "Pickaxe"
}
ToolTier

What block tier this tool can mine when held in hands

Example:

"toolTier": {
    "key-value": 2,
    "key2-value2": 4
}
CombustibleProps

Information about the burnable states.

Value example / Available values

Example:

"combustibleProps": {
    "key-value": {
        "meltingPoint": 1063,
        "meltingDuration": 30,
        "smeltedRatio": 20,
        "smeltedStack": { "type": "item", "code": "game:ingot-gold" }
    },
    "key2-value2": {
        "burnTemperature": 600,
        "burnDuration": 10
    }
}
NutritionProps

Information about the nutrition states.

Value example / Available values

Example:

"nutritionProps": {
    "key-value": {
        "satiety": 1000,
        "health": 0,
        "foodcategory": "Protein"
    },
    "key2-value2": {
        "satiety": 250,
        "foodcategory": "Vegetable"
    }
}
GrindingProps

If set, the collectible can be ground into something else.

Value example / Available values

Example:

"grindingProps": {
    "key-value": {
        "groundStack": { "type": "item", "code": "game:flour-flax" }
    },
    "key2-value2": {
        "groundStack": { "type": "item", "code": "game:powder-charcoal" }
    }
}
CrushingProps

If set, the collectible can be crushed into something else.

Value example / Available values

Example:

"crushingProps": {
    "key-value": {
        "crushedStack": { "type": "item", "code": "game:crushed-quartz", "stacksize": 1 },
        "hardnessTier": 2
    },
    "key2-value2": {
        "crushedStack": { "type": "item", "code": "game:crushed-galena" },
        "quantity": { "avg": 0.33 },
        "hardnessTier": 1
    }
}
TransitionableProps

Information about the transitionable states.

Value example / Available values

Example:

"transitionableProps": {
    "key-value": [
        {
            "type": "Dry",
            "freshHours": { "avg": 0 },
            "transitionHours": { "avg": 1 },
            "transitionedStack": { "type": "item", "code": "game:bandage-clean" },
            "transitionRatio": 1
        }
    ],
    "key2-value2": [
        {
            "type": "Ripen",
            "freshHours": { "avg": 0 },
            "transitionHours": { "avg": 336 },
            "transitionedStack": { "type": "item", "code": { "game:cheese-cheddar-4slice" } },
            "transitionRatio": 1
        },
        {
            "type": "Perish",
            "freshHours": { "avg": 360 },
            "transitionHours": { "avg": 168 },
            "transitionedStack": { "type": "item", "code": "rot" },
            "transitionRatio": 4
        }
    ]
}
JuiceableProperties

If set, the collectible can be juiced / pressed into something else in a fruitpress.

Example:

"juiceableProperties": {
    "key-value": {
        "litresPerItem": 0.3125,
        "liquidStack": { "type": "item", "code": "game:oilportion-olive", "stacksize": 1 },
        "pressedStack": { "type": "item", "code": "game:pressedmash-olive", "stacksize": 1 }
    },
    "key2-value2": {
        "liquidStack": { "type": "item", "code": "honeyportion", "stacksize": 1 },
        "pressedStack": { "type": "item", "code": "honeymash", "stacksize": 1 },
        "returnStack": { "type": "item", "code": "beeswax", "stacksize": 5 }
    }
}
DistillationProps

If set, the collectible can be distilled into something else in a boiler and condenser.

Example:

"distillationProps": {
    "key-value": {
        "distilledStack": { "type": "item", "code": "game:spiritportion-mead" },
        "ratio": 0.05
    },
    "key2-value2": {
        "distilledStack": { "type": "item", "code": "game:spiritportion-spelt" },
        "ratio": 0.05
    }
}
HeldLeftReadyAnimation

Example:

"heldLeftReadyAnimation": {
    "key-value": "animcode",
    "key2-value2": "animcode2"
}
HeldLeftTpIdleAnimation

The animation to play in 3rd person mod when holding this collectible in the left hand.

Example:

"heldLeftTpIdleAnimation": {
    "key-value": "holdinglanternlefthand",
    "key2-value2": "holdinglanternlefthand"
}
HeldRightReadyAnimation

Example:

"heldRightReadyAnimation": {
    "key-value": "heldblockready",
    "key2-value2": "helditemreadyslant"
}
HeldRightTpIdleAnimation

The animation to play in 3rd person mod when holding this collectible in the right hand.

Example:

"heldRightTpIdleAnimation": {
    "key-value": "holdinglanternrighthand",
    "key2-value2": "holdinglanternrighthand"
}
HeldTpHitAnimation

The animation to play in 3rd person mod when hitting with this collectible.

Example:

"heldTpHitAnimation": {
    "key-value": "breaktool",
    "key2-value2": "knap"
}
HeldTpUseAnimation

The animation to play in 3rd person mod when using this collectible.

Example:

"heldTpUseAnimation": {
    "key-value": "twohandplaceblock",
    "key2-value2": "water"
}
AttachableToEntity

Properties that can be used in this property:

  • attachedShape
  • attachedShapeBySlotCode
  • categoryCode
  • disableElements
  • keepElements
  • Only properties inside this property can be used for pattern matching
  • Can only be used as STFA_attachableToEntity, because attachableToEntity is already used by the base game
  • texturePrefixCode is already properly handled in the code and will be ignored if used here

Example:

"STFA_attachableToEntity": {
    "categoryCode": {
        "type-crock": "pot",
        "type-gear": "gear"
    },
    "attachedShape": {
        "type-caparison": { "base": "game:item/wearable/hooved/elk/caparison" }
    },
    "attachedShapeBySlotCode": {
        "type-crock": {
            "frontrightside": { "base": "game:item/wearable/hooved/elk/crockr" },
            "frontleftside": { "base": "game:item/wearable/hooved/elk/crockl" }
        },
        "type-gear": {
			"gearleft": { "base": "game:item/wearable/hooved/elk/tempgear1" },
			"gearback": { "base": "game:item/wearable/hooved/elk/tempgear2" },
			"gearright": { "base": "game:item/wearable/hooved/elk/tempgear3" }
        }
    },
    "disableElements": {
        "key-value": [ "hideElement\GroupA" ],
        "key2-value2": [ "hideElement", "elementA", "elementB" ]
    },
    "keepElements": {
        "key-value": [ "keepElement\GroupA" ],
        "key2-value2": [ "keepElement", "elementA", "elementB" ]
    }
}
Drops

The items that should drop from breaking this block.

Value example / Available values

Example:

"drops": {
    "key-value": [
        { "type": "item", "code": "game:honeycomb", "quantity": { "avg": 3 } }
    ],
    "key2-value2": [
        { "type": "item", "code": "game:stick", "quantity": { "avg": 9, "var": 0 } }
    ]
}
RequiredMiningTier

The mining tier required to break this block.

Example:

"requiredMiningTier": {
    "key-value": 2,
    "key2-value2": 5
}
BlockMaterial

A way to categorize blocks. Used for getting the mining speed for each tool type, amongst other things.

Value example / Available values

Example:

"blockMaterial": {
    "key-value": "Leaves",
    "key2-value2": "Metal"
}
LiquidBarrierOnSides

Set a decimal between 0.0 and 1.0 to determine if this block is solid enough to block liquid flow on that side - how high the barrier is.

Example:

"liquidBarrierOnSides": {
    "key-value": [0.5, 0.5, 0.5, 0.5],
    "key2-value2": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]
}
CollisionBoxes

Used to define custom block collisions.

Example:

"collisionBoxes": {
    "key-value": [
        { "x1": 0, "y1": 0, "z1": 0, "x2": 1, "y2": 1, "z2": 0.0625 },
        { "x1": 0, "y1": 0, "z1": 0.9375, "x2": 1, "y2": 1, "z2": 1 },
        { "x1": 0, "y1": 0, "z1": 0.0625, "x2": 0.0625, "y2": 1, "z2": 0.9375 },
        { "x1": 0.9375, "y1": 0, "z1": 0.0625, "x2": 1, "y2": 1, "z2": 0.9375 }
    ],
    "key2-value2": [
        { "x1": 0, "y1": 0, "z1": 0, "x2": 1, "y2": 1, "z2": 0.0625 },
        { "x1": 0, "y1": 0, "z1": 0.9375, "x2": 1, "y2": 1, "z2": 1 },
        { "x1": 0, "y1": 0, "z1": 0.0625, "x2": 0.0625, "y2": 1, "z2": 0.9375 },
        { "x1": 0.9375, "y1": 0, "z1": 0.0625, "x2": 1, "y2": 1, "z2": 0.9375 }
    ]
}
SelectionBoxes

Used to define custom block hitbox.

Example:

"selectionBoxes": {
    "key-value": [
        { "x1": 0, "y1": 0, "z1": 0, "x2": 1, "y2": 1, "z2": 0.95 },
        { "x1": 0.25, "y1": 0.28125, "z1": 0.95, "x2": 0.75, "y2": 0.875, "z2": 1 }
    ],
    "key2-value2": [
        { "x1": 0, "y1": 0, "z1": 0, "x2": 1, "y2": 1, "z2": 0.95 },
        { "x1": 0.25, "y1": 0.28125, "z1": 0.95, "x2": 0.75, "y2": 0.875, "z2": 1 }
    ]
}
CollisionSelectionBoxes

Used to overwrite both collisionBoxes and selectionBoxes for blocks.

Example:

"collisionSelectionBoxes": {
    "key-value": [
        { "x1": 0.175, "y1": 0, "z1": 0.25, "x2": 0.625, "y2": 0.3125, "z2": 0.75 },
        { "x1": 0, "y1": 0.275, "z1": 0.325, "x2": 1.025, "y2": 0.625, "z2": 0.6875 }
    ],
    "key2-value2": [
        { "x1": 0.175, "y1": 0, "z1": 0.25, "x2": 0.625, "y2": 0.3125, "z2": 0.75 },
        { "x1": 0, "y1": 0.275, "z1": 0.325, "x2": 1.025, "y2": 0.625, "z2": 0.6875 }
    ]
}
Handbook

Allows to override how item/block behaves in handbook.

Properties that can be used in this property:

  • pageCode (for custom pages and/or redirecting "open handbook" event to other stacks)
  • codeForGrouping (similar functionality to base game handbook: groupBy)
  • wildcardForGrouping (similar functionality to base game handbook: groupBy)
  • Only properties inside this property can be used for pattern matching
  • Can only be used as STFA_handbook, because handbook is already used by the base game

Example:

"STFA_handbook": {
    "pageCode": {
        "key-value": "craftinginfo-pie",
        "key2-value2": "modid:item-something-{ types: { wood: oak } }"
    },
    "codeForGrouping": {
        "key-value": "item-example-*",
        "key2-value2": "item-example-wood-{wood}-metal-{metal}"
    },
    "wildcardForGrouping": {
        "key-value": "item-example-*",
        "key2-value2": "item-example-wood-{wood}-metal-{metal}"
    }
}

Clone this wiki locally