<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.factorio.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Snouz1</id>
	<title>Official Factorio Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.factorio.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Snouz1"/>
	<link rel="alternate" type="text/html" href="https://wiki.factorio.com/Special:Contributions/Snouz1"/>
	<updated>2026-04-23T03:16:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Prototype/Entity&amp;diff=187560</id>
		<title>Prototype/Entity</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Prototype/Entity&amp;diff=187560"/>
		<updated>2021-11-23T14:26:28Z</updated>

		<summary type="html">&lt;p&gt;Snouz1: water reflection: added info (https://forums.factorio.com/viewtopic.php?f=28&amp;amp;t=100703)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Prototype parent|PrototypeBase}}&lt;br /&gt;
Abstract base of all entities in the game.&lt;br /&gt;
Entity is basically everything that can be on the map (except tiles).&lt;br /&gt;
For in game script access to entity, take a look at [http://lua-api.factorio.com/latest/LuaEntity.html LuaEntity]&lt;br /&gt;
&lt;br /&gt;
{{Prototype TOC|&#039;&#039;abstract&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;factorio-list&amp;quot;&amp;gt;&lt;br /&gt;
* [[Prototype/Arrow]] &#039;&#039;&#039;arrow&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ArtilleryFlare]] &#039;&#039;&#039;artillery-flare&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ArtilleryProjectile]] &#039;&#039;&#039;artillery-projectile&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Beam]] &#039;&#039;&#039;beam&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/CharacterCorpse]] &#039;&#039;&#039;character-corpse&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Cliff]] &#039;&#039;&#039;cliff&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Corpse]] &#039;&#039;&#039;corpse&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/RailRemnants]] &#039;&#039;&#039;rail-remnants&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/DeconstructibleTileProxy]] &#039;&#039;&#039;deconstructible-tile-proxy&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/EntityGhost]] &#039;&#039;&#039;entity-ghost&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/EntityParticle]] &#039;&#039;&#039;particle&#039;&#039;&#039; (for migration, cannot be used)&lt;br /&gt;
** [[Prototype/LeafParticle]] &#039;&#039;&#039;leaf-particle&#039;&#039;&#039; (for migration, cannot be used)&lt;br /&gt;
* [[Prototype/EntityWithHealth]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/Accumulator]] &#039;&#039;&#039;accumulator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ArtilleryTurret]] &#039;&#039;&#039;artillery-turret&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Beacon]] &#039;&#039;&#039;beacon&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Boiler]] &#039;&#039;&#039;boiler&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/BurnerGenerator]] &#039;&#039;&#039;burner-generator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Character]] &#039;&#039;&#039;character&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Combinator]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/ArithmeticCombinator]] &#039;&#039;&#039;arithmetic-combinator&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/DeciderCombinator]] &#039;&#039;&#039;decider-combinator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ConstantCombinator]] &#039;&#039;&#039;constant-combinator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Container]] &#039;&#039;&#039;container&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/LogisticContainer]] &#039;&#039;&#039;logistic-container&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/InfinityContainer]] &#039;&#039;&#039;infinity-container&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/CraftingMachine]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/AssemblingMachine]] &#039;&#039;&#039;assembling-machine&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/RocketSilo]] &#039;&#039;&#039;rocket-silo&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Furnace]] &#039;&#039;&#039;furnace&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ElectricEnergyInterface]] &#039;&#039;&#039;electric-energy-interface&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ElectricPole]] &#039;&#039;&#039;electric-pole&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/EnemySpawner]] &#039;&#039;&#039;unit-spawner&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Fish]] &#039;&#039;&#039;fish&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/FlyingRobot]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/CombatRobot]] &#039;&#039;&#039;combat-robot&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/RobotWithLogisticInterface]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
**** [[Prototype/ConstructionRobot]] &#039;&#039;&#039;construction-robot&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/LogisticRobot]] &#039;&#039;&#039;logistic-robot&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Gate]] &#039;&#039;&#039;gate&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Generator]] &#039;&#039;&#039;generator&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/HeatInterface]] &#039;&#039;&#039;heat-interface&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/HeatPipe]] &#039;&#039;&#039;heat-pipe&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Inserter]] &#039;&#039;&#039;inserter&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Lab]] &#039;&#039;&#039;lab&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Lamp]] &#039;&#039;&#039;lamp&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/LandMine]] &#039;&#039;&#039;land-mine&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/LinkedContainer]] &#039;&#039;&#039;linked-container&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Market]] &#039;&#039;&#039;market&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/MiningDrill]] &#039;&#039;&#039;mining-drill&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/OffshorePump]] &#039;&#039;&#039;offshore-pump&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Pipe]] &#039;&#039;&#039;pipe&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/InfinityPipe]] &#039;&#039;&#039;infinity-pipe&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/PipeToGround]] &#039;&#039;&#039;pipe-to-ground&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/PlayerPort]] &#039;&#039;&#039;player-port&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/PowerSwitch]] &#039;&#039;&#039;power-switch&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/ProgrammableSpeaker]] &#039;&#039;&#039;programmable-speaker&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Pump]] &#039;&#039;&#039;pump&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Radar]] &#039;&#039;&#039;radar&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Rail]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/CurvedRail]] &#039;&#039;&#039;curved-rail&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/StraightRail]] &#039;&#039;&#039;straight-rail&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/RailSignalBase]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/RailChainSignal]] &#039;&#039;&#039;rail-chain-signal&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/RailSignal]] &#039;&#039;&#039;rail-signal&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Reactor]] &#039;&#039;&#039;reactor&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Roboport]] &#039;&#039;&#039;roboport&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SimpleEntity]] &#039;&#039;&#039;simple-entity&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SimpleEntityWithOwner]] &#039;&#039;&#039;simple-entity-with-owner&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SimpleEntityWithForce]] &#039;&#039;&#039;simple-entity-with-force&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SolarPanel]] &#039;&#039;&#039;solar-panel&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/SpiderLeg]] &#039;&#039;&#039;spider-leg&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/StorageTank]] &#039;&#039;&#039;storage-tank&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/TrainStop]] &#039;&#039;&#039;train-stop&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/TransportBeltConnectable]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/LinkedBelt]] &#039;&#039;&#039;linked-belt&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Loader1x1]] &#039;&#039;&#039;loader-1x1&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Loader1x2]] &#039;&#039;&#039;loader&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/Splitter]] &#039;&#039;&#039;splitter&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/TransportBelt]] &#039;&#039;&#039;transport-belt&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/UndergroundBelt]] &#039;&#039;&#039;underground-belt&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Tree]] &#039;&#039;&#039;tree&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Turret]] &#039;&#039;&#039;turret&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/AmmoTurret]] &#039;&#039;&#039;ammo-turret&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/ElectricTurret]] &#039;&#039;&#039;electric-turret&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/FluidTurret]] &#039;&#039;&#039;fluid-turret&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Unit]] &#039;&#039;&#039;unit&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Vehicle]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
*** [[Prototype/Car]] &#039;&#039;&#039;car&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/RollingStock]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
**** [[Prototype/ArtilleryWagon]] &#039;&#039;&#039;artillery-wagon&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/CargoWagon]] &#039;&#039;&#039;cargo-wagon&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/FluidWagon]] &#039;&#039;&#039;fluid-wagon&#039;&#039;&#039;&lt;br /&gt;
**** [[Prototype/Locomotive]] &#039;&#039;&#039;locomotive&#039;&#039;&#039;&lt;br /&gt;
*** [[Prototype/SpiderVehicle]] &#039;&#039;&#039;spider-vehicle&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/Wall]] &#039;&#039;&#039;wall&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Explosion]] &#039;&#039;&#039;explosion&#039;&#039;&#039;&lt;br /&gt;
** [[Prototype/FlameThrowerExplosion]] &#039;&#039;&#039;flame-thrower-explosion&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FireFlame]] &#039;&#039;&#039;fire&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FluidStream]] &#039;&#039;&#039;stream&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/FlyingText]] &#039;&#039;&#039;flying-text&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/HighlightBoxEntity]] &#039;&#039;&#039;highlight-box&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ItemEntity]] &#039;&#039;&#039;item-entity&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ItemRequestProxy]] &#039;&#039;&#039;item-request-proxy&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ParticleSource]] &#039;&#039;&#039;particle-source&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Projectile]] &#039;&#039;&#039;projectile&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/ResourceEntity]] &#039;&#039;&#039;resource&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/RocketSiloRocket]] &#039;&#039;&#039;rocket-silo-rocket&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/RocketSiloRocketShadow]] &#039;&#039;&#039;rocket-silo-rocket-shadow&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Smoke]] &amp;lt;abstract&amp;gt;&lt;br /&gt;
** [[Prototype/SimpleSmoke]] &#039;&#039;&#039;smoke&#039;&#039;&#039; (for migration, cannot be used)&lt;br /&gt;
** [[Prototype/SmokeWithTrigger]] &#039;&#039;&#039;smoke-with-trigger&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/SpeechBubble]] &#039;&#039;&#039;speech-bubble&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/Sticker]] &#039;&#039;&#039;sticker&#039;&#039;&#039;&lt;br /&gt;
* [[Prototype/TileGhost]] &#039;&#039;&#039;tile-ghost&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
Inherits all properties from [[PrototypeBase]].&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|icons, icon,  icon_size (IconSpecification)|[[Types/IconSpecification|IconSpecification]]}}&lt;br /&gt;
An icon is mandatory for entities that have at least one of these flags active: placeable-neutral, placeable-player, placeable-enemy.&lt;br /&gt;
&lt;br /&gt;
The icon will be used in the editor building selection and the bonus gui.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;icon = &amp;quot;__base__/graphics/icons/wooden-chest.png&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== order ===&lt;br /&gt;
:&#039;&#039;See [[PrototypeBase#order]]&#039;&#039;&lt;br /&gt;
Inherited from [[PrototypeBase]].&lt;br /&gt;
&lt;br /&gt;
The order string is taken from the items in &amp;lt;code&amp;gt;placeable_by&amp;lt;/code&amp;gt; if they exist, or from an item that has its [[Prototype/Item#place_result|place_result]] set to this entity if it exists.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|collision_box|[[Types/BoundingBox|BoundingBox]]|Empty=&amp;lt;nowiki&amp;gt;{{0, 0}, {0, 0}} means no collisions.&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
Specification of the entity collision boundaries.&lt;br /&gt;
&lt;br /&gt;
Empty collision box is used for smoke, projectiles, particles, explosions etc.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;collision_box = {{-0.4, -0.4}, {0.4, 0.4}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The {0,0} coordinate in the collision box will match the entity position.&lt;br /&gt;
&lt;br /&gt;
It should be near the center of the collision box, to keep correct entity drawing order. It must include the {0,0} coordinate.&lt;br /&gt;
&lt;br /&gt;
Note, that for buildings, it is customary to leave 0.1 wide border between the edge of the tile and the edge of the building, this lets the player move between the building and electric poles/inserters etc.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|collision_mask|[[Types/CollisionMask|CollisionMask]]|&amp;lt;nowiki&amp;gt;{&amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
&lt;br /&gt;
Two entities can collide only if they share a layer from the collision mask.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
NOTE: &#039;&#039;&#039;Some entity types have their own default&#039;&#039;&#039; that differs from the above default. They are listed here:&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [[Prototype/Arrow]] - no masks&lt;br /&gt;
* [[Prototype/ArtilleryFlare]] - no masks&lt;br /&gt;
* [[Prototype/ArtilleryProjectile]] - no masks&lt;br /&gt;
* [[Prototype/Beam]] - no masks&lt;br /&gt;
* [[Prototype/Car]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;, &amp;quot;consider-tile-transitions&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Character]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;, &amp;quot;consider-tile-transitions&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/CharacterCorpse]] - no masks&lt;br /&gt;
* [[Prototype/Cliff]] - &amp;lt;code&amp;gt;{ &amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;, &amp;quot;not-colliding-with-itself&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Corpse]] - no masks&lt;br /&gt;
* [[Prototype/DeconstructibleTileProxy]] - &amp;lt;code&amp;gt;{&amp;quot;ground-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/EntityGhost]] - &amp;lt;code&amp;gt;{&amp;quot;ghost-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/EntityParticle]] - no masks&lt;br /&gt;
* [[Prototype/Explosion]] - no masks&lt;br /&gt;
* [[Prototype/FireFlame]] - no masks&lt;br /&gt;
* [[Prototype/Fish]] - &amp;lt;code&amp;gt;{&amp;quot;ground-tile&amp;quot;, &amp;quot;colliding-with-tiles-only&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/FluidStream]] - no masks&lt;br /&gt;
* [[Prototype/FlyingRobot]] - no masks&lt;br /&gt;
* [[Prototype/FlyingText]] - no masks&lt;br /&gt;
* [[Prototype/Gate]] - &amp;lt;code&amp;gt;{&amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;, &amp;quot;player-layer&amp;quot;, &amp;quot;water-tile&amp;quot;, &amp;quot;train-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/HeatPipe]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;floor-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/HighlightBoxEntity]] - no masks&lt;br /&gt;
* [[Prototype/ItemEntity]] - &amp;lt;code&amp;gt;{&amp;quot;item-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/ItemRequestProxy]] - no masks&lt;br /&gt;
* [[Prototype/LandMine]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/LinkedBelt]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Loader1x1]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Loader1x2]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/ParticleSource]] - no masks&lt;br /&gt;
* [[Prototype/PlayerPort]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;floor-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Projectile]] - no masks&lt;br /&gt;
* [[Prototype/Rail]] - &amp;lt;code&amp;gt;{&amp;quot;item-layer&amp;quot;, &amp;quot;object-layer&amp;quot;,  &amp;quot;rail-layer&amp;quot;, &amp;quot;floor-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/RailSignalBase]] - &amp;lt;code&amp;gt;{&amp;quot;floor-layer&amp;quot;, &amp;quot;rail-layer&amp;quot;, &amp;quot;item-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/ResourceEntity]] - &amp;lt;code&amp;gt;{&amp;quot;resource-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/RollingStock]] - &amp;lt;code&amp;gt;{&amp;quot;train-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Smoke]] - no masks&lt;br /&gt;
* [[Prototype/SpeechBubble]] - no masks&lt;br /&gt;
* [[Prototype/SpiderLeg]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;rail-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Splitter]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Sticker]] - no masks&lt;br /&gt;
* [[Prototype/TileGhost]] - &amp;lt;code&amp;gt;{&amp;quot;ghost-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/TransportBelt]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;floor-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/UndergroundBelt]] - &amp;lt;code&amp;gt;{&amp;quot;object-layer&amp;quot;, &amp;quot;item-layer&amp;quot;, &amp;quot;transport-belt-layer&amp;quot;, &amp;quot;water-tile&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Unit]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;, &amp;quot;not-colliding-with-itself&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Prototype/Vehicle]] - &amp;lt;code&amp;gt;{&amp;quot;player-layer&amp;quot;, &amp;quot;train-layer&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|map_generator_bounding_box|[[Types/BoundingBox|BoundingBox]]|The value of collision box.|optional=true}}&lt;br /&gt;
Used instead of the collision box during map generation. Allows space entities differently during map generation, for example if the box is bigger, the entities will be placed farther apart.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selection_box|[[Types/BoundingBox|BoundingBox]]|&amp;lt;nowiki&amp;gt;Empty = {{0, 0}, {0, 0}}&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
Specification of the entity selection area.&lt;br /&gt;
When empty  the entity will have no selection area (and thus is not selectable).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;selection_box = {{-0.5, -0.5}, {0.5, 0.5}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The selection box is usually a little bit bigger than the collision box, for tilable entities (like buildings) it should match the tile size of the building.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|drawing_box|[[Types/BoundingBox|BoundingBox]]|&amp;lt;nowiki&amp;gt;Empty = {{0, 0}, {0, 0}} (selection_box is used instead)&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
Specification of space needed to see the whole entity. &lt;br /&gt;
&lt;br /&gt;
This is used to calculate the correct zoom and positioning in the entity info gui.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;drawing_box = {{-0.5, -0.5}, {0.5, 0.5}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|sticker_box|[[Types/BoundingBox|BoundingBox]]|The value of collision box.|optional=true}}&lt;br /&gt;
Used to set the area of the entity that can have stickers on it, currently only used for units to specify the area where the green slow down stickers can appear.&lt;br /&gt;
It is optional and the collision box is used when not specified.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;sticker_box = {{-0.5, -0.5}, {0.5, 0.5}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|hit_visualization_box|[[Types/BoundingBox|BoundingBox]]|&amp;lt;nowiki&amp;gt;Empty = {{0, 0}, {0, 0}}&amp;lt;/nowiki&amp;gt;|optional=true}}&lt;br /&gt;
Where beams should hit the entity. Useful if the bounding box only covers part of the entity (e.g. feet of the character) and beams only hitting there would look weird.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|trigger_target_mask|[[Types/TriggerTargetMask|TriggerTargetMask]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|flags|[[Types/EntityPrototypeFlags|EntityPrototypeFlags]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|minable|[[Types/MinableProperties|MinableProperties]]|not minable|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|subgroup|[[Types/string|string]]|optional=true}}&lt;br /&gt;
The name of the subgroup this entity should be sorted into in the map editor building selection.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|allow_copy_paste|[[Types/bool|bool]]|true|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selectable_in_game|[[Types/bool|bool]]|true|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|selection_priority|[[Types/uint8|uint8]]|50|optional=true}}&lt;br /&gt;
The entity with the higher number is selectable before the entity with the lower number. When two entities have the same selection priority, the one with the highest [[Types/CollisionMask|collision mask]] (as determined by the order on that page) is selected.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|remove_decoratives|[[Types/string|string]]|&amp;quot;automatic&amp;quot;|optional=true}}&lt;br /&gt;
Either &amp;quot;automatic&amp;quot;, &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;. Whether this entity should remove decoratives that collide with it when this entity is built. When set to &amp;quot;automatic&amp;quot;, if the entity type is considered a building (e.g. an assembling machine or a wall) it will remove decoratives.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|emissions_per_second|[[Types/double|double]]|0|optional=true}}&lt;br /&gt;
Amount of emissions created (positive number) or cleaned (negative number) every second by the entity.&lt;br /&gt;
This is passive, and it is independent concept of the emissions of machines, these are created actively depending on the power consumption.&lt;br /&gt;
Currently used just for trees.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;emissions_per_second = -0.001 -- cleaning effect of big tree&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|shooting_cursor_size|[[Types/double|double]]|optional=true}}&lt;br /&gt;
The cursor size used when shooting at this entity.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|created_smoke|[[Types/CreateTrivialSmokeEffectItem|CreateTrivialSmokeEffectItem]]|The &amp;quot;smoke-building&amp;quot;-smoke|optional=true}}&lt;br /&gt;
The smoke that is shown when the entity is placed.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|working_sound|[[Types/WorkingSound|WorkingSound]]|optional=true}}&lt;br /&gt;
Will also work on entities that don&#039;t actually do work.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|created_effect|[[Types/Trigger|Trigger]]|optional=true}}&lt;br /&gt;
The effect/trigger that happens when the entity is placed.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|build_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|mined_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|mining_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|rotated_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|vehicle_impact_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
When playing this sound, the volume is scaled by the speed of the vehicle when colliding with this entity.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|open_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|close_sound|[[Types/Sound|Sound]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|radius_visualisation_specification|[[Types/RadiusVisualisationSpecification|RadiusVisualisationSpecification]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|build_base_evolution_requirement|[[Types/double|double]]|0|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alert_icon_shift|[[Types/vector|vector]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|alert_icon_scale|[[Types/float|float]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|fast_replaceable_group|[[Types/string|string]]|&amp;quot;&amp;quot;|optional=true}}&lt;br /&gt;
This allows you to replace an entity that&#039;s already placed, with a different one in your inventory. For example, replacing a burner inserter with a fast inserter.&lt;br /&gt;
&lt;br /&gt;
This is simply a string, so any string can be used here. The entity that should be replaced simply has to use the same string here.&lt;br /&gt;
&lt;br /&gt;
The ones the game uses are:&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;container&amp;quot;&lt;br /&gt;
    &amp;quot;furnace&amp;quot;&lt;br /&gt;
    &amp;quot;transport-belt&amp;quot;&lt;br /&gt;
    &amp;quot;electric-pole&amp;quot;&lt;br /&gt;
    &amp;quot;steam-engine&amp;quot;&lt;br /&gt;
    &amp;quot;inserter&amp;quot;&lt;br /&gt;
    &amp;quot;long-handed-inserter&amp;quot;&lt;br /&gt;
    &amp;quot;pipe&amp;quot;&lt;br /&gt;
    &amp;quot;assembling-machine&amp;quot;&lt;br /&gt;
    &amp;quot;wall&amp;quot;&lt;br /&gt;
    &amp;quot;loader&amp;quot;&lt;br /&gt;
    &amp;quot;rail-signal&amp;quot;&lt;br /&gt;
    &amp;quot;mining-drill&amp;quot;&lt;br /&gt;
    &amp;quot;pumpjack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|next_upgrade|[[Types/string|string]]|optional=true}}&lt;br /&gt;
Name of the entity that will be automatically selected as the upgrade of this entity when using the [[upgrade planner]] without configuration.&lt;br /&gt;
&lt;br /&gt;
This entity may not have &#039;not-upgradable&#039; flag set and must be minable. This entity mining result must not contain item product with &amp;quot;hidden&amp;quot; flag set. Mining results with no item products are allowed. The entity may not be a [[Prototype/RollingStock]].&amp;lt;br&amp;gt;&lt;br /&gt;
The upgrade target entity needs to have the same bounding box, collision mask, and fast replaceable group as this entity. The upgrade target entity must have least 1 item that builds it that isn&#039;t hidden.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|placeable_by|[[Types/ItemToPlace|ItemToPlace]] or [[Types/table|table]] of [[Types/ItemToPlace|ItemToPlace]]|optional=true}}&lt;br /&gt;
Item that when placed creates this entity. Determines which item is picked when &amp;quot;Q&amp;quot; (smart pipette) is used on the entity, determines which item is needed in a blueprint of this entity.&lt;br /&gt;
&lt;br /&gt;
The item count specified here can&#039;t be larger than the stack size of that item.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|remains_when_mined|[[Types/string|string]] or [[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
The entity that remains when this one is mined, deconstructed or fast-replaced. The entity wont actually be spawned if it would collide with the entity that is in the process of being mined.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|additional_pastable_entities|[[Types/table|table]] of [[Types/string|string]]|optional=true}}&lt;br /&gt;
Names of the entity prototypes this entity prototype can be pasted on to in addition to the standard supported types.&lt;br /&gt;
This is used to allow copying between types that aren&#039;t compatible on the C++ code side, by allowing mods to receive the [https://lua-api.factorio.com/latest/events.html#on_entity_settings_pasted on_entity_settings_pasted] event for the given entity and do the setting pasting via script.&amp;lt;br&amp;gt;&lt;br /&gt;
 additional_pastable_entities = {&amp;quot;steel-chest&amp;quot;, &amp;quot;iron-chest&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|tile_width|[[Types/uint32|uint32]]|calculated by the collision box width rounded up.|optional=true}}&lt;br /&gt;
Used to determine how the center of the entity should be positioned when building (unless the offgrid [[Types/EntityPrototypeFlags|flag]] is specified).&lt;br /&gt;
When the tile width is odd, the center will be in the center of the tile, when it is even, the center is on the tile transition.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|tile_height|[[Types/uint32|uint32]]|calculated by the collision box height rounded up.|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|autoplace|[[Types/AutoplaceSpecification|AutoplaceSpecification]]|nil (entity is not autoplacable)|optional=true}}&lt;br /&gt;
Used to specify the rules for placing this entity during map generation.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|map_color|[[Types/Color|Color]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|friendly_map_color|[[Types/Color|Color]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|enemy_map_color|[[Types/Color|Color]]|optional=true}}&lt;br /&gt;
&lt;br /&gt;
{{Prototype property|water_reflection|[[Types/WaterReflectionDefinition|WaterReflectionDefinition]]|optional=true}}&lt;br /&gt;
May also be defined inside &amp;lt;code&amp;gt;graphics_set&amp;lt;/code&amp;gt; instead of directly in the entity prototype. This is useful for entities that use the a &amp;lt;code&amp;gt;graphics_set&amp;lt;/code&amp;gt; property to define their graphics, becausen then all graphics can be in defined one place.&lt;br /&gt;
Currently only renders for [[Prototype/EntityWithHealth]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;{&lt;br /&gt;
    type = &amp;quot;container&amp;quot;,&lt;br /&gt;
    name = &amp;quot;wooden-chest&amp;quot;,&lt;br /&gt;
    icon = &amp;quot;__base__/graphics/icons/wooden-chest.png&amp;quot;,&lt;br /&gt;
    flags = {&amp;quot;placeable-neutral&amp;quot;, &amp;quot;player-creation&amp;quot;},&lt;br /&gt;
    minable = {mining_time = 1, result = &amp;quot;wooden-chest&amp;quot;},&lt;br /&gt;
    max_health = 100,&lt;br /&gt;
    corpse = &amp;quot;small-remnants&amp;quot;,&lt;br /&gt;
    collision_box = {{-0.35, -0.35}, {0.35, 0.35}},&lt;br /&gt;
    fast_replaceable_group = &amp;quot;container&amp;quot;,&lt;br /&gt;
    selection_box = {{-0.5, -0.5}, {0.5, 0.5}},&lt;br /&gt;
    inventory_size = 16,&lt;br /&gt;
    open_sound = { filename = &amp;quot;__base__/sound/wooden-chest-open.ogg&amp;quot; },&lt;br /&gt;
    close_sound = { filename = &amp;quot;__base__/sound/wooden-chest-close.ogg&amp;quot; },&lt;br /&gt;
    vehicle_impact_sound =  { filename = &amp;quot;__base__/sound/car-wood-impact.ogg&amp;quot;, volume = 1.0 },&lt;br /&gt;
    picture =&lt;br /&gt;
    {&lt;br /&gt;
      filename = &amp;quot;__base__/graphics/entity/wooden-chest/wooden-chest.png&amp;quot;,&lt;br /&gt;
      priority = &amp;quot;extra-high&amp;quot;,&lt;br /&gt;
      width = 46,&lt;br /&gt;
      height = 33,&lt;br /&gt;
      shift = {0.25, 0.015625}&lt;br /&gt;
    },&lt;br /&gt;
    circuit_wire_connection_point =&lt;br /&gt;
    {&lt;br /&gt;
      shadow =&lt;br /&gt;
      {&lt;br /&gt;
        red = {0.734375, 0.453125},&lt;br /&gt;
        green = {0.609375, 0.515625},&lt;br /&gt;
      },&lt;br /&gt;
      wire =&lt;br /&gt;
      {&lt;br /&gt;
        red = {0.40625, 0.21875},&lt;br /&gt;
        green = {0.40625, 0.375},&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    circuit_connector_sprites = get_circuit_connector_sprites({0.1875, 0.15625}, nil, 18),&lt;br /&gt;
    circuit_wire_max_distance = 9&lt;br /&gt;
  }&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snouz1</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/WaterReflectionDefinition&amp;diff=187559</id>
		<title>Types/WaterReflectionDefinition</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/WaterReflectionDefinition&amp;diff=187559"/>
		<updated>2021-11-23T14:23:10Z</updated>

		<summary type="html">&lt;p&gt;Snouz1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Entity water reflection.&lt;br /&gt;
Currently only renders for [[Prototype/EntityWithHealth]]&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
=== pictures ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteVariations]]&lt;br /&gt;
&lt;br /&gt;
=== orientation_to_variation ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
=== rotate ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/bool]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: false&lt;/div&gt;</summary>
		<author><name>Snouz1</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Mod_settings&amp;diff=187248</id>
		<title>Tutorial:Mod settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Mod_settings&amp;diff=187248"/>
		<updated>2021-10-16T14:31:39Z</updated>

		<summary type="html">&lt;p&gt;Snouz1: Added where to access and modify settings from another mod (data.raw).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
This tutorial aims to explain how to create and use mod settings. Basic knowledge of modding is assumed, so you should have at least understood [[Tutorial:Modding tutorial/Gangsir|Gangsir&#039;s modding tutorial]].&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Each mod can specify settings that users can change. The values of these settings can be accessed from inside the data stage or the control stage depending on their [[#The_setting_type_property|setting_type]] and allow to conditionally create or modify prototypes and to add configuration options to control scripts. They allow modders to easily create a graphical interface for their configuration options, instead of using on text files that have to be edited manually by users.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Mod settings are defined in the [https://lua-api.factorio.com/latest/Data-Lifecycle.html settings stage]. This stage is loaded before the data stage. There are three files in which settings can be defined:&lt;br /&gt;
* settings.lua&lt;br /&gt;
* settings-updates.lua&lt;br /&gt;
* settings-final-fixes.lua&lt;br /&gt;
&lt;br /&gt;
First the settings.lua file is called for each mod, in the order of their dependencies and then in the [[:Wikipedia:natural sort order|natural sort order]]. After settings.lua has been called for all mods, the settings-updates.lua file is called for each mod &amp;lt;sup&amp;gt;(in the same order)&amp;lt;/sup&amp;gt; and finally the settings-final-fixes.lua file is called for each mod &amp;lt;sup&amp;gt;(in the same order)&amp;lt;/sup&amp;gt;. These 3 different phases of the settings stage allow to change settings of other mods without needing to rely on dependencies to load last. The settings are all defined in the same stage and their user defined values are not available, therefore mods cannot conditionally create settings depending on the values of other mod settings. Since the settings stage gets loaded first, there is also no prototype data or [http://lua-api.factorio.com/latest/LuaRemote.html remote interface] available.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;mod-settings.dat&amp;quot; file stored in the [[Application_directory#User_Data_directory|mods folder]] for the game contains the local players settings between game sessions similar to the player-data.json file.&lt;br /&gt;
&lt;br /&gt;
== Creation ==&lt;br /&gt;
&lt;br /&gt;
Mod settings are defined and modified by using the data table during the settings stage. This works [[Tutorial:Modding_tutorial/Gangsir#Prototype_creation|the same way as other prototypes]]. An example would be:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
data:extend({&lt;br /&gt;
    {&lt;br /&gt;
        type = &amp;quot;bool-setting&amp;quot;,&lt;br /&gt;
        name = &amp;quot;my-mod-test-setting&amp;quot;,&lt;br /&gt;
        setting_type = &amp;quot;runtime-global&amp;quot;,&lt;br /&gt;
        default_value = true&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the setting has multiple properties. Each setting supports the following standard prototype properties:&lt;br /&gt;
* name - [[Types/string|string]] - Mandatory.&lt;br /&gt;
* type - [[Types/string|string]] - Mandatory.&lt;br /&gt;
* localised_name - [[Types/LocalisedString|LocalisedString]] - Optional.&lt;br /&gt;
* localised_description - [[Types/LocalisedString|LocalisedString]] - Optional.&lt;br /&gt;
* [[Types/Order|order]] - [[Types/string|string]] - Optional.&lt;br /&gt;
&lt;br /&gt;
In addition to the standard properties, mod settings also contain:&lt;br /&gt;
&lt;br /&gt;
* hidden - [[Types/bool|bool]] - Optional.&lt;br /&gt;
* setting_type - [[Types/string|string]] - Mandatory.&lt;br /&gt;
&lt;br /&gt;
=== The name property ===&lt;br /&gt;
&lt;br /&gt;
The name of the settings prototype should be unique to avoid mod conflicts since the mod settings are global across all mods. Because of that it is recommened to prefix mod settings with your mod name, &amp;quot;my-mod&amp;quot; in this example.&lt;br /&gt;
&lt;br /&gt;
=== The type property ===&lt;br /&gt;
&lt;br /&gt;
There are four types of mod settings:&lt;br /&gt;
&lt;br /&gt;
* bool-setting - a true/false checkbox&lt;br /&gt;
* int-setting - a signed 64 bit integer textfield (or selection dropdown)&lt;br /&gt;
* double-setting - a double precision floating point textfield (or selection dropdown)&lt;br /&gt;
* string-setting - a string textfield (or selection dropdown)&lt;br /&gt;
&lt;br /&gt;
Depending on the type, the prototype also allows or requires additional properties, these are listed below.&lt;br /&gt;
&lt;br /&gt;
==== bool-setting ====&lt;br /&gt;
* default_value - [[Types/bool|bool]] - Mandatory.&lt;br /&gt;
** Defines the default value of the setting, in this case whether the checkbox is checked or not.&lt;br /&gt;
* forced_value - [[Types/bool|bool]] - Optional.&lt;br /&gt;
** Only loaded if &amp;lt;code&amp;gt;hidden = true&amp;lt;/code&amp;gt;. This forces the setting to be of this value. This can be useful for mod compatiblity.&amp;lt;sup&amp;gt;[https://forums.factorio.com/viewtopic.php?p=531322#p531322]&lt;br /&gt;
&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== int-setting ====&lt;br /&gt;
* default_value - [[Types/int64|int64]] - Mandatory.&lt;br /&gt;
** Defines the default value of the setting.&lt;br /&gt;
* minimum_value - [[Types/int64|int64]] - Optional.&lt;br /&gt;
** Defines the lowest possible number.&lt;br /&gt;
* maximum_value - [[Types/int64|int64]] - Optional.&lt;br /&gt;
** Defines the highest possible number.&lt;br /&gt;
* allowed_values - [[Types/table|array]] of [[Types/int64|int64]] - Optional.&lt;br /&gt;
** Makes it possible to force the player to choose between the defined numbers, creates a dropdown instead of a texfield.&lt;br /&gt;
** If only one allowed value is given, the settings is forced to be of that value.&lt;br /&gt;
&lt;br /&gt;
==== double-setting ====&lt;br /&gt;
* default_value - [[Types/double|double]] - Mandatory.&lt;br /&gt;
** Defines the default value of the setting.&lt;br /&gt;
* minimum_value - [[Types/double|double]] - Optional.&lt;br /&gt;
** Defines the lowest possible number.&lt;br /&gt;
* maximum_value - [[Types/double|double]] - Optional.&lt;br /&gt;
** Defines the highest possible number.&lt;br /&gt;
* allowed_values - [[Types/table|array]] of [[Types/double|double]] - Optional.&lt;br /&gt;
** Makes it possible to force the player to choose between the defined numbers, creates a dropdown instead of a textfield.&lt;br /&gt;
** If only one allowed value is given, the settings is forced to be of that value.&lt;br /&gt;
&lt;br /&gt;
==== string-setting ====&lt;br /&gt;
* default_value - [[Types/string|string]] - Mandatory.&lt;br /&gt;
** Defines the default value of the setting.&lt;br /&gt;
* allow_blank - [[Types/bool|bool]] - Optional. - Default: false&lt;br /&gt;
** Defines whether it&#039;s possible for the user to set the textfield to empty and apply the setting.&lt;br /&gt;
* auto_trim - [[Types/bool|bool]] - Optional. - Default: false&lt;br /&gt;
** Whether values that are input by the user should have whitespace removed from both ends of the string.&lt;br /&gt;
* allowed_values - [[Types/table|array]] of [[Types/string|string]] - Optional.&lt;br /&gt;
** Makes it possible to force the player to choose between the defined strings, creates a dropdown instead of a textfield. The strings in the dropdown can be localized (translated) and can have a tooltip, see below.&lt;br /&gt;
** If only one allowed value is given, the settings is forced to be of that value.&lt;br /&gt;
&lt;br /&gt;
=== The order property ===&lt;br /&gt;
&lt;br /&gt;
The order property can be used to change how the mod settings are ordered in the settings gui. Mod settings are sorted&lt;br /&gt;
* first by mod&lt;br /&gt;
* then by the setting &amp;quot;order&amp;quot; string&lt;br /&gt;
* then finally by the setting name.&lt;br /&gt;
&lt;br /&gt;
For more info on how to use the order string, see [[Types/Order]].&lt;br /&gt;
&lt;br /&gt;
=== The hidden property ===&lt;br /&gt;
&lt;br /&gt;
The hidden property can be used to hide mod settings from GUIs, so that they cannot be seen or changed by players. However, other mods can still access hidden settings.&amp;lt;sup&amp;gt;[https://forums.factorio.com/83316]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The setting_type property ===&lt;br /&gt;
[[File:Mod_settings_gui.png|right|300px|thumb|The mod settings gui. Can be reached from the main menu → Settings → Mod settings.]]&lt;br /&gt;
There are the overall kinds of settings:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;startup&#039;&#039;&#039;: This kind of setting is available in the prototype stage, and can not be changed runtime. They have to be  set to the same values for all players on a server.&lt;br /&gt;
* &#039;&#039;&#039;runtime-global&#039;&#039;&#039;: This kind of setting is global to an entire save game and can be changed runtime. On servers, only admins can change these settings.&lt;br /&gt;
* &#039;&#039;&#039;runtime-per-user&#039;&#039;&#039;: This kind of setting is only available runtime in the control.lua stage and each player has their own instance of this setting. When a player joins a server their local setting of &amp;quot;keep mod settings per save&amp;quot; determines if the local settings they have set are synced to the loaded save or if the save&#039;s settings are used.&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;setting_type&amp;quot; also determines in which tab the setting is showed in the mod settings menu.&lt;br /&gt;
&lt;br /&gt;
=== Locale ===&lt;br /&gt;
The locale for mod settings works like any other locale in the game. The names of the groups for the setting name and description (tooltip) are &amp;quot;mod-setting-name&amp;quot; and &amp;quot;mod-setting-description&amp;quot;. The dropdown items of a string setting can be localized in the &amp;quot;string-mod-setting&amp;quot; group, but the game falls back to just showing the name of the dropdown item if no localization is found. An example for mod setting localization that would be set within &amp;quot;locale/en/locale.cfg&amp;quot;, is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[mod-setting-name]&lt;br /&gt;
my-mod-test-setting=Localized test setting name&lt;br /&gt;
&lt;br /&gt;
[mod-setting-description]&lt;br /&gt;
my-mod-test-setting=Localized test setting description&lt;br /&gt;
&lt;br /&gt;
[string-mod-setting]&lt;br /&gt;
#&amp;lt;setting-name&amp;gt;-&amp;lt;dropdown-item-name&amp;gt;=&amp;lt;translated dropdown item&amp;gt;&lt;br /&gt;
my-mod-string-test-setting-item-1=Item 1 localized string&lt;br /&gt;
&lt;br /&gt;
[string-mod-setting-description]&lt;br /&gt;
#&amp;lt;setting-name&amp;gt;-&amp;lt;dropdown-item-name&amp;gt;=&amp;lt;tooltip of dropdown item&amp;gt;&lt;br /&gt;
my-mod-string-test-setting-item-1=Item 1 localized tooltip&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
=== Reading settings ===&lt;br /&gt;
When accessing any mod setting, you will have to specifically access the &#039;&#039;value&#039;&#039; of the setting. The data type of the value depends on the type of the setting. For string settings that use a selection of allowed values, the value of the setting is one of the original string values defined in the prototype, the localization is ignored. See also: [http://lua-api.factorio.com/latest/Concepts.html#ModSetting ModSetting concept].&lt;br /&gt;
&lt;br /&gt;
In the prototype stage you can access settings of the setting_type &amp;quot;startup&amp;quot; using the [http://lua-api.factorio.com/latest/LuaSettings.html settings table]. Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--in settings.lua:&lt;br /&gt;
data:extend({&lt;br /&gt;
    {&lt;br /&gt;
        type = &amp;quot;int-setting&amp;quot;,&lt;br /&gt;
        name = &amp;quot;my-mod-stone-wall-stack-size&amp;quot;,&lt;br /&gt;
        setting_type = &amp;quot;startup&amp;quot;,&lt;br /&gt;
        minimum_value = 1,&lt;br /&gt;
        default_value = 100&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
--in data.lua:&lt;br /&gt;
data.raw.item[&amp;quot;stone-wall&amp;quot;].stack_size = settings.startup[&amp;quot;my-mod-stone-wall-stack-size&amp;quot;].value&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;plainlinks&amp;quot;&amp;gt;&lt;br /&gt;
In the control stage, the settings of the setting_type &amp;quot;runtime-global&amp;quot; can be accessed using &amp;lt;code&amp;gt;settings.global[&amp;quot;setting-name&amp;quot;]&amp;lt;/code&amp;gt;. Settings of the setting_type &amp;quot;runtime-per-user&amp;quot; are accessed using &amp;lt;code&amp;gt;settings.get_player_settings([https://lua-api.factorio.com/latest/Concepts.html#PlayerIdentification &amp;amp;lt;PlayerIdentification&amp;amp;gt;])[&amp;quot;setting-name&amp;quot;]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;game.players[[https://lua-api.factorio.com/latest/Concepts.html#PlayerIdentification &amp;amp;lt;PlayerIdentification&amp;amp;gt;]].mod_settings[&amp;quot;setting-name&amp;quot;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--in settings.lua:&lt;br /&gt;
data:extend({&lt;br /&gt;
    {&lt;br /&gt;
        type = &amp;quot;string-setting&amp;quot;,&lt;br /&gt;
        name = &amp;quot;my-mod-always-difficult&amp;quot;,&lt;br /&gt;
        setting_type = &amp;quot;runtime-global&amp;quot;,&lt;br /&gt;
        default_value = &amp;quot;yes&amp;quot;,&lt;br /&gt;
        allowed_values = {&amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;}&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        type = &amp;quot;bool-setting&amp;quot;,&lt;br /&gt;
        name = &amp;quot;my-mod-kill-player-on-entity-built&amp;quot;,&lt;br /&gt;
        setting_type = &amp;quot;runtime-per-user&amp;quot;,&lt;br /&gt;
        default_value = false&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
--in control.lua:&lt;br /&gt;
script.on_init(function()&lt;br /&gt;
    if settings.global[&amp;quot;my-mod-always-difficult&amp;quot;].value == &amp;quot;yes&amp;quot; then&lt;br /&gt;
        game.difficulty_settings.recipe_difficulty = 1&lt;br /&gt;
        game.difficulty_settings.technology_difficulty = 1&lt;br /&gt;
        game.difficulty_settings.technology_price_multiplier = 4&lt;br /&gt;
    end&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
script.on_event(defines.events.on_built_entity, function(event)&lt;br /&gt;
    local setting_value = settings.get_player_settings(event.player_index)[&amp;quot;my-mod-kill-player-on-entity-built&amp;quot;].value&lt;br /&gt;
    if setting_value then&lt;br /&gt;
        game.get_player(event.player_index).die()&lt;br /&gt;
    end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Writing to settings ===&lt;br /&gt;
It is possible for mods to write to their own runtime (global or per player) mod settings. This is done by writing a new [https://lua-api.factorio.com/latest/Concepts.html#ModSetting ModSetting] table to the setting.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--in settings.lua:&lt;br /&gt;
data:extend({&lt;br /&gt;
    {&lt;br /&gt;
        type = &amp;quot;string-setting&amp;quot;,&lt;br /&gt;
        name = &amp;quot;my-mod-always-difficult&amp;quot;,&lt;br /&gt;
        setting_type = &amp;quot;runtime-global&amp;quot;,&lt;br /&gt;
        default_value = &amp;quot;yes&amp;quot;,&lt;br /&gt;
        allowed_values = {&amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
--in control.lua:&lt;br /&gt;
script.on_event(defines.events.on_rocket_launched, function()&lt;br /&gt;
    settings.global[&amp;quot;my-mod-always-difficult&amp;quot;] = {value = &amp;quot;yes&amp;quot;}&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are then stored in data.raw until the end of the settings stage, so you can alter them from another mod&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--in settings-updates.lua:&lt;br /&gt;
data.raw[&amp;quot;string-setting&amp;quot;][&amp;quot;my-mod-always-difficult&amp;quot;].default_value = &amp;quot;no&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tips ===&lt;br /&gt;
&lt;br /&gt;
* Do not conditionally &#039;require(...)&#039; things depending on mod settings: This breaks the CRC checks and people will get errors trying to use your mod in multiplayer. &#039;require(...)&#039; everything and then conditionally add the values to data.raw using the settings.&lt;br /&gt;
* You should cache the settings table inside the event you use it in. Accessing it is relatively expensive (about as expensive as accessing game.*prototypes[...]), so when accessing it mutliple times within the same event, you should set a local variable to it (within the event) to improve performance.&lt;br /&gt;
** If you want to cache startup/and runtime settings outside of events, you will have to makes sure that the local variable of settings of the setting_type &amp;quot;runtime-global&amp;quot; are updated in the &amp;lt;code&amp;gt;on_runtime_mod_setting_changed&amp;lt;/code&amp;gt; event.&lt;br /&gt;
* If you want to detect whether a certain mod is installed in the settings stage, you can use &amp;lt;code&amp;gt;if mods[&amp;quot;another-mods-name&amp;quot;] then&amp;lt;/code&amp;gt;, just like in the data stage.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://forums.factorio.com/viewtopic.php?p=207275 Forum post documenting mod settings]&lt;br /&gt;
* [https://forums.factorio.com/viewtopic.php?p=305644#p305644 per_user is not a valid property and has no effects!]&lt;br /&gt;
* [http://lua-api.factorio.com/latest/LuaSettings.html Lua api documentation on the settings table]&lt;/div&gt;</summary>
		<author><name>Snouz1</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/IconData&amp;diff=186752</id>
		<title>Types/IconData</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/IconData&amp;diff=186752"/>
		<updated>2021-08-08T12:15:35Z</updated>

		<summary type="html">&lt;p&gt;Snouz1: Added an example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Data of one icon &amp;quot;layer&amp;quot; for the &amp;lt;code&amp;gt;icons&amp;lt;/code&amp;gt; property of the [[Types/IconSpecification]].&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
=== icon ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/FileName]]&lt;br /&gt;
&lt;br /&gt;
The path to the icon.&lt;br /&gt;
&lt;br /&gt;
=== icon_size ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;icon_size&amp;lt;/code&amp;gt; is not specified outside of &amp;lt;code&amp;gt;icons&amp;lt;/code&amp;gt;. The size of the square icon, in pixels, e.g. 32 for a 32px by 32px icon.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
=== tint ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Color]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: {r=1, g=1, b=1, a=1}&lt;br /&gt;
&lt;br /&gt;
Tint of the icon. Default is when tint = nil. See Type for full details.&lt;br /&gt;
&lt;br /&gt;
=== shift ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/vector]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: {0, 0}&lt;br /&gt;
&lt;br /&gt;
Used to offset the icon &amp;quot;layer&amp;quot; from the overall icon.&lt;br /&gt;
&lt;br /&gt;
=== scale ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default for items/recipes&#039;&#039;&#039;: (32/icon_size)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default for technologies&#039;&#039;&#039;: (256/icon_size)&lt;br /&gt;
&lt;br /&gt;
When set, specifies the scale of the icon on the GUI scale.&lt;br /&gt;
Scale 2 means that the icon will be 2 times bigger on screen (and more pixelated).&lt;br /&gt;
&lt;br /&gt;
=== icon_mipmaps ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
• Only the first icon layer will display a shadow.&lt;br /&gt;
&lt;br /&gt;
• The final combination of icons will always be resized in GUI based on the first icon layer&#039;s size, but won&#039;t be resized when displayed on machines in alt-mode.&lt;br /&gt;
(example: recipe first icon is size 128, scale 1, the icon group will be displayed at resolution /4 to fit the 32px GUI boxes, but will be displayed 4 times as large on buildings)&lt;br /&gt;
&lt;br /&gt;
• Shift values are based on final size (icon_size * scale) of the first icon.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;{&lt;br /&gt;
  icon = &amp;quot;__base__/graphics/icons/fluid/heavy-oil.png&amp;quot;,&lt;br /&gt;
  icon_size = 64,&lt;br /&gt;
  scale = 0.5,&lt;br /&gt;
  shift = {4, -8}&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snouz1</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/IconData&amp;diff=186751</id>
		<title>Types/IconData</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/IconData&amp;diff=186751"/>
		<updated>2021-08-07T22:11:45Z</updated>

		<summary type="html">&lt;p&gt;Snouz1: Added some precisions about scale, shift and shadow, based on my tests.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Data of one icon &amp;quot;layer&amp;quot; for the &amp;lt;code&amp;gt;icons&amp;lt;/code&amp;gt; property of the [[Types/IconSpecification]].&lt;br /&gt;
&lt;br /&gt;
== Mandatory properties ==&lt;br /&gt;
=== icon ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/FileName]]&lt;br /&gt;
&lt;br /&gt;
The path to the icon.&lt;br /&gt;
&lt;br /&gt;
=== icon_size ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/SpriteSizeType]]&lt;br /&gt;
&lt;br /&gt;
Mandatory if &amp;lt;code&amp;gt;icon_size&amp;lt;/code&amp;gt; is not specified outside of &amp;lt;code&amp;gt;icons&amp;lt;/code&amp;gt;. The size of the square icon, in pixels, e.g. 32 for a 32px by 32px icon.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
=== tint ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Color]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: {r=1, g=1, b=1, a=1}&lt;br /&gt;
&lt;br /&gt;
Tint of the icon. Default is when tint = nil. See Type for full details.&lt;br /&gt;
&lt;br /&gt;
=== shift ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/vector]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: {0, 0}&lt;br /&gt;
&lt;br /&gt;
Used to offset the icon &amp;quot;layer&amp;quot; from the overall icon.&lt;br /&gt;
&lt;br /&gt;
=== scale ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default for items/recipes&#039;&#039;&#039;: (32/icon_size)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default for technologies&#039;&#039;&#039;: (256/icon_size)&lt;br /&gt;
&lt;br /&gt;
When set, specifies the scale of the icon on the GUI scale.&lt;br /&gt;
Scale 2 means that the icon will be 2 times bigger on screen (and more pixelated).&lt;br /&gt;
&lt;br /&gt;
=== icon_mipmaps ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/uint8]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
• Only the first icon layer will display a shadow.&lt;br /&gt;
&lt;br /&gt;
• The final combination of icons will always be resized in GUI based on the first icon layer&#039;s size, but won&#039;t be resized when displayed on machines in alt-mode.&lt;br /&gt;
&lt;br /&gt;
• Shift values are based on final size (icon_size * scale) of the first icon.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;{&lt;br /&gt;
  icon = &amp;quot;__base__/graphics/icons/fluid/heavy-oil.png&amp;quot;,&lt;br /&gt;
  icon_size = 64,&lt;br /&gt;
  scale = 0.5,&lt;br /&gt;
  shift = {4, -8}&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snouz1</name></author>
	</entry>
</feed>