Factorio.com|Forums|Wiki|Mod Portal|API Docs

# Factorio Prototype Docs Version 2.0.77

# DecorativePrototype - Prototype Docs

## DecorativePrototype 'optimized-decorative'

Simple decorative purpose objects on the map, they have no health and some of them are removed when the player builds over. Usually used for grass patches, roots, small plants etc.

Prototype limited to 65535 total instances.

Inherits from Prototype « PrototypeBase

## Properties

- default
- sorted

pictures | :: SpriteVariations | Must contain at least 1 picture.
Must contain at least 1 picture.
stateless_visualisation optional | :: StatelessVisualisation or array[StatelessVisualisation] | Can be defined only when decorative is not "decal" (see `render_layer`).
Can be defined only when decorative is not "decal" (see `render_layer`).
stateless_visualisation_variations optional | :: array[StatelessVisualisation or array[StatelessVisualisation]] | Only loaded if `stateless_visualisation` is not defined. [...]
Only loaded if `stateless_visualisation` is not defined. [...]
collision_box optional | :: BoundingBox | Must contain the [0,0] point. [...]
Must contain the [0,0] point. [...]
render_layer optional | :: RenderLayer | When "decals" render layer is used, the decorative is treated as decal. [...]
When "decals" render layer is used, the decorative is treated as decal. [...]
grows_through_rail_path optional | :: boolean |
opacity_over_water optional | :: float | Loaded only if `render_layer` = "decals". [...]
Loaded only if `render_layer` = "decals". [...]
tile_layer optional | :: int16 | Mandatory if `render_layer` = "decals". [...]
Mandatory if `render_layer` = "decals". [...]
decal_overdraw_priority optional | :: uint16 | Loaded only if `render_layer` = "decals". [...]
Loaded only if `render_layer` = "decals". [...]
collision_mask optional | :: CollisionMaskConnector | Defaults to the mask from UtilityConstants::default_collision_masks when indexed by `"decorative"`.
Defaults to the mask from UtilityConstants::default_collision_masks when indexed by `"decorative"`.
walking_sound optional | :: Sound |
trigger_effect optional | :: TriggerEffect | Called by DestroyDecorativesTriggerEffectItem.
Called by DestroyDecorativesTriggerEffectItem.
minimal_separation optional | :: double |
target_count optional | :: uint16 |
placed_effect optional | :: TriggerEffect |
autoplace optional | :: AutoplaceSpecification |

Inherited from Prototype

factoriopedia_alternative optional | :: string | The ID type corresponding to the prototype that inherits from this. [...]
The ID type corresponding to the prototype that inherits from this. [...]
custom_tooltip_fields optional | :: array[CustomTooltipField] | Allows to add extra description items to the tooltip and Factoriopedia.
Allows to add extra description items to the tooltip and Factoriopedia.

Inherited from PrototypeBase

type | :: string | Specifies the kind of prototype this is. [...]
Specifies the kind of prototype this is. [...]
name | :: string | Unique textual identification of the prototype. [...]
Unique textual identification of the prototype. [...]
order optional | :: Order | Used to order prototypes in inventory, recipes and GUIs. [...]
Used to order prototypes in inventory, recipes and GUIs. [...]
localised_name optional | :: LocalisedString | Overwrites the name set in the locale file. [...]
Overwrites the name set in the locale file. [...]
localised_description optional | :: LocalisedString | Overwrites the description set in the locale file. [...]
Overwrites the description set in the locale file. [...]
factoriopedia_description optional | :: LocalisedString | Provides additional description used in factoriopedia.
Provides additional description used in factoriopedia.
subgroup optional | :: ItemSubGroupID | The name of an ItemSubGroup.
The name of an ItemSubGroup.
hidden optional | :: boolean |
hidden_in_factoriopedia optional | :: boolean |
parameter optional | :: boolean | Whether the prototype is a special type which can be used to parametrize blueprints and doesn't have other function.
Whether the prototype is a special type which can be used to parametrize blueprints and doesn't have other function.
factoriopedia_simulation optional | :: SimulationDefinition | The simulation shown when looking at this prototype in the Factoriopedia GUI.
The simulation shown when looking at this prototype in the Factoriopedia GUI.

pictures | :: SpriteVariations | Must contain at least 1 picture.
Must contain at least 1 picture.
autoplace optional | :: AutoplaceSpecification |
collision_box optional | :: BoundingBox | Must contain the [0,0] point. [...]
Must contain the [0,0] point. [...]
collision_mask optional | :: CollisionMaskConnector | Defaults to the mask from UtilityConstants::default_collision_masks when indexed by `"decorative"`.
Defaults to the mask from UtilityConstants::default_collision_masks when indexed by `"decorative"`.
decal_overdraw_priority optional | :: uint16 | Loaded only if `render_layer` = "decals". [...]
Loaded only if `render_layer` = "decals". [...]
grows_through_rail_path optional | :: boolean |
minimal_separation optional | :: double |
opacity_over_water optional | :: float | Loaded only if `render_layer` = "decals". [...]
Loaded only if `render_layer` = "decals". [...]
placed_effect optional | :: TriggerEffect |
render_layer optional | :: RenderLayer | When "decals" render layer is used, the decorative is treated as decal. [...]
When "decals" render layer is used, the decorative is treated as decal. [...]
stateless_visualisation optional | :: StatelessVisualisation or array[StatelessVisualisation] | Can be defined only when decorative is not "decal" (see `render_layer`).
Can be defined only when decorative is not "decal" (see `render_layer`).
stateless_visualisation_variations optional | :: array[StatelessVisualisation or array[StatelessVisualisation]] | Only loaded if `stateless_visualisation` is not defined. [...]
Only loaded if `stateless_visualisation` is not defined. [...]
target_count optional | :: uint16 |
tile_layer optional | :: int16 | Mandatory if `render_layer` = "decals". [...]
Mandatory if `render_layer` = "decals". [...]
trigger_effect optional | :: TriggerEffect | Called by DestroyDecorativesTriggerEffectItem.
Called by DestroyDecorativesTriggerEffectItem.
walking_sound optional | :: Sound |

Inherited from Prototype

custom_tooltip_fields optional | :: array[CustomTooltipField] | Allows to add extra description items to the tooltip and Factoriopedia.
Allows to add extra description items to the tooltip and Factoriopedia.
factoriopedia_alternative optional | :: string | The ID type corresponding to the prototype that inherits from this. [...]
The ID type corresponding to the prototype that inherits from this. [...]

Inherited from PrototypeBase

name | :: string | Unique textual identification of the prototype. [...]
Unique textual identification of the prototype. [...]
type | :: string | Specifies the kind of prototype this is. [...]
Specifies the kind of prototype this is. [...]
factoriopedia_description optional | :: LocalisedString | Provides additional description used in factoriopedia.
Provides additional description used in factoriopedia.
factoriopedia_simulation optional | :: SimulationDefinition | The simulation shown when looking at this prototype in the Factoriopedia GUI.
The simulation shown when looking at this prototype in the Factoriopedia GUI.
hidden optional | :: boolean |
hidden_in_factoriopedia optional | :: boolean |
localised_description optional | :: LocalisedString | Overwrites the description set in the locale file. [...]
Overwrites the description set in the locale file. [...]
localised_name optional | :: LocalisedString | Overwrites the name set in the locale file. [...]
Overwrites the name set in the locale file. [...]
order optional | :: Order | Used to order prototypes in inventory, recipes and GUIs. [...]
Used to order prototypes in inventory, recipes and GUIs. [...]
parameter optional | :: boolean | Whether the prototype is a special type which can be used to parametrize blueprints and doesn't have other function.
Whether the prototype is a special type which can be used to parametrize blueprints and doesn't have other function.
subgroup optional | :: ItemSubGroupID | The name of an ItemSubGroup.
The name of an ItemSubGroup.

## Properties

### pictures :: SpriteVariations

Must contain at least 1 picture.

### stateless_visualisation :: StatelessVisualisation or array[StatelessVisualisation] optional

Can be defined only when decorative is not "decal" (see `render_layer`).

### stateless_visualisation_variations :: array[StatelessVisualisation or array[StatelessVisualisation]] optional

Only loaded if `stateless_visualisation` is not defined. Can be defined only when decorative is not "decal" (see `render_layer`).

### collision_box :: BoundingBox optional

Must contain the [0,0] point. Max radius of the collision box is 8.

### render_layer :: RenderLayer optional

Default: `"decorative"`

When "decals" render layer is used, the decorative is treated as decal. That means it will be rendered within tile layers instead of normal sprite layers.

### grows_through_rail_path :: boolean optional

Default: `false`

### opacity_over_water :: float optional

Default: `1`

Loaded only if `render_layer` = "decals". Value lower than 1 enables masking by water for decals with `tile_layer` greater or equal to UtilityConstants::capture_water_mask_at_layer. Water tiles must use water `tile-effect` with WaterTileEffectParameters::lightmap_alpha set to 0 or value less than 1. Graphics option `Occlude light sprites` must be enabled, as water mask is captured into terrain lightmap alpha channel. Tiles rendered in layer between UtilityConstants::capture_water_mask_at_layer and decal's `tile_layer` will likely also mask decals in some way, as water mask will likely be 0 at their position, but this is considered undefined behavior.

### tile_layer :: int16 optional

Default: `0`

Mandatory if `render_layer` = "decals". This int16 is converted to a TileRenderLayer internally. It is offset from `ground-natural`.

### decal_overdraw_priority :: uint16 optional

Default: `0`

Loaded only if `render_layer` = "decals". When decoratives are being spawned by EnemySpawnerPrototype::spawn_decoration or TurretPrototype::spawn_decoration, decals with `decal_overdraw_priority` greater than 0 will be filtered such that they don't overlap too much. If two or more decals would overlap, only the one with the largest value of `decal_overdraw_priority` is placed.

### collision_mask :: CollisionMaskConnector optional

Defaults to the mask from UtilityConstants::default_collision_masks when indexed by `"decorative"`.

### walking_sound :: Sound optional

### trigger_effect :: TriggerEffect optional

Called by DestroyDecorativesTriggerEffectItem.

### minimal_separation :: double optional

Default: `0.0`

### target_count :: uint16 optional

Default: `0`

### placed_effect :: TriggerEffect optional

### autoplace :: AutoplaceSpecification optional