<?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=Raiguard</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=Raiguard"/>
	<link rel="alternate" type="text/html" href="https://wiki.factorio.com/Special:Contributions/Raiguard"/>
	<updated>2026-04-07T19:23:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/EnergySource&amp;diff=182495</id>
		<title>Types/EnergySource</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/EnergySource&amp;diff=182495"/>
		<updated>2020-09-17T19:49:30Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: /* Electric energy source */ Remove inaccurate info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Specifies the way the entity gets its energy.&lt;br /&gt;
=== type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Mandatory. Only valid values are &amp;quot;electric&amp;quot;, &amp;quot;burner&amp;quot;, &amp;quot;heat&amp;quot;, &amp;quot;fluid&amp;quot; or &amp;quot;void&amp;quot;, it specifies the type of the energy source to be used.&lt;br /&gt;
&lt;br /&gt;
=== emissions_per_minute ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Optional. The pollution an entity emits per minute at full energy consumption. &amp;lt;code&amp;gt;emissions_per_minute&amp;lt;/code&amp;gt; is exactly the value that is shown in the entity tooltip.&lt;br /&gt;
&lt;br /&gt;
=== render_no_power_icon ===&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;: true&lt;br /&gt;
&lt;br /&gt;
Optional. Whether to render the [[File:Electricity-icon-red.png|50px]] icon on the entity if it is low on power. Also applies to [[File:Fuel-icon-red.png|50px]] when using a burner energy source.&lt;br /&gt;
&lt;br /&gt;
=== render_no_network_icon ===&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;: true&lt;br /&gt;
&lt;br /&gt;
Optional. Whether to render the [[File:Electricity-icon-unplugged.png|50px]] icon on the entity if it is not connected to a electric network.&lt;br /&gt;
&lt;br /&gt;
== Electric energy source ==&lt;br /&gt;
=== buffer_capacity ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Optional. How much power the entity holds.&lt;br /&gt;
=== usage_priority ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/ElectricUsagePriority]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
=== input_flow_limit ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: max double&lt;br /&gt;
&lt;br /&gt;
Optional. How fast the energy can flow into the entity. 0 means 0.&lt;br /&gt;
=== output_flow_limit ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: max double&lt;br /&gt;
&lt;br /&gt;
Optional. How fast the energy can flow out of the entity. 0 means 0.&lt;br /&gt;
&lt;br /&gt;
=== drain ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Optional. How much energy the entity will &amp;quot;drain&amp;quot; from the network when not in use.&lt;br /&gt;
&lt;br /&gt;
== Burner ==&lt;br /&gt;
=== fuel_inventory_size ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/ItemStackIndex]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
&lt;br /&gt;
=== burnt_inventory_size ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/ItemStackIndex]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== smoke ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/SmokeSource]]&lt;br /&gt;
&lt;br /&gt;
Optional. Array of 1 or more smoke sources.&lt;br /&gt;
&lt;br /&gt;
=== light_flicker ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/LightFlickeringDefinition]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== effectivity ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Optional. 1 means 100% effectivity. Must be greater than 0. Multiplier of the energy output.&lt;br /&gt;
&lt;br /&gt;
=== fuel_category ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;chemical&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Optional. The energy source can be used with fuel from this [[Prototype/FuelCategory|fuel category]]. For a list on built-in categories, see [[Data.raw#fuel-category]].&lt;br /&gt;
&lt;br /&gt;
=== fuel_categories ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Optional. Same as above, only one of them can exist. For a list on built-in categories, see [[Data.raw#fuel-category]].&lt;br /&gt;
&lt;br /&gt;
== Heat energy source ==&lt;br /&gt;
=== max_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
Mandatory. max_temperature must be &amp;gt;= default_temperature.&lt;br /&gt;
&lt;br /&gt;
=== default_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 15&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== specific_heat ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
&lt;br /&gt;
=== max_transfer ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
&lt;br /&gt;
=== min_temperature_gradient ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== min_working_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 15&lt;br /&gt;
&lt;br /&gt;
Optional. min_working_temperature must be &amp;gt;= default_temperature. min_working_temperature must be &amp;lt;= max_temperature.&lt;br /&gt;
&lt;br /&gt;
=== minimum_glow_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== pipe_covers ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== heat_pipe_covers ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== heat_picture ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== heat_glow ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== connections ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/HeatConnection]]&lt;br /&gt;
&lt;br /&gt;
Optional. The table may only contain up to 32 connections.&lt;br /&gt;
&lt;br /&gt;
== Void energy source ==&lt;br /&gt;
Void is free energy, there are no additional entries required.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
  energy_source = {type = &amp;quot;void&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fluid energy source ==&lt;br /&gt;
=== fluid_box ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/FluidBox]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
All standard fluid box configurations are acceptable, but the type must be &amp;quot;input&amp;quot; or &amp;quot;input-output&amp;quot; to function correctly.&lt;br /&gt;
Scale_fluid_usage, fluid_usage_per_tick or a filter on the fluidbox must be set to be able to calculate the fluid usage of the energy source.&lt;br /&gt;
&lt;br /&gt;
=== smoke ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/SmokeSource]]&lt;br /&gt;
&lt;br /&gt;
Optional. Array of 1 or more smoke sources.&lt;br /&gt;
&lt;br /&gt;
=== light_flicker ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/LightFlickeringDefinition]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== effectivity ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Optional. 1 means 100% effectivity. Must be greater than 0. Multiplier of the energy output.&lt;br /&gt;
&lt;br /&gt;
=== burns_fluid ===&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;
Optional. If set to true, the energy source will calculate power based on the fluid&#039;s fuel_value entry, else it will calculate based on fluid temperature, like [[Prototype/Generator]].&lt;br /&gt;
&lt;br /&gt;
=== scale_fluid_usage ===&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;
Optional. If set to true, the energy source will consume as much fluid as required to produce the desired power, if set to false it will consume as much as it is allowed to, wasting any excess.&lt;br /&gt;
&lt;br /&gt;
=== fluid_usage_per_tick ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Optional. The number of fluid units the energy source uses per tick.&lt;br /&gt;
If used with scale_fluid_usage, this specifies the maximum. If this value is not set, scale_energy_usage = false and a fluid box filter is set, the game will attempt to calculate this value from the fluid box filter&#039;s fluid&#039;s fuel_value or heat_capacity and the entity&#039;s energy_usage. If burns_fluid is false, maximum_temperature will also be used.&lt;br /&gt;
&lt;br /&gt;
=== maximum_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: unlimited&lt;br /&gt;
&lt;br /&gt;
If it is specified while scale_fluid_usage = false and fluid_usage_per_tick is not specified, the game will use this value to calculate fluid_usage_per_tick.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property type usage|{{FULLPAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Types/EnergySource&amp;diff=182494</id>
		<title>Types/EnergySource</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Types/EnergySource&amp;diff=182494"/>
		<updated>2020-09-17T19:38:34Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: /* Electric energy source */ Default drain.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
Specifies the way the entity gets its energy.&lt;br /&gt;
=== type ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Mandatory. Only valid values are &amp;quot;electric&amp;quot;, &amp;quot;burner&amp;quot;, &amp;quot;heat&amp;quot;, &amp;quot;fluid&amp;quot; or &amp;quot;void&amp;quot;, it specifies the type of the energy source to be used.&lt;br /&gt;
&lt;br /&gt;
=== emissions_per_minute ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Optional. The pollution an entity emits per minute at full energy consumption. &amp;lt;code&amp;gt;emissions_per_minute&amp;lt;/code&amp;gt; is exactly the value that is shown in the entity tooltip.&lt;br /&gt;
&lt;br /&gt;
=== render_no_power_icon ===&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;: true&lt;br /&gt;
&lt;br /&gt;
Optional. Whether to render the [[File:Electricity-icon-red.png|50px]] icon on the entity if it is low on power. Also applies to [[File:Fuel-icon-red.png|50px]] when using a burner energy source.&lt;br /&gt;
&lt;br /&gt;
=== render_no_network_icon ===&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;: true&lt;br /&gt;
&lt;br /&gt;
Optional. Whether to render the [[File:Electricity-icon-unplugged.png|50px]] icon on the entity if it is not connected to a electric network.&lt;br /&gt;
&lt;br /&gt;
== Electric energy source ==&lt;br /&gt;
=== buffer_capacity ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Optional. How much power the entity holds.&lt;br /&gt;
=== usage_priority ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/ElectricUsagePriority]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
=== input_flow_limit ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: max double&lt;br /&gt;
&lt;br /&gt;
Optional. How fast the energy can flow into the entity. 0 means 0.&lt;br /&gt;
=== output_flow_limit ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: max double&lt;br /&gt;
&lt;br /&gt;
Optional. How fast the energy can flow out of the entity. 0 means 0.&lt;br /&gt;
&lt;br /&gt;
=== drain ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Optional. If not specified, defaults to 1/30th of the prototype&#039;s energy usage.&lt;br /&gt;
&lt;br /&gt;
== Burner ==&lt;br /&gt;
=== fuel_inventory_size ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/ItemStackIndex]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
&lt;br /&gt;
=== burnt_inventory_size ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/ItemStackIndex]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== smoke ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/SmokeSource]]&lt;br /&gt;
&lt;br /&gt;
Optional. Array of 1 or more smoke sources.&lt;br /&gt;
&lt;br /&gt;
=== light_flicker ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/LightFlickeringDefinition]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== effectivity ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Optional. 1 means 100% effectivity. Must be greater than 0. Multiplier of the energy output.&lt;br /&gt;
&lt;br /&gt;
=== fuel_category ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: &amp;quot;chemical&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Optional. The energy source can be used with fuel from this [[Prototype/FuelCategory|fuel category]]. For a list on built-in categories, see [[Data.raw#fuel-category]].&lt;br /&gt;
&lt;br /&gt;
=== fuel_categories ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/string]]&lt;br /&gt;
&lt;br /&gt;
Optional. Same as above, only one of them can exist. For a list on built-in categories, see [[Data.raw#fuel-category]].&lt;br /&gt;
&lt;br /&gt;
== Heat energy source ==&lt;br /&gt;
=== max_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
Mandatory. max_temperature must be &amp;gt;= default_temperature.&lt;br /&gt;
&lt;br /&gt;
=== default_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 15&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== specific_heat ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
&lt;br /&gt;
=== max_transfer ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Energy]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
&lt;br /&gt;
=== min_temperature_gradient ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== min_working_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 15&lt;br /&gt;
&lt;br /&gt;
Optional. min_working_temperature must be &amp;gt;= default_temperature. min_working_temperature must be &amp;lt;= max_temperature.&lt;br /&gt;
&lt;br /&gt;
=== minimum_glow_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/float]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
=== pipe_covers ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== heat_pipe_covers ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== heat_picture ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== heat_glow ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/Sprite4Way]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== connections ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/HeatConnection]]&lt;br /&gt;
&lt;br /&gt;
Optional. The table may only contain up to 32 connections.&lt;br /&gt;
&lt;br /&gt;
== Void energy source ==&lt;br /&gt;
Void is free energy, there are no additional entries required.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
  energy_source = {type = &amp;quot;void&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fluid energy source ==&lt;br /&gt;
=== fluid_box ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/FluidBox]]&lt;br /&gt;
&lt;br /&gt;
Mandatory.&lt;br /&gt;
All standard fluid box configurations are acceptable, but the type must be &amp;quot;input&amp;quot; or &amp;quot;input-output&amp;quot; to function correctly.&lt;br /&gt;
Scale_fluid_usage, fluid_usage_per_tick or a filter on the fluidbox must be set to be able to calculate the fluid usage of the energy source.&lt;br /&gt;
&lt;br /&gt;
=== smoke ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/table]] of [[Types/SmokeSource]]&lt;br /&gt;
&lt;br /&gt;
Optional. Array of 1 or more smoke sources.&lt;br /&gt;
&lt;br /&gt;
=== light_flicker ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/LightFlickeringDefinition]]&lt;br /&gt;
&lt;br /&gt;
Optional.&lt;br /&gt;
&lt;br /&gt;
=== effectivity ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 1&lt;br /&gt;
&lt;br /&gt;
Optional. 1 means 100% effectivity. Must be greater than 0. Multiplier of the energy output.&lt;br /&gt;
&lt;br /&gt;
=== burns_fluid ===&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;
Optional. If set to true, the energy source will calculate power based on the fluid&#039;s fuel_value entry, else it will calculate based on fluid temperature, like [[Prototype/Generator]].&lt;br /&gt;
&lt;br /&gt;
=== scale_fluid_usage ===&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;
Optional. If set to true, the energy source will consume as much fluid as required to produce the desired power, if set to false it will consume as much as it is allowed to, wasting any excess.&lt;br /&gt;
&lt;br /&gt;
=== fluid_usage_per_tick ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: 0&lt;br /&gt;
&lt;br /&gt;
Optional. The number of fluid units the energy source uses per tick.&lt;br /&gt;
If used with scale_fluid_usage, this specifies the maximum. If this value is not set, scale_energy_usage = false and a fluid box filter is set, the game will attempt to calculate this value from the fluid box filter&#039;s fluid&#039;s fuel_value or heat_capacity and the entity&#039;s energy_usage. If burns_fluid is false, maximum_temperature will also be used.&lt;br /&gt;
&lt;br /&gt;
=== maximum_temperature ===&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: [[Types/double]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;: unlimited&lt;br /&gt;
&lt;br /&gt;
If it is specified while scale_fluid_usage = false and fluid_usage_per_tick is not specified, the game will use this value to calculate fluid_usage_per_tick.&lt;br /&gt;
&lt;br /&gt;
{{Prototype property type usage|{{FULLPAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180922</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI/Style guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180922"/>
		<updated>2020-07-14T18:29:39Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: Dialog row micro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE IS A WORK IN PROGRESS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This style guide is designed to give you an overview of the precepts and specific element styles used to create 0.18-esque GUIs. This guide is not to be taken as gospel - the contents are merely suggestions to help you improve your interfaces.&lt;br /&gt;
&lt;br /&gt;
This style guide assumes you know how to create GUIs, assign styles to elements, and edit styles. If you do not know these things, this guide won&#039;t be of much use to you.&lt;br /&gt;
&lt;br /&gt;
== Window ==&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial window types.png|Standard vs. dialog windows.]]&lt;br /&gt;
&lt;br /&gt;
Windows are created using the default frame style. Because of this, you need not specify a style when creating the element.&lt;br /&gt;
&lt;br /&gt;
For windows that contain multiple sub-windows (e.g. most windows that hold a character inventory) &amp;lt;code&amp;gt;outer_frame&amp;lt;/code&amp;gt; is used as the outer frame and &amp;lt;code&amp;gt;inner_frame_in_outer_frame&amp;lt;/code&amp;gt; is used for each internal window.&lt;br /&gt;
&lt;br /&gt;
Generally there are three kinds of windows:&lt;br /&gt;
* &#039;&#039;&#039;Standard&#039;&#039;&#039; windows have a close button in the top-right corner, and are opened/closed manually either by clicking something or using a hotkey.&lt;br /&gt;
* &#039;&#039;&#039;Dialog&#039;&#039;&#039; windows have a row of dialog buttons along the bottom, and do &#039;&#039;not&#039;&#039; have a close button. These are used when there is a clear hierarchy of actions - you go &amp;quot;back&amp;quot; to the previous action, or you &amp;quot;confirm&amp;quot; the current action. These windows &#039;&#039;&#039;must&#039;&#039;&#039; have a &amp;quot;Back&amp;quot; button in the bottom-left corner, and &#039;&#039;&#039;may&#039;&#039;&#039; have a &amp;quot;Confirm&amp;quot; button in the bottom-right corner. Other buttons on the bottom row are optional and should be used sparingly.&lt;br /&gt;
* &#039;&#039;&#039;Compact&#039;&#039;&#039; windows have neither a titlebar nor a dialog row. These are usually mini-GUIs that are opened/closed automatically as a result of some user action. There are no set rules for these kinds of GUIs, it entirely depends on what they&#039;re used for.&lt;br /&gt;
&lt;br /&gt;
=== Titlebar ===&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial dialog types.png|Draggable vs. non-draggable windows.]]&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have a titlebar. All titlebars include a &#039;&#039;&#039;title&#039;&#039;&#039;, and for windows that are meant to be draggable, the titlebar includes a drag handle. &#039;&#039;&#039;Standard&#039;&#039;&#039; windows also include a close button. Other frame action buttons may be added to the left of the close button, but should be used sparingly.&lt;br /&gt;
&lt;br /&gt;
Titlebars are created using a simple &#039;&#039;&#039;horizontal flow&#039;&#039;&#039; with no special edits - the default style is perfect for this case.&lt;br /&gt;
&lt;br /&gt;
* The title text is a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_title&amp;lt;/code&amp;gt; style. Set &amp;lt;code&amp;gt;ignored_by_interaction&amp;lt;/code&amp;gt; on this element, so the dragging functionality will work.&lt;br /&gt;
* The &amp;quot;drag handle&amp;quot; is an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; element with the &amp;lt;code&amp;gt;draggable_space_header&amp;lt;/code&amp;gt; style. You will need to apply &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; to the element&#039;s style, and set the &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;. If adding a close button or other frame action button, set the &amp;lt;code&amp;gt;right_margin&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;. This element also requires &amp;lt;code&amp;gt;ignored_by_interaction&amp;lt;/code&amp;gt; to be true, so the dragging functionality will work.&lt;br /&gt;
* Close buttons, or any other frame action buttons you are adding, are created with &amp;lt;code&amp;gt;sprite-button&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_action_button&amp;lt;/code&amp;gt; style. The default sprite should be colored (RGB) &amp;lt;code&amp;gt;227,227,227&amp;lt;/code&amp;gt;, and the hovered and clicked sprites should be colored (RGB) &amp;lt;code&amp;gt;29,29,29&amp;lt;/code&amp;gt;. Custom frame action sprites should be 26x26 with a 3px padding around the edges, making for a file size of 32x32. As of the time of writing, the base game does not use mipmaps for these icons, but it would probably be a good idea to add them to your own icons just in case.&lt;br /&gt;
* When creating draggable windows, &amp;lt;code&amp;gt;drag_target&amp;lt;/code&amp;gt; should be set on the &#039;&#039;&#039;flow element&#039;&#039;&#039; that comprises the titlebar, not the &amp;quot;drag handle&amp;quot; itself.&lt;br /&gt;
* If your window is not in &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; or is otherwise non-draggable, &#039;&#039;&#039;DO NOT&#039;&#039;&#039; add a drag handle. Instead, use an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; enabled.&lt;br /&gt;
&lt;br /&gt;
=== Content frame ===&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial content frame with padding.png|An example of &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt;, demonstrating the built-in 12px padding.]]&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have at least one &amp;quot;content frame&amp;quot; (the light grey pane seen in the above screenshots). This is where the meat of your interface will go.&lt;br /&gt;
&lt;br /&gt;
Content frames are created using the &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt; style. This will give you 12px of padding in the frame. If you need to have zero padding (i.e. for adding a scroll pane or a toolbar), use &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
It is good practice to separate different &amp;quot;purposes&amp;quot; in a GUI with different content panes. For example, Recipe Book uses different content panes for search and information:&lt;br /&gt;
&lt;br /&gt;
TODO add image&lt;br /&gt;
&lt;br /&gt;
If you add multiple content panes, add them to a flow element with &amp;lt;code&amp;gt;horizontal_spacing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;vertical_spacing&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Dialog Row ===&lt;br /&gt;
&lt;br /&gt;
The dialog row is the row of buttons at the bottom of a dialog window. Generally, a window will have one or two of these, but more can be added if necessary.&lt;br /&gt;
&lt;br /&gt;
The game uses a left-to-right methodology for its navigation. Therefore, the leftmost dialog button is the &amp;quot;back&amp;quot; or &amp;quot;cancel&amp;quot; action, while the rightmost is the &amp;quot;confirm&amp;quot; action. Because dialogs have an actual &amp;quot;confirm&amp;quot; action, changes to the content of the dialog should not be saved until the &amp;quot;confirm&amp;quot; button is clicked and the window closed.&lt;br /&gt;
&lt;br /&gt;
TODO list styles&lt;br /&gt;
&lt;br /&gt;
== Toolbar ==&lt;br /&gt;
&lt;br /&gt;
Toolbars are a great place to keep a content pane&#039;s &amp;quot;title&amp;quot; as well as tools used in that pane. You can see two examples of toolbars in the Recipe Book screenshot above.&lt;br /&gt;
&lt;br /&gt;
Toolbars are created using the &amp;lt;code&amp;gt;subheader_frame&amp;lt;/code&amp;gt; style. There are a few locations where they are acceptable:&lt;br /&gt;
&lt;br /&gt;
* At the top of an &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; (no padding)&lt;br /&gt;
* At the top of an &amp;lt;code&amp;gt;inside_deep_frame&amp;lt;/code&amp;gt; (usually above a tabbed pane)&lt;br /&gt;
* Below the tab row in a tabbed pane. In this case, use a custom style TODO SHOW STYLE&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180915</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI/Style guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180915"/>
		<updated>2020-07-10T20:55:11Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: Toolbar micro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE IS A WORK IN PROGRESS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This style guide is designed to give you an overview of the precepts and specific element styles used to create 0.18-esque GUIs. This guide is not to be taken as gospel - the contents are merely suggestions to help you improve your interfaces.&lt;br /&gt;
&lt;br /&gt;
This style guide assumes you know how to create GUIs, assign styles to elements, and edit styles. If you do not know these things, this guide won&#039;t be of much use to you.&lt;br /&gt;
&lt;br /&gt;
== Window ==&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial window types.png|Standard vs. dialog windows.]]&lt;br /&gt;
&lt;br /&gt;
Windows are created using the default frame style. Because of this, you need not specify a style when creating the element.&lt;br /&gt;
&lt;br /&gt;
For windows that contain multiple sub-windows (e.g. most windows that hold a character inventory) &amp;lt;code&amp;gt;outer_frame&amp;lt;/code&amp;gt; is used as the outer frame and &amp;lt;code&amp;gt;inner_frame_in_outer_frame&amp;lt;/code&amp;gt; is used for each internal window.&lt;br /&gt;
&lt;br /&gt;
Generally there are three kinds of windows:&lt;br /&gt;
* &#039;&#039;&#039;Standard&#039;&#039;&#039; windows have a close button in the top-right corner, and are opened/closed manually either by clicking something or using a hotkey.&lt;br /&gt;
* &#039;&#039;&#039;Dialog&#039;&#039;&#039; windows have a row of dialog buttons along the bottom, and do &#039;&#039;not&#039;&#039; have a close button. These are used when there is a clear hierarchy of actions - you go &amp;quot;back&amp;quot; to the previous action, or you &amp;quot;confirm&amp;quot; the current action. These windows &#039;&#039;&#039;must&#039;&#039;&#039; have a &amp;quot;Back&amp;quot; button in the bottom-left corner, and &#039;&#039;&#039;may&#039;&#039;&#039; have a &amp;quot;Confirm&amp;quot; button in the bottom-right corner. Other buttons on the bottom row are optional and should be used sparingly.&lt;br /&gt;
* &#039;&#039;&#039;Compact&#039;&#039;&#039; windows have neither a titlebar nor a dialog row. These are usually mini-GUIs that are opened/closed automatically as a result of some user action. There are no set rules for these kinds of GUIs, it entirely depends on what they&#039;re used for.&lt;br /&gt;
&lt;br /&gt;
=== Titlebar ===&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial dialog types.png|Draggable vs. non-draggable windows.]]&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have a titlebar. All titlebars include a &#039;&#039;&#039;title&#039;&#039;&#039;, and for windows that are meant to be draggable, the titlebar includes a drag handle. &#039;&#039;&#039;Standard&#039;&#039;&#039; windows also include a close button. Other frame action buttons may be added to the left of the close button, but should be used sparingly.&lt;br /&gt;
&lt;br /&gt;
Titlebars are created using a simple &#039;&#039;&#039;horizontal flow&#039;&#039;&#039; with no special edits - the default style is perfect for this case.&lt;br /&gt;
&lt;br /&gt;
* The title text is a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_title&amp;lt;/code&amp;gt; style. Set &amp;lt;code&amp;gt;ignored_by_interaction&amp;lt;/code&amp;gt; on this element, so the dragging functionality will work.&lt;br /&gt;
* The &amp;quot;drag handle&amp;quot; is an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; element with the &amp;lt;code&amp;gt;draggable_space_header&amp;lt;/code&amp;gt; style. You will need to apply &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; to the element&#039;s style, and set the &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;. If adding a close button or other frame action button, set the &amp;lt;code&amp;gt;right_margin&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;. This element also requires &amp;lt;code&amp;gt;ignored_by_interaction&amp;lt;/code&amp;gt; to be true, so the dragging functionality will work.&lt;br /&gt;
* Close buttons, or any other frame action buttons you are adding, are created with &amp;lt;code&amp;gt;sprite-button&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_action_button&amp;lt;/code&amp;gt; style. The default sprite should be colored (RGB) &amp;lt;code&amp;gt;227,227,227&amp;lt;/code&amp;gt;, and the hovered and clicked sprites should be colored (RGB) &amp;lt;code&amp;gt;29,29,29&amp;lt;/code&amp;gt;. Custom frame action sprites should be 26x26 with a 3px padding around the edges, making for a file size of 32x32. As of the time of writing, the base game does not use mipmaps for these icons, but it would probably be a good idea to add them to your own icons just in case.&lt;br /&gt;
* When creating draggable windows, &amp;lt;code&amp;gt;drag_target&amp;lt;/code&amp;gt; should be set on the &#039;&#039;&#039;flow element&#039;&#039;&#039; that comprises the titlebar, not the &amp;quot;drag handle&amp;quot; itself.&lt;br /&gt;
* If your window is not in &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; or is otherwise non-draggable, &#039;&#039;&#039;DO NOT&#039;&#039;&#039; add a drag handle. Instead, use an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; enabled.&lt;br /&gt;
&lt;br /&gt;
=== Content frame ===&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial content frame with padding.png|An example of &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt;, demonstrating the built-in 12px padding.]]&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have at least one &amp;quot;content frame&amp;quot; (the light grey pane seen in the above screenshots). This is where the meat of your interface will go.&lt;br /&gt;
&lt;br /&gt;
Content frames are created using the &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt; style. This will give you 12px of padding in the frame. If you need to have zero padding (i.e. for adding a scroll pane or a toolbar), use &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
It is good practice to separate different &amp;quot;purposes&amp;quot; in a GUI with different content panes. For example, Recipe Book uses different content panes for search and information:&lt;br /&gt;
&lt;br /&gt;
TODO add image&lt;br /&gt;
&lt;br /&gt;
If you add multiple content panes, add them to a flow element with &amp;lt;code&amp;gt;horizontal_spacing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;vertical_spacing&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Toolbar ===&lt;br /&gt;
&lt;br /&gt;
Toolbars are a great place to keep a content pane&#039;s &amp;quot;title&amp;quot; as well as tools used in that pane. You can see two examples of toolbars in the Recipe Book screenshot above.&lt;br /&gt;
&lt;br /&gt;
Toolbars are created using the &amp;lt;code&amp;gt;subheader_frame&amp;lt;/code&amp;gt; style. There are a few locations where they are acceptable:&lt;br /&gt;
&lt;br /&gt;
* At the top of an &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; (no padding)&lt;br /&gt;
* At the top of an &amp;lt;code&amp;gt;inside_deep_frame&amp;lt;/code&amp;gt; (usually above a tabbed pane)&lt;br /&gt;
* Below the tab row in a tabbed pane. In this case, use a custom style TODO SHOW STYLE&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180914</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI/Style guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180914"/>
		<updated>2020-07-10T18:29:24Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: More content frame, start on toolbar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE IS A WORK IN PROGRESS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This style guide is designed to give you an overview of the precepts and specific element styles used to create 0.18-esque GUIs. This guide is not to be taken as gospel - the contents are merely suggestions to help you improve your interfaces.&lt;br /&gt;
&lt;br /&gt;
This style guide assumes you know how to create GUIs, assign styles to elements, and edit styles. If you do not know these things, this guide won&#039;t be of much use to you.&lt;br /&gt;
&lt;br /&gt;
== Window ==&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial window types.png|Standard vs. dialog windows.]]&lt;br /&gt;
&lt;br /&gt;
Windows are created using the default frame style. Because of this, you need not specify a style when creating the element.&lt;br /&gt;
&lt;br /&gt;
For windows that contain multiple sub-windows (e.g. most windows that hold a character inventory) &amp;lt;code&amp;gt;outer_frame&amp;lt;/code&amp;gt; is used as the outer frame and &amp;lt;code&amp;gt;inner_frame_in_outer_frame&amp;lt;/code&amp;gt; is used for each internal window.&lt;br /&gt;
&lt;br /&gt;
Generally there are three kinds of windows:&lt;br /&gt;
* &#039;&#039;&#039;Standard&#039;&#039;&#039; windows have a close button in the top-right corner, and are opened/closed manually either by clicking something or using a hotkey.&lt;br /&gt;
* &#039;&#039;&#039;Dialog&#039;&#039;&#039; windows have a row of dialog buttons along the bottom, and do &#039;&#039;not&#039;&#039; have a close button. These are used when there is a clear hierarchy of actions - you go &amp;quot;back&amp;quot; to the previous action, or you &amp;quot;confirm&amp;quot; the current action. These windows &#039;&#039;&#039;must&#039;&#039;&#039; have a &amp;quot;Back&amp;quot; button in the bottom-left corner, and &#039;&#039;&#039;may&#039;&#039;&#039; have a &amp;quot;Confirm&amp;quot; button in the bottom-right corner. Other buttons on the bottom row are optional and should be used sparingly.&lt;br /&gt;
* &#039;&#039;&#039;Compact&#039;&#039;&#039; windows have neither a titlebar nor a dialog row. These are usually mini-GUIs that are opened/closed automatically as a result of some user action. There are no set rules for these kinds of GUIs, it entirely depends on what they&#039;re used for.&lt;br /&gt;
&lt;br /&gt;
=== Titlebar ===&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial dialog types.png|Draggable vs. non-draggable windows.]]&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have a titlebar. All titlebars include a &#039;&#039;&#039;title&#039;&#039;&#039;, and for windows that are meant to be draggable, the titlebar includes a drag handle. &#039;&#039;&#039;Standard&#039;&#039;&#039; windows also include a close button. Other frame action buttons may be added to the left of the close button, but should be used sparingly.&lt;br /&gt;
&lt;br /&gt;
Titlebars are created using a simple &#039;&#039;&#039;horizontal flow&#039;&#039;&#039; with no special edits - the default style is perfect for this case.&lt;br /&gt;
&lt;br /&gt;
* The title text is a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_title&amp;lt;/code&amp;gt; style. Set &amp;lt;code&amp;gt;ignored_by_interaction&amp;lt;/code&amp;gt; on this element, so the dragging functionality will work.&lt;br /&gt;
* The &amp;quot;drag handle&amp;quot; is an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; element with the &amp;lt;code&amp;gt;draggable_space_header&amp;lt;/code&amp;gt; style. You will need to apply &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; to the element&#039;s style, and set the &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;. If adding a close button or other frame action button, set the &amp;lt;code&amp;gt;right_margin&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;. This element also requires &amp;lt;code&amp;gt;ignored_by_interaction&amp;lt;/code&amp;gt; to be true, so the dragging functionality will work.&lt;br /&gt;
* Close buttons, or any other frame action buttons you are adding, are created with &amp;lt;code&amp;gt;sprite-button&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_action_button&amp;lt;/code&amp;gt; style. The default sprite should be colored (RGB) &amp;lt;code&amp;gt;227,227,227&amp;lt;/code&amp;gt;, and the hovered and clicked sprites should be colored (RGB) &amp;lt;code&amp;gt;29,29,29&amp;lt;/code&amp;gt;. Custom frame action sprites should be 26x26 with a 3px padding around the edges, making for a file size of 32x32. As of the time of writing, the base game does not use mipmaps for these icons, but it would probably be a good idea to add them to your own icons just in case.&lt;br /&gt;
* When creating draggable windows, &amp;lt;code&amp;gt;drag_target&amp;lt;/code&amp;gt; should be set on the &#039;&#039;&#039;flow element&#039;&#039;&#039; that comprises the titlebar, not the &amp;quot;drag handle&amp;quot; itself.&lt;br /&gt;
* If your window is not in &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; or is otherwise non-draggable, &#039;&#039;&#039;DO NOT&#039;&#039;&#039; add a drag handle. Instead, use an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; enabled.&lt;br /&gt;
&lt;br /&gt;
=== Content frame ===&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial content frame with padding.png|An example of &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt;, demonstrating the built-in 12px padding.]]&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have at least one &amp;quot;content frame&amp;quot; (the light grey pane seen in the above screenshots). This is where the meat of your interface will go.&lt;br /&gt;
&lt;br /&gt;
Content frames are created using the &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt; style. This will give you 12px of padding in the frame. If you need to have zero padding (i.e. for adding a scroll pane or a toolbar), use &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
It is good practice to separate different &amp;quot;purposes&amp;quot; in a GUI with different content panes. For example, Recipe Book uses different content panes for search and information:&lt;br /&gt;
&lt;br /&gt;
TODO add image&lt;br /&gt;
&lt;br /&gt;
If you add multiple content panes, add them to a flow element with &amp;lt;code&amp;gt;horizontal_spacing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;vertical_spacing&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Toolbar ===&lt;br /&gt;
&lt;br /&gt;
Toolbars are a great place to keep a content pane&#039;s &amp;quot;title&amp;quot; as well as tools used in that pane. You can see two examples of toolbars in the Recipe Book screenshot above.&lt;br /&gt;
&lt;br /&gt;
Toolbars are created using the &amp;lt;code&amp;gt;subheader_frame&amp;lt;/code&amp;gt; style. Toolbars &#039;&#039;&#039;must&#039;&#039;&#039; be placed in a content pane with the &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; style (no padding). Toolbars always take up the entire width of the content pane they are located in.&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180717</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI/Style guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180717"/>
		<updated>2020-07-02T05:02:16Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: standalone_inner_frame_in_outer_frame no longer exists&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This style guide is designed to give you an overview of the precepts and specific element styles used to create 0.18-esque GUIs. This guide is not to be taken as gospel - the contents are merely suggestions to help you improve your interfaces.&lt;br /&gt;
&lt;br /&gt;
This style guide assumes you know how to create GUIs, assign styles to elements, and edit styles. If you do not know these things, this guide won&#039;t be of much use to you.&lt;br /&gt;
&lt;br /&gt;
== Window ==&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial window types.png|frame|Examples of standard vs. dialog windows.]]&lt;br /&gt;
&lt;br /&gt;
Windows are created using the default frame style. Because of this, you don&#039;t actually need to specify a style when creating the element.&lt;br /&gt;
&lt;br /&gt;
For windows that contain multiple sub-windows (e.g. most windows that hold a character inventory) &amp;lt;code&amp;gt;outer_frame&amp;lt;/code&amp;gt; is used as the outer frame and &amp;lt;code&amp;gt;inner_frame_in_outer_frame&amp;lt;/code&amp;gt; is used for each internal window.&lt;br /&gt;
&lt;br /&gt;
Generally there are three kinds of windows:&lt;br /&gt;
* &#039;&#039;&#039;Standard&#039;&#039;&#039; windows have a close button in the top-right corner, and are opened/closed manually either by clicking something or using a hotkey.&lt;br /&gt;
* &#039;&#039;&#039;Dialog&#039;&#039;&#039; windows have a row of dialog buttons along the bottom, and do &#039;&#039;not&#039;&#039; have a close button. These are used when there is a clear hierarchy of actions - you go &amp;quot;back&amp;quot; to the previous action, or you &amp;quot;confirm&amp;quot; the current action. These windows &#039;&#039;&#039;must&#039;&#039;&#039; have a &amp;quot;Back&amp;quot; button in the bottom-left corner, and &#039;&#039;&#039;may&#039;&#039;&#039; have a &amp;quot;Confirm&amp;quot; button in the bottom-right corner. Other buttons on the bottom row are optional and should be used sparingly.&lt;br /&gt;
* &#039;&#039;&#039;Compact&#039;&#039;&#039; windows have neither a titlebar nor a dialog row. These are usually mini-GUIs that are opened/closed automatically as a result of some user action. There are no set rules for these kinds of GUIs, it entirely depends on what they&#039;re used for.&lt;br /&gt;
&lt;br /&gt;
=== Titlebar ===&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial dialog types.png|frame|Draggable vs. non-draggable windows.]]&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have a titlebar. All titlebars include a &#039;&#039;&#039;title&#039;&#039;&#039;, and for windows that are meant to be draggable, the titlebar includes a drag handle. &#039;&#039;&#039;Standard&#039;&#039;&#039; windows also include a close button. Other frame action buttons may be added to the left of the close button, but should be used sparingly.&lt;br /&gt;
&lt;br /&gt;
Titlebars are created using a simple &#039;&#039;&#039;horizontal flow&#039;&#039;&#039; with no special edits - the default style is perfect for this case.&lt;br /&gt;
&lt;br /&gt;
* The title text is a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_title&amp;lt;/code&amp;gt; style.&lt;br /&gt;
* The &amp;quot;drag handle&amp;quot; is an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; element with the &amp;lt;code&amp;gt;draggable_space_header&amp;lt;/code&amp;gt; style. You will need to apply &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; to the element&#039;s style, and set the &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;. If adding a close button or other frame action button, set the &amp;lt;code&amp;gt;right_margin&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Close buttons, or any other frame action buttons you are adding, are created with &amp;lt;code&amp;gt;sprite-button&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_action_button&amp;lt;/code&amp;gt; style. The default sprite should be colored (RGB) &amp;lt;code&amp;gt;227,227,227&amp;lt;/code&amp;gt;, and the hovered and clicked sprites should be colored (RGB) &amp;lt;code&amp;gt;29,29,29&amp;lt;/code&amp;gt;. Custom frame action sprites should be 26x26 with a 3px padding around the edges, making for a file size of 32x32. As of the time of writing, the base game does not use mipmaps for these icons, but it would probably be a good idea to add them to your own icons just in case.&lt;br /&gt;
* When creating draggable windows, &amp;lt;code&amp;gt;drag_target&amp;lt;/code&amp;gt; should be set on the flow element that comprises the titlebar, not the &amp;quot;drag handle&amp;quot; itself.&lt;br /&gt;
* If your window is not in &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; or is otherwise non-draggable, &#039;&#039;&#039;DO NOT&#039;&#039;&#039; add a drag handle. Instead, use an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; enabled.&lt;br /&gt;
&lt;br /&gt;
=== Content frame ===&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have a &amp;quot;content frame&amp;quot; (the light grey pane seen in the above screenshots). This is where the meat of your interface will go.&lt;br /&gt;
&lt;br /&gt;
Content frames are created using the &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt; style. This will give you 12px of padding in the frame. If you need to have zero padding, use &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial content frame with padding.png|frame|An example of &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt;, demonstrating the built-in 12px padding.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO BE CONTINUED&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180014</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI/Style guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=180014"/>
		<updated>2020-05-30T03:35:48Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: Rework titlebar and content frame explanations, add more images.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This style guide is designed to give you an overview of the precepts and specific element styles used to create 0.18-esque GUIs. This guide is not to be taken as gospel - the contents are merely suggestions to help you improve your interfaces.&lt;br /&gt;
&lt;br /&gt;
This style guide assumes you know how to create GUIs, assign styles to elements, and edit styles. If you do not know these things, this guide won&#039;t be of much use to you.&lt;br /&gt;
&lt;br /&gt;
== Window ==&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial window types.png|frame|Examples of standard vs. dialog windows.]]&lt;br /&gt;
&lt;br /&gt;
Windows are created using &amp;lt;code&amp;gt;standalone_inner_frame_in_outer_frame&amp;lt;/code&amp;gt;. For windows that contain multiple sub-windows (e.g. most windows that hold a character inventory) &amp;lt;code&amp;gt;outer_frame&amp;lt;/code&amp;gt; is used as the outer frame and &amp;lt;code&amp;gt;inner_frame_in_outer_frame&amp;lt;/code&amp;gt; is used for each internal window.&lt;br /&gt;
&lt;br /&gt;
Generally there are three kinds of windows:&lt;br /&gt;
* &#039;&#039;&#039;Standard&#039;&#039;&#039; windows have a close button in the top-right corner, and are opened/closed manually either by clicking something or using a hotkey.&lt;br /&gt;
* &#039;&#039;&#039;Dialog&#039;&#039;&#039; windows have a row of dialog buttons along the bottom, and do &#039;&#039;not&#039;&#039; have a close button. These are used when there is a clear hierarchy of actions - you go &amp;quot;back&amp;quot; to the previous action, or you &amp;quot;confirm&amp;quot; the current action. These windows &#039;&#039;&#039;must&#039;&#039;&#039; have a &amp;quot;Back&amp;quot; button in the bottom-left corner, and &#039;&#039;&#039;may&#039;&#039;&#039; have a &amp;quot;Confirm&amp;quot; button in the bottom-right corner. Other buttons on the bottom row are optional and should be used sparingly.&lt;br /&gt;
* &#039;&#039;&#039;Compact&#039;&#039;&#039; windows have neither a titlebar nor a dialog row. These are usually mini-GUIs that are opened/closed automatically as a result of some user action. There are no set rules for these kinds of GUIs, it entirely depends on what they&#039;re used for.&lt;br /&gt;
&lt;br /&gt;
=== Titlebar ===&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial dialog types.png|frame|Draggable vs. non-draggable windows.]]&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have a titlebar. All titlebars include a &#039;&#039;&#039;title&#039;&#039;&#039;, and for windows that are meant to be draggable, the titlebar includes a drag handle. &#039;&#039;&#039;Standard&#039;&#039;&#039; windows also include a close button. Other frame action buttons may be added to the left of the close button, but should be used sparingly.&lt;br /&gt;
&lt;br /&gt;
Titlebars are created using a simple &#039;&#039;&#039;horizontal flow&#039;&#039;&#039; with no special edits - the default style is perfect for this case.&lt;br /&gt;
&lt;br /&gt;
* The title text is a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_title&amp;lt;/code&amp;gt; style.&lt;br /&gt;
* The &amp;quot;drag handle&amp;quot; is an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; element with the &amp;lt;code&amp;gt;draggable_space_header&amp;lt;/code&amp;gt; style. You will need to apply &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; to the element&#039;s style, and set the &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;. If adding a close button or other frame action button, set the &amp;lt;code&amp;gt;right_margin&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Close buttons, or any other frame action buttons you are adding, are created with &amp;lt;code&amp;gt;sprite-button&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_action_button&amp;lt;/code&amp;gt; style. The default sprite should be colored (RGB) &amp;lt;code&amp;gt;227,227,227&amp;lt;/code&amp;gt;, and the hovered and clicked sprites should be colored (RGB) &amp;lt;code&amp;gt;29,29,29&amp;lt;/code&amp;gt;. Custom frame action sprites should be 26x26 with a 3px padding around the edges, making for a file size of 32x32. As of the time of writing, the base game does not use mipmaps for these icons, but it would probably be a good idea to add them to your own icons just in case.&lt;br /&gt;
* When creating draggable windows, &amp;lt;code&amp;gt;drag_target&amp;lt;/code&amp;gt; should be set on the flow element that comprises the titlebar, not the &amp;quot;drag handle&amp;quot; itself.&lt;br /&gt;
* If your window is not in &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; or is otherwise non-draggable, &#039;&#039;&#039;DO NOT&#039;&#039;&#039; add a drag handle. Instead, use an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; enabled.&lt;br /&gt;
&lt;br /&gt;
=== Content frame ===&lt;br /&gt;
&lt;br /&gt;
Each non-compact window &#039;&#039;&#039;must&#039;&#039;&#039; have a &amp;quot;content frame&amp;quot; (the light grey pane seen in the above screenshots). This is where the meat of your interface will go.&lt;br /&gt;
&lt;br /&gt;
Content frames are created using the &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt; style. This will give you 12px of padding in the frame. If you need to have zero padding, use &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
[[File:GUI tutorial content frame with padding.png|frame|An example of &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt;, demonstrating the built-in 12px padding.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO BE CONTINUED&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=179983</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI/Style guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI/Style_guide&amp;diff=179983"/>
		<updated>2020-05-29T00:39:47Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: Initial stub page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This style guide is designed to give you an overview of the precepts and specific element styles used to create 0.18-esque GUIs. This guide is not to be taken as gospel - the contents are merely suggestions to help you improve your interfaces.&lt;br /&gt;
&lt;br /&gt;
This style guide assumes you know how to create GUIs, assign styles to elements, and edit styles. If you do not know these things, this guide won&#039;t be of much use to you.&lt;br /&gt;
&lt;br /&gt;
== Window ==&lt;br /&gt;
&lt;br /&gt;
Windows are created using &amp;lt;code&amp;gt;standalone_inner_frame_in_outer_frame&amp;lt;/code&amp;gt;. For windows that contain multiple sub-windows (e.g. most windows that hold a character inventory) &amp;lt;code&amp;gt;outer_frame&amp;lt;/code&amp;gt; is used as the outer frame and &amp;lt;code&amp;gt;inner_frame_in_outer_frame&amp;lt;/code&amp;gt; is used for each internal window.&lt;br /&gt;
&lt;br /&gt;
[[File:GUI style guide window and titlebar.png]]&lt;br /&gt;
&lt;br /&gt;
=== Titlebar ===&lt;br /&gt;
&lt;br /&gt;
Each window should usually have a titlebar. Setting &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt; element will automatically create the titlebar for you. In cases where all you need is a title, this is fine.&lt;br /&gt;
&lt;br /&gt;
However, for non-dialog windows, you will need to add a close button to the titlebar. This necessitates creating your own titlebar instead of using the frame&#039;s built-in one. For this reason, I usually never set &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt; on frames.&lt;br /&gt;
&lt;br /&gt;
Titlebars are created using a simple &#039;&#039;&#039;horizontal flow&#039;&#039;&#039; with no special edits - the default style is perfect for this case.&lt;br /&gt;
&lt;br /&gt;
* The title text is a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_title&amp;lt;/code&amp;gt; style.&lt;br /&gt;
* The &amp;quot;drag handle&amp;quot; is an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; element with the &amp;lt;code&amp;gt;draggable_space_header&amp;lt;/code&amp;gt; style. You will need to apply &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; to the element&#039;s style, and set the &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;. If adding a close button or other frame action button, set the &amp;lt;code&amp;gt;right_margin&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Close buttons, or any other frame action buttons you are adding, are created with &amp;lt;code&amp;gt;sprite-button&amp;lt;/code&amp;gt; using the &amp;lt;code&amp;gt;frame_action_button&amp;lt;/code&amp;gt; style. The default sprite should be colored (RGB) &amp;lt;code&amp;gt;227,227,227&amp;lt;/code&amp;gt;, and the hovered and clicked sprites should be colored (RGB) &amp;lt;code&amp;gt;29,29,29&amp;lt;/code&amp;gt;. Custom frame action sprites should be 26x26 with a 3px padding around the edges, making for a file size of 32x32. As of the time of writing, the base game does not use mipmaps for these icons, but it would probably be a good idea to add them to your own icons just in case.&lt;br /&gt;
* &amp;lt;code&amp;gt;drag_target&amp;lt;/code&amp;gt; should be set for both the &amp;quot;drag handle&amp;quot; &#039;&#039;&#039;and&#039;&#039;&#039; the title text, to keep consistency with the base game.&lt;br /&gt;
* If your window is not in &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; or is otherwise non-draggable, &#039;&#039;&#039;DO NOT&#039;&#039;&#039; add a drag handle. Instead, use an &amp;lt;code&amp;gt;empty-widget&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;horizontally_stretchable&amp;lt;/code&amp;gt; enabled.&lt;br /&gt;
&lt;br /&gt;
=== Content frame ===&lt;br /&gt;
&lt;br /&gt;
The game&#039;s GUI style dictates that most windows should have an inner content frame, seen in the above screenshot as the light grey pane. For this, use &amp;lt;code&amp;gt;inside_shallow_frame_with_padding&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;inside_shallow_frame&amp;lt;/code&amp;gt; if you wish to manage the paddings yourself.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO BE CONTINUED&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI&amp;diff=179981</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI&amp;diff=179981"/>
		<updated>2020-05-28T23:55:25Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE IS A WORK-IN-PROGRESS.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
While you cannot edit base game GUIs, the Lua API includes the ability to create your own, completely custom GUIs. This tutorial will get you up to speed with creating such GUIs.&lt;br /&gt;
&lt;br /&gt;
== Before you Begin ==&lt;br /&gt;
&lt;br /&gt;
Be sure you have the [https://lua-api.factorio.com/latest/LuaGui.html LuaGui], [https://lua-api.factorio.com/latest/LuaGuiElement.html LuaGuiElement], and [https://lua-api.factorio.com/latest/LuaStyle.html LuaStyle] pages handy.&lt;br /&gt;
&lt;br /&gt;
=== Tutorial syntax ===&lt;br /&gt;
&lt;br /&gt;
This tutorial will adapt some methods from [https://wiki.factorio.com/Tutorial:Modding_tutorial/Gangsir Modding tutorial/Gangsir], namely:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color:#AAFFAA!important; color:black&amp;quot;&amp;gt;&lt;br /&gt;
Code tinted green like this should be included into the mod this tutorial is going to create; If the reader follows along with it. The best way to do this is to copy and paste, to ensure faithful reproduction.&lt;br /&gt;
Whenever code is added to the mod, a Lua comment with the file name will be at the beginning of the green box. Place the code in the box into that file. Eg:&lt;br /&gt;
--control.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color:#DDA0DD!important; color:black&amp;quot;&amp;gt;&lt;br /&gt;
Code tinted purple like this should not be included into the mod, it&#039;s just for educational/example purposes, and to boost understanding.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the purposes of the tutorial, it would be a good idea to create a fresh mod, separate from the mod you created in Gangsir&#039;s tutorial.&lt;br /&gt;
&lt;br /&gt;
=== In-game tool: GUI border view ===&lt;br /&gt;
&lt;br /&gt;
[[File:Modding tutorial Ctrl F5.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Hitting &#039;&#039;&#039;Control + F5&#039;&#039;&#039; on your keyboard will bring up the &amp;quot;GUI border view&amp;quot;. This surrounds all GUI elements with red borders, and can help you visualize how things are laid out.&lt;br /&gt;
&lt;br /&gt;
=== In-game tool: GUI style inspector ===&lt;br /&gt;
&lt;br /&gt;
[[File:Modding tutorial Ctrl F6.png]]&lt;br /&gt;
&lt;br /&gt;
Hitting &#039;&#039;&#039;Control + F6&#039;&#039;&#039; on your keyboard will allow you to use the &amp;quot;GUI style inspector&amp;quot;. This allows you to view an element&#039;s style inheritances when you hover over it. Combined with the GUI border view, you can inspect normally hidden GUI elements.&lt;br /&gt;
&lt;br /&gt;
=== Library: mod-gui ===&lt;br /&gt;
&lt;br /&gt;
Add this require into your script file before you begin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color:#AAFFAA!important; color:black&amp;quot;&amp;gt;&lt;br /&gt;
-- control.lua&lt;br /&gt;
local mod_gui = require(&amp;quot;__core__.lualib.mod-gui&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Root ==&lt;br /&gt;
&lt;br /&gt;
To build a GUI, you must gain access to the GUI &amp;quot;root&amp;quot;. The most common method of access is through [https://lua-api.factorio.com/latest/LuaPlayer.html#LuaPlayer.gui LuaPlayer::gui]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color:#AAFFAA!important; color:black&amp;quot;&amp;gt;&lt;br /&gt;
-- control.lua&lt;br /&gt;
script.on_event(defines.events.on_player_created, function(event)&lt;br /&gt;
  local player = game.get_player(event.player_index)&lt;br /&gt;
  local player_gui = player.gui&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding elements ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO BE CONTINUED...&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI&amp;diff=179974</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI&amp;diff=179974"/>
		<updated>2020-05-28T02:41:29Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: URL fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE IS A WORK-IN-PROGRESS.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
While you cannot edit base game GUIs, the Lua API includes the ability to create your own, completely custom GUIs. This tutorial will get you up to speed with creating such GUIs.&lt;br /&gt;
&lt;br /&gt;
== Before you Begin ==&lt;br /&gt;
&lt;br /&gt;
Be sure you have the [https://lua-api.factorio.com/latest/LuaGui.html LuaGui], [https://lua-api.factorio.com/latest/LuaGuiElement.html LuaGuiElement], and [https://lua-api.factorio.com/latest/LuaStyle.html LuaStyle] pages handy.&lt;br /&gt;
&lt;br /&gt;
There are two in-game tools that are absolutely essential for creating GUIs:&lt;br /&gt;
&lt;br /&gt;
=== GUI border view ===&lt;br /&gt;
&lt;br /&gt;
[[File:Modding tutorial Ctrl F5.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Hitting &#039;&#039;&#039;Control + F5&#039;&#039;&#039; on your keyboard will bring up the &amp;quot;GUI border view&amp;quot;. This surrounds all GUI elements with red borders, and can help you visualize how things are laid out.&lt;br /&gt;
&lt;br /&gt;
=== GUI style inspector ===&lt;br /&gt;
&lt;br /&gt;
[[File:Modding tutorial Ctrl F6.png]]&lt;br /&gt;
&lt;br /&gt;
Hitting &#039;&#039;&#039;Control + F6&#039;&#039;&#039; on your keyboard will allow you to use the &amp;quot;GUI style inspector&amp;quot;. This allows you to view an element&#039;s style inheritances when you hover over it. Combined with the GUI border view, you can inspect normally hidden GUI elements.&lt;br /&gt;
&lt;br /&gt;
== The Root ==&lt;br /&gt;
&lt;br /&gt;
Every GUI must start in one of the five GUI &amp;quot;roots&amp;quot;, listed in [https://lua-api.factorio.com/latest/LuaGui.html LuaGui]:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;top:&#039;&#039;&#039; Aligns the GUI at the top of the screen. Multiple elements will be flowed next to each other so they don&#039;t overlap.&lt;br /&gt;
* &#039;&#039;&#039;left:&#039;&#039;&#039; Aligns the GUI at the left of the screen. Multiple elements will be flowed next to each other so they don&#039;t overlap.&lt;br /&gt;
* &#039;&#039;&#039;center:&#039;&#039;&#039; Centers the GUI on the player&#039;s screen. Multiple elements will be flowed next to each other so they don&#039;t overlap.&lt;br /&gt;
* &#039;&#039;&#039;goal:&#039;&#039;&#039; Where the objective GUI sits. It is recommended not to use this root unless creating a scenario. Multiple elements will be flowed next to each other so they don&#039;t overlap.&lt;br /&gt;
* &#039;&#039;&#039;screen:&#039;&#039;&#039; An empty element that allows you to position your GUI anywhere on the player&#039;s screen. Because of this, multiple elements may overlap. Elements are placed in the top-left corner by default.&lt;br /&gt;
&lt;br /&gt;
You will want to place your GUI in &#039;&#039;&#039;screen&#039;&#039;&#039;, unless you have a specific reason not to.&lt;br /&gt;
&lt;br /&gt;
== Adding elements ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO BE CONTINUED...&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI&amp;diff=179973</id>
		<title>User:Raiguard/Tutorial:Modding tutorial/GUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard/Tutorial:Modding_tutorial/GUI&amp;diff=179973"/>
		<updated>2020-05-28T02:40:11Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: Initial stub page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE IS A WORK-IN-PROGRESS.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
While you cannot edit base game GUIs, the Lua API includes the ability to create your own, completely custom GUIs. This tutorial will get you up to speed with creating such GUIs.&lt;br /&gt;
&lt;br /&gt;
== Before you Begin ==&lt;br /&gt;
&lt;br /&gt;
Be sure you have the [https://lua-api.factorio.com/latest/LuaGui.html LuaGui], [https://lua-api.factorio.com/latest/LuaGuiElement.html LuaGuiElement], and https://lua-api.factorio.com/latest/LuaStyle.html LuaStyle] pages handy.&lt;br /&gt;
&lt;br /&gt;
There are two in-game tools that are absolutely essential for creating GUIs:&lt;br /&gt;
&lt;br /&gt;
=== GUI border view ===&lt;br /&gt;
&lt;br /&gt;
[[File:Modding tutorial Ctrl F5.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Hitting &#039;&#039;&#039;Control + F5&#039;&#039;&#039; on your keyboard will bring up the &amp;quot;GUI border view&amp;quot;. This surrounds all GUI elements with red borders, and can help you visualize how things are laid out.&lt;br /&gt;
&lt;br /&gt;
=== GUI style inspector ===&lt;br /&gt;
&lt;br /&gt;
[[File:Modding tutorial Ctrl F6.png]]&lt;br /&gt;
&lt;br /&gt;
Hitting &#039;&#039;&#039;Control + F6&#039;&#039;&#039; on your keyboard will allow you to use the &amp;quot;GUI style inspector&amp;quot;. This allows you to view an element&#039;s style inheritances when you hover over it. Combined with the GUI border view, you can inspect normally hidden GUI elements.&lt;br /&gt;
&lt;br /&gt;
== The Root ==&lt;br /&gt;
&lt;br /&gt;
Every GUI must start in one of the five GUI &amp;quot;roots&amp;quot;, listed in [https://lua-api.factorio.com/latest/LuaGui.html LuaGui]:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;top:&#039;&#039;&#039; Aligns the GUI at the top of the screen. Multiple elements will be flowed next to each other so they don&#039;t overlap.&lt;br /&gt;
* &#039;&#039;&#039;left:&#039;&#039;&#039; Aligns the GUI at the left of the screen. Multiple elements will be flowed next to each other so they don&#039;t overlap.&lt;br /&gt;
* &#039;&#039;&#039;center:&#039;&#039;&#039; Centers the GUI on the player&#039;s screen. Multiple elements will be flowed next to each other so they don&#039;t overlap.&lt;br /&gt;
* &#039;&#039;&#039;goal:&#039;&#039;&#039; Where the objective GUI sits. It is recommended not to use this root unless creating a scenario. Multiple elements will be flowed next to each other so they don&#039;t overlap.&lt;br /&gt;
* &#039;&#039;&#039;screen:&#039;&#039;&#039; An empty element that allows you to position your GUI anywhere on the player&#039;s screen. Because of this, multiple elements may overlap. Elements are placed in the top-left corner by default.&lt;br /&gt;
&lt;br /&gt;
You will want to place your GUI in &#039;&#039;&#039;screen&#039;&#039;&#039;, unless you have a specific reason not to.&lt;br /&gt;
&lt;br /&gt;
== Adding elements ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO BE CONTINUED...&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Raiguard&amp;diff=179970</id>
		<title>User:Raiguard</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Raiguard&amp;diff=179970"/>
		<updated>2020-05-28T01:33:14Z</updated>

		<summary type="html">&lt;p&gt;Raiguard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am a Factorio veteran with lots of experience in just about every facet of the game. After playing the game for over 1200 hours I turned to modding, and have been doing that for over a year.&lt;br /&gt;
&lt;br /&gt;
I am almost always active over on the Factorio Discord server, in the &#039;&#039;&#039;#mod-making&#039;&#039;&#039; channel.&lt;/div&gt;</summary>
		<author><name>Raiguard</name></author>
	</entry>
</feed>