-
Notifications
You must be signed in to change notification settings - Fork 4
Attributes and properties
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
TagsCombineis 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:
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:
attachedShapeattachedShapeBySlotCodecategoryCodedisableElementskeepElements
- Only properties inside this property can be used for pattern matching
- Can only be used as
STFA_attachableToEntity, becauseattachableToEntityis already used by the base gametexturePrefixCodeis 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 gamehandbook: groupBy) -
wildcardForGrouping(similar functionality to base gamehandbook: groupBy)
- Only properties inside this property can be used for pattern matching
- Can only be used as
STFA_handbook, becausehandbookis 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}"
}
}