Concepts

Commonly used conventions for passing data between mods and Factorio

concept LocalisedString
table DisplayResolution
table PersonalLogisticParameters
concept RealOrientation
table_or_array Position
table_or_array ChunkPosition
table_or_array TilePosition
table_or_array GuiLocation
table ChunkPositionAndArea
table EquipmentPoint
table GuiAnchor
table TabAndContent
table OldTileAndPosition
concept Tags
table SmokeSource
concept Vector
table_or_array BoundingBox
table ScriptArea
table ScriptPosition
table_or_array Color
table_or_array ColorModifier
table CraftingQueueItem
table Alert
table ScriptRenderVertexTarget
table PathfinderWaypoint
table CutsceneWaypoint
table Decorative
table DecorativeResult
table ChartTagSpec
struct GameViewSettings - sort
show_controller_gui :: boolean [RW] Show the controller GUI elements.
show_minimap :: boolean [RW] Show the chart in the upper right-hand corner of the screen.
show_research_info :: boolean [RW] Show research progress and name in the upper right-hand corner of the screen.
show_entity_info :: boolean [RW] Show overlay icons on entities.
show_alert_gui :: boolean [RW] Show the flashing alert icons next to the player's toolbar.
update_entity_selection :: boolean [RW] When true (the default), mousing over an entity will select it.
show_rail_block_visualisation :: boolean [RW] When true (false is default), the rails will always show the rail block visualisation.
show_side_menu :: boolean [RW] Shows or hides the buttons row.
show_map_view_options :: boolean [RW] Shows or hides the view options when map is opened.
show_quickbar :: boolean [RW] Shows or hides quickbar of shortcuts.
show_shortcut_bar :: boolean [RW] Shows or hides the shortcut bar.
table MapViewSettings
table PollutionMapSettings
table EnemyEvolutionMapSettings
table EnemyExpansionMapSettings
table UnitGroupMapSettings
table SteeringMapSetting
table SteeringMapSettings
table PathFinderMapSettings
table MapSettings
table DifficultySettings
table MapExchangeStringData
table BlueprintItemIcon
table BlueprintSignalIcon
table BlueprintEntity
table Tile
table Fluid
table Ingredient
table Product
table Loot
table TechnologyModifier
table Offer
table AutoplaceSpecification
table NoiseExpression
table AutoplaceSpecificationPeak
table AutoplaceSpecificationRestriction
table Resistance
concept MapGenSize
table AutoplaceSetting
table AutoplaceSettings
table AutoplaceControl
table CliffPlacementSettings
table MapGenSettings
table SignalID
table Signal
table UpgradeFilter
table InfinityInventoryFilter
table InfinityPipeFilter
table FluidBoxFilter
table FluidBoxFilterSpec
table HeatSetting
table HeatConnection
table FluidBoxConnection
table ArithmeticCombinatorParameters
table ConstantCombinatorParameters
enum ComparatorString
table DeciderCombinatorParameters
table InserterCircuitConditions
table CircuitCondition
table CircuitConditionDefinition
table CircuitConnectionDefinition
table WireConnectionDefinition
table InventoryFilter
table PlaceAsTileResult
table Command
table PathfinderFlags
table UnitSpawnDefinition
table SpawnPointDefinition
table ItemStackDefinition
union SimpleItemStack
union FluidIdentification
union ForceIdentification
union TechnologyIdentification
union SurfaceIdentification
union PlayerIdentification
union ItemStackIdentification
union EntityPrototypeIdentification
union ItemPrototypeIdentification
table WaitCondition
table TrainScheduleRecord
table TrainSchedule
table GuiArrowSpecification
table AmmoType
table BeamTarget
table RidingState
concept SpritePath
concept SoundPath
table ModuleEffectValue
table ModuleEffects
flag EntityPrototypeFlags
flag ItemPrototypeFlags
concept CollisionMaskLayer
concept CollisionMask
concept CollisionMaskWithFlags
concept TriggerTargetMask
table TriggerEffectItem
table TriggerDelivery
table TriggerItem
table CircularParticleCreationSpecification
concept CircularProjectileCreationSpecification
table AttackParameterFluid
table AttackParameters
table CapsuleAction
flag SelectionModeFlags
table LogisticFilter
table ModSetting
concept AnyBasic
concept Any
table ProgrammableSpeakerParameters
table ProgrammableSpeakerAlertParameters
table ProgrammableSpeakerCircuitParameters
table ProgrammableSpeakerInstrument
enum Alignment
table EventData
table NthTickEventData
table ModChangeData
table ConfigurationChangedData
table CustomCommandData
table SelectedPrototypeData
table ScriptRenderTarget
concept MouseButtonFlags
enum CursorBoxRenderType
enum ForceCondition
concept RenderLayer
enum CliffOrientation
table ItemStackLocation
table VehicleAutomaticTargetingParameters
enum SoundType
filter ItemPrototypeFilter
filter ModSettingPrototypeFilter
filter TechnologyPrototypeFilter
filter DecorativePrototypeFilter
filter AchievementPrototypeFilter
filter FluidPrototypeFilter
filter EquipmentPrototypeFilter
filter TilePrototypeFilter
filter RecipePrototypeFilter
filter EntityPrototypeFilter
concept EventFilter
filter LuaScriptRaisedReviveEventFilter
filter LuaEntityDiedEventFilter
filter LuaEntityMarkedForDeconstructionEventFilter
filter LuaPreGhostDeconstructedEventFilter
filter LuaScriptRaisedDestroyEventFilter
filter LuaUpgradeCancelledEventFilter
filter LuaPlayerRepairedEntityEventFilter
filter LuaEntityMarkedForUpgradeEventFilter
filter LuaPostEntityDiedEventFilter
filter LuaPreRobotMinedEntityEventFilter
filter LuaEntityClonedEventFilter
filter LuaScriptRaisedBuiltEventFilter
filter LuaRobotMinedEntityEventFilter
filter LuaPrePlayerMinedEntityEventFilter
filter LuaRobotBuiltEntityEventFilter
filter LuaEntityDeconstructionCancelledEventFilter
filter LuaPlayerBuiltEntityEventFilter
filter LuaPlayerMinedEntityEventFilter
filter LuaEntityDamagedEventFilter
filter LuaSectorScannedEventFilter

LocalisedString

Localised strings are a way to support translation of in-game text. It is an array where the first element is the key and the remaining elements are parameters that will be substituted for placeholders in the template designated by the key.

The key identifies the string template. For example, "gui-alert-tooltip.attack" (for the template "__1__ objects are being damaged"; see the file data/core/locale/en.cfg).

The template can contain placeholders such as __1__ or __2__. These will be replaced by the respective parameter in the LocalisedString. The parameters themselves can be other localised strings, which will be processed recursively in the same fashion. Localised strings cannot be recursed deeper than 20 levels and cannot have more than 20 parameters.

As a special case, when the key is just the empty string, all the parameters will be concatenated (after processing, if any are localised strings). If there is only one parameter, it will be used as is.

Furthermore, when an API function expects a localised string, it will also accept a regular string (i.e. not a table) which will not be translated, or number which will be converted to its textual representation.

Example
In the English translation, this will print "No ammo"; in the Czech translation, it will print "Bez munice":
game.player.print({"description.no-ammo"})
The description.no-ammo template contains no placeholders, so no further parameters are necessary.
Example
In the English translation, this will print "Durability: 5/9"; in the Japanese one, it will print "耐久度: 5/9":
game.player.print({"description.durability", 5, 9})
Example
This will print "hello" in all translations:
game.player.print({"", "hello"})
Example
This will print "Iron plate: 60" in the English translation and "Eisenplatte: 60" in the German translation.
game.print({"", {"item-name.iron-plate"}, ": ", 60})

DisplayResolution

Table with the following fields:

PersonalLogisticParameters

Table with the following fields:

RealOrientation

The smooth orientation. It is a float in the range [0, 1) that covers a full circle, starting at the top and going clockwise. This means a value of 0 indicates "north", a value of 0.5 indicates "south".

For example then, a value of 0.625 would indicate "south-west", and a value of 0.875 would indicate "north-west".

Position

Coordinates of a tile in a map. Positions may be specified either as a dictionary with x, y as keys, or simply as an array with two elements.

Table with the following fields:

Example
Explicit definition:
{x = 50, y = 20}
{y = 20, x = 50}
Example
Shorthand:
{10, 20}

ChunkPosition

Coordinates of a chunk in a LuaSurface where each integer x/y represents a different chunk. This uses the same format as Position, meaning it can be specified either with or without explicit keys. A Position can be translated to a ChunkPosition by dividing the x/y values by 32.

Table with the following fields:

TilePosition

Coordinates of a tile in a chunk on a LuaSurface where each integer x/y represents a different tile. This uses the same format as Position except it rounds any x/y down to whole numbers. It can be specified either with or without explicit keys.

Table with the following fields:

GuiLocation

Screen coordinates of a GUI element in a LuaGui. This uses the same format as Position except it rounds any x/y down to whole numbers. It can be specified either with or without explicit keys.

Table with the following fields:

ChunkPositionAndArea

A ChunkPosition with an added bounding box for the area of the chunk.

Table with the following fields:

EquipmentPoint

A table used to define a manual shape for a piece of equipment.

Table with the following fields:

GuiAnchor

Table with the following fields:

TabAndContent

Table with the following fields:

OldTileAndPosition

Table with the following fields:

Tags

A dictionary of string to the four basic Lua types: string, boolean, number, table.

Example
{a = 1, b = true, c = "three", d = {e = "f"}}

SmokeSource

Table with the following fields:

Note: The vectors for all 5 position attributes are a table with x and y keys instead of an array.

Vector

A vector is a two-element array containing the x and y components. In some specific cases, the vector is a table with x and y keys instead, which the documentation will point out.

Example
right = {1.0, 0.0}

BoundingBox

Two positions, specifying the top-left and bottom-right corner of the box respectively. Like with Position, the names of the members may be omitted. When read from the game, the third member orientation is present if it is non-zero, however it is ignored when provided to the game.

Table with the following fields:

Example
Explicit definition:
{left_top = {-2, -3}, right_bottom = {5, 8}}
Example
Shorthand:
{{-2, -3}, {5, 8}}

ScriptArea

An area defined using the map editor.

Table with the following fields:

ScriptPosition

A position defined using the map editor.

Table with the following fields:

Color

Red, green, blue and alpha values, all in range [0, 1] or all in range [0, 255] if any value is > 1. All values here are optional. Color channels default to 0, the alpha channel defaults to 1.

Similar to Position, Color allows the short-hand notation of passing an array of exactly 3 or 4 numbers. The game usually expects colors to be in pre-multiplied form (color channels are pre-multiplied by alpha).

Table with the following fields:

Example
red1 = {r = 0.5, g = 0, b = 0, a = 0.5}  -- Half-opacity red
red2 = {r = 0.5, a = 0.5}                -- Same color as red1
black = {}                               -- All channels omitted: black
red1_short = {0.5, 0, 0, 0.5}            -- Same color as red1 in short-hand notation

ColorModifier

Same as Color, but red, green, blue and alpha values can be any floating point number, without any special handling of the range [1, 255].

Table with the following fields:

CraftingQueueItem

Table with the following fields:

Alert

Table with the following fields:

ScriptRenderVertexTarget

One vertex of a ScriptRenderPolygon.

Table with the following fields:

PathfinderWaypoint

Table with the following fields:

CutsceneWaypoint

Table with the following fields:

Decorative

Table with the following fields:

DecorativeResult

Table with the following fields:

ChartTagSpec

Table with the following fields:

Note: Either icon, text, or both must be provided.

GameViewSettings

Parameters that affect the look and control of the game. Updating any of the member attributes here will immediately take effect in the game engine.

show_controller_gui :: boolean [Read-Write]

Show the controller GUI elements. This includes the toolbar, the selected tool slot, the armour slot, and the gun and ammunition slots.

show_minimap :: boolean [Read-Write]

Show the chart in the upper right-hand corner of the screen.

show_research_info :: boolean [Read-Write]

Show research progress and name in the upper right-hand corner of the screen.

show_entity_info :: boolean [Read-Write]

Show overlay icons on entities. Also known as "alt-mode".

show_alert_gui :: boolean [Read-Write]

Show the flashing alert icons next to the player's toolbar.

update_entity_selection :: boolean [Read-Write]

When true (the default), mousing over an entity will select it. Otherwise, moving the mouse won't update entity selection.

show_rail_block_visualisation :: boolean [Read-Write]

When true (false is default), the rails will always show the rail block visualisation.

show_side_menu :: boolean [Read-Write]

Shows or hides the buttons row.

show_map_view_options :: boolean [Read-Write]

Shows or hides the view options when map is opened.

show_quickbar :: boolean [Read-Write]

Shows or hides quickbar of shortcuts.

show_shortcut_bar :: boolean [Read-Write]

Shows or hides the shortcut bar.

MapViewSettings

What is shown in the map view. If a field is not given, that setting will not be changed.

Table with the following fields:

PollutionMapSettings

These values are for the time frame of one second (60 ticks).

Table with the following fields:

EnemyEvolutionMapSettings

These values represent a percentual increase in evolution. This means a value of 0.1 would increase evolution by 10%.

Table with the following fields:

EnemyExpansionMapSettings

Candidate chunks are given scores to determine which one of them should be expanded into. This score takes into account various settings noted below. The iteration is over a square region centered around the chunk for which the calculation is done, and includes the central chunk as well. Distances are calculated as Manhattan distance.

The pseudocode algorithm to determine a chunk's score is as follows:

player = 0
for neighbour in all chunks within enemy_building_influence_radius from chunk:
  player += number of player buildings on neighbour
          * building_coefficient
          * neighbouring_chunk_coefficient^distance(chunk, neighbour)

base = 0
for neighbour in all chunk within friendly_base_influence_radius from chunk:
  base += num of enemy bases on neighbour
          * other_base_coefficient
          * neighbouring_base_chunk_coefficient^distance(chunk, neighbour)

score(chunk) = 1 / (1 + player + base)

Table with the following fields:

UnitGroupMapSettings

Table with the following fields:

SteeringMapSetting

Table with the following fields:

SteeringMapSettings

Table with the following fields:

PathFinderMapSettings

Table with the following fields:

MapSettings

Various game-related settings. Updating any of the attributes will immediately take effect in the game engine.

Table with the following fields:

Example
Increase the number of short paths the pathfinder can cache.
game.map_settings.path_finder.short_cache_size = 15

DifficultySettings

Technology and recipe difficulty settings. Updating any of the attributes will immediately take effect in the game engine.

Table with the following fields:

MapExchangeStringData

The data that can be extracted from a map exchange string, as a plain table.

Table with the following fields:

BlueprintItemIcon

Table with the following fields:

BlueprintSignalIcon

Table with the following fields:

BlueprintEntity

The representation of an entity inside of a blueprint. It has at least these fields, but can contain additional ones depending on the kind of entity.

Table with the following fields:

Tile

Table with the following fields:

Fluid

Table with the following fields:

Ingredient

Table with the following fields:

Product

Table with the following fields:

Example
Products of the "steel-chest" recipe (an array of Product):
{{type="item", name="steel-chest", amount=1}}
Example
Products of the "advanced-oil-processing" recipe:
{{type="fluid", name="heavy-oil", amount=1},
 {type="fluid", name="light-oil", amount=4.5},
 {type="fluid", name="petroleum-gas", amount=5.5}}
Example
What a custom recipe would look like that had a probability of 0.5 to return a minimum amount of 1 and a maximum amount of 5:
{{type=0, name="custom-item", probability=0.5, amount_min=1, amount_max=5}}

Loot

Table with the following fields:

TechnologyModifier

The effect that is applied when a technology is researched. It is a table that contains at least the field type.

Table with the following fields:

Offer

A single offer on a market entity.

Table with the following fields:

AutoplaceSpecification

Specifies how probability and richness are calculated when placing something on the map. Can be specified either using probability_expression and richness_expression or by using all the other fields.

Table with the following fields:

NoiseExpression

A fragment of a functional program used to generate coherent noise, probably for purposes related to terrain generation. These can only be meaningfully written/modified during the data load phase. More detailed information is found on the wiki.

Table with the following fields:

AutoplaceSpecificationPeak

Table with the following fields:

AutoplaceSpecificationRestriction

Table with the following fields:

Resistance

Table with the following fields:

MapGenSize

A floating point number specifying an amount.

For backwards compatibility, MapGenSizes can also be specified as one of the following strings, which will be converted to a number (when queried, a number will always be returned):

Note: The map generation algorithm officially supports the range of values the in-game map generation screen shows (specifically 0 and values from 1/6 to 6). Values outside this range are not guaranteed to work as expected.

AutoplaceSetting

Table with the following fields:

AutoplaceSettings

Table with the following fields:

AutoplaceControl

Table with the following fields:

CliffPlacementSettings

Table with the following fields:

MapGenSettings

Table with the following fields:

The 'map type' dropdown in the map generation GUI is actually a selector for elevation generator. The base game sets property_expression_names.elevation to "0_16-elevation" to reproduce terrain from 0.16 or to "0_17-island" for the island preset. If generators are available for other properties, the 'map type' dropdown in the GUI will be renamed to 'elevation' and shown along with selectors for the other selectable properties.

Example
Assuming a NamedNoiseExpression with the name "my-alternate-grass1-probability" is defined
local surface = game.player.surface
local mgs = surface.map_gen_settings
mgs.property_expression_names["tile:grass1:probability"] = "my-alternate-grass1-probability"
surface.map_gen_settings = mgs
would override the probability of grass1 being placed at any given point on the current surface.
Example
To make there be no deep water on (newly generated chunks) a surface:
local surface = game.player.surface
local mgs = surface.map_gen_settings
mgs.property_expression_names["tile:deepwater:probability"] = -1000
surface.map_gen_settings = mgs
This does not require a NamedNoiseExpression to be defined, since literal numbers (and strings naming literal numbers, e.g. "123") are understood to stand for constant value expressions.

SignalID

Table with the following fields:

Signal

An actual signal transmitted by the network.

Table with the following fields:

UpgradeFilter

Table with the following fields:

InfinityInventoryFilter

A single filter used by an infinity-filters instance.

Table with the following fields:

InfinityPipeFilter

A single filter used by an infinity-pipe type entity.

Table with the following fields:

FluidBoxFilter

Table with the following fields:

FluidBoxFilterSpec

Table with the following fields:

HeatSetting

The settings used by a heat-interface type entity.

Table with the following fields:

HeatConnection

Table with the following fields:

FluidBoxConnection

A definition of a fluidbox connection point.

Table with the following fields:

ArithmeticCombinatorParameters

Table with the following fields:

ConstantCombinatorParameters

Table with the following fields:

ComparatorString

A string that specifies how the inputs should be compared.

Note: While the API accepts both versions for "less/greater than or equal to" and "not equal", it'll always return "≥", "≤" or "≠" respectively when reading them back.

DeciderCombinatorParameters

Table with the following fields:

InserterCircuitConditions

Table with the following fields:

CircuitCondition

Table with the following fields:

CircuitConditionDefinition

Table with the following fields:

CircuitConnectionDefinition

Table with the following fields:

WireConnectionDefinition

Table with the following fields:

InventoryFilter

Table with the following fields:

PlaceAsTileResult

Table with the following fields:

Command

Commands can be given to enemies and unit groups.

Table with the following fields:

PathfinderFlags

Table with the following fields:

UnitSpawnDefinition

Table with the following fields:

SpawnPointDefinition

Table with the following fields:

ItemStackDefinition

Table with the following fields:

SimpleItemStack

An item stack may be specified in one of two ways:

Example
Both of these lines specify an item stack of one iron plate:
{name="iron-plate"}
{name="iron-plate", count=1}
Example
This is a stack of 47 copper plates:
{name="copper-plate", count=47}
Example
These are both full stacks of iron plates (for iron-plate, a full stack is 100 plates):
"iron-plate"
{name="iron-plate", count=100}

FluidIdentification

A fluid may be specified in one of three ways:

ForceIdentification

A force may be specified in one of two ways:

TechnologyIdentification

A technology may be specified in one of three ways:

SurfaceIdentification

A surface may be specified in one of three ways:

PlayerIdentification

A player may be specified in one of three ways:

ItemStackIdentification

An item may be specified in one of two ways:

EntityPrototypeIdentification

An entity prototype may be specified in one of three ways:

ItemPrototypeIdentification

An item prototype may be specified in one of three ways:

WaitCondition

Table with the following fields:

TrainScheduleRecord

Table with the following fields:

TrainSchedule

Table with the following fields:

GuiArrowSpecification

Used for specifying where a GUI arrow should point to.

Table with the following fields:

AmmoType

Table with the following fields:

BeamTarget

Table with the following fields:

RidingState

Table with the following fields:

SpritePath

It is specified by string. It can be either the name of a sprite prototype defined in the data stage or a path in form "type/name".

The supported types are:

SoundPath

A sound defined by a string. It can be either the name of a sound prototype defined in the data stage or a path in the form "type/name". The latter option can be sorted into three categories.

The utility and ambient types each contain general use sound prototypes defined by the game itself.

The following types can be combined with any tile name as long as its prototype defines the corresponding sound.

The following types can be combined with any entity name as long as its prototype defines the corresponding sound.

ModuleEffectValue

Table with the following fields:

ModuleEffects

Table with the following fields:

Example
These are the effects of the vanilla Productivity Module 3 (up to floating point imprecisions):
{consumption={bonus=0.6},
 speed={bonus=-0.15},
 productivity={bonus=0.06},
 pollution={bonus=0.075}}

EntityPrototypeFlags

This is a set of flags given as a dictionary[stringboolean]. When a flag is set, it is present in the dictionary with the value true. Unset flags aren't present in the dictionary at all. So, the boolean value is meaningless and exists just for easy table lookup if a flag is set.

Possible flags are:

ItemPrototypeFlags

This is a set of flags given as dictionary[stringboolean]. When a flag is set, it is present in the dictionary with the value true. Unset flags aren't present in the dictionary at all. So, the boolean value is meaningless and exists just for easy table lookup if a flag is set.

Possible flags are:

CollisionMaskLayer

A string specifying a collision mask layer.

Possible values for the string are:

Additionally the values "layer-13" through "layer-55". These layers are currently unused by the game but may change. If a mod is going to use one of the unused layers it's recommended to start at the higher layers because the base game will take from the lower ones.

CollisionMask

This is a set of masks given as a dictionary[CollisionMaskLayerboolean]. Only set masks are present in the dictionary and they have the value true. Unset flags aren't present at all.

CollisionMaskWithFlags

A CollisionMask but also includes any flags this mask has.

Flags such as:

TriggerTargetMask

This is a set of trigger target masks given as a dictionary[stringboolean].

TriggerEffectItem

Table with the following fields:

TriggerDelivery

Table with the following fields:

TriggerItem

Table with the following fields:

CircularParticleCreationSpecification

Table with the following fields:

CircularProjectileCreationSpecification

An array with the following members:

AttackParameterFluid

Table with the following fields:

AttackParameters

Table with the following fields:

CapsuleAction

Table with the following fields:

SelectionModeFlags

This is a set of flags given as a dictionary[stringboolean]. Set flags are present in the dictionary with the value true; unset flags aren't present at all.

Possible flags are:

LogisticFilter

Table with the following fields:

ModSetting

Table with the following fields:

Note: Runtime settings can be changed through console commands and by the mod that owns the settings by writing a new table to the ModSetting.

AnyBasic

Any basic type (string, number, boolean) or table.

Any

Any basic type (string, number, boolean), table, or LuaObject.

ProgrammableSpeakerParameters

Table with the following fields:

ProgrammableSpeakerAlertParameters

Table with the following fields:

ProgrammableSpeakerCircuitParameters

Table with the following fields:

ProgrammableSpeakerInstrument

Table with the following fields:

Alignment

A string that specifies where a gui element should be.

Possible values are:

EventData

Information about the event that has been raised. The table can also contain other fields depending on the type of event. See the list of Factorio events for more information on these.

Table with the following fields:

NthTickEventData

Table with the following fields:

ModChangeData

Table with the following fields:

ConfigurationChangedData

Table with the following fields:

CustomCommandData

Table with the following fields:

SelectedPrototypeData

Table with the following fields:

ScriptRenderTarget

Table with the following fields:

MouseButtonFlags

This is a set of flags given as a dictionary[stringboolean]. When a flag is set, it is present in the dictionary with the value true. Unset flags aren't present in the dictionary at all.

To write to this, use an array[string] of the mouse buttons that should be possible to use with on button.

When setting flags, the flag "left-and-right" can also be set which will set "left" and "right" true.

Possible flags when reading are:

CursorBoxRenderType

It is specified by string.

ForceCondition

It is specified by string.

RenderLayer

A value between 0 and 255 inclusive represented by one of the following named string or string version of the value (for example "27" and "decals" are both valid). Higher values are rendered on top of lower values.

CliffOrientation

ItemStackLocation

Table with the following fields:

VehicleAutomaticTargetingParameters

Table with the following fields:

SoundType

ItemPrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

ModSettingPrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

TechnologyPrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

DecorativePrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

AchievementPrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

FluidPrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

EquipmentPrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

TilePrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

RecipePrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

EntityPrototypeFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

EventFilter

Used to filter out irrelevant event callbacks in a performant way.

Available filters:

Note: Filters are always used as an array of filters of a specific type. Every filter can only be used with its corresponding event, and different types of event filters can not be mixed.

LuaScriptRaisedReviveEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaEntityDiedEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaEntityMarkedForDeconstructionEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaPreGhostDeconstructedEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaScriptRaisedDestroyEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaUpgradeCancelledEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaPlayerRepairedEntityEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaEntityMarkedForUpgradeEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaPostEntityDiedEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaPreRobotMinedEntityEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaEntityClonedEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaScriptRaisedBuiltEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaRobotMinedEntityEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaPrePlayerMinedEntityEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaRobotBuiltEntityEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaEntityDeconstructionCancelledEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaPlayerBuiltEntityEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaPlayerMinedEntityEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaEntityDamagedEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following:

LuaSectorScannedEventFilter

Table with the following fields:

Depending on the value of filter, the table may take additional fields. filter may be one of the following: