<?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=O2theC</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=O2theC"/>
	<link rel="alternate" type="text/html" href="https://wiki.factorio.com/Special:Contributions/O2theC"/>
	<updated>2026-04-05T13:35:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Talk:Achievement_file_format&amp;diff=199202</id>
		<title>Talk:Achievement file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Talk:Achievement_file_format&amp;diff=199202"/>
		<updated>2024-08-02T04:44:00Z</updated>

		<summary type="html">&lt;p&gt;O2theC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* I have fully mapped out the achievements-modded.dat file and updated the page to reflect, i split the page into a achievements.dat and achievement-modded.dat sections, there are some odditys but they seem to be consistent, it is confirmed that for both files, tracked achievements are stored as shorts to refrence the index of the achievement set earlyer in the file, for some reason there can be shorts with value 0, not sure why, best guess is old achievements that were tracked but were completed, while i tried my best to stay with the theme and wording of the wiki and the content that was there before, i feel that what i have added may not be clear, having someone else do a look over (peer review?) to make sure it&#039;s as clear as it can be would be useful, also it should be looked into whether the 2 sections can be condensed back into 1 since there is some redundant information [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 04:43, 2 August 2024 (UTC)&lt;br /&gt;
* so i went into the modded formated and my god is it different, the normal header and all before is the same , seems like the same index values as the normal one (for my copys of the files), but after it goes weird, first it has an array which uses an int rather than short for length like previous arrays and then it goes SO String (ach type), SO String (ach name), then bytes[*], which is varible length based on ach type, what is weirder is that the research-achievement type has no data bytes, it does in the normal format but in the modded one is has no data bytes, and i had 2 achs with it and it was consistent , so weird , there also seems to be 4 bytes at the end of the file , not sure what they do yet [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) who knows when i made this, i forgot to add the ~s&lt;br /&gt;
* i think i have the correct format now and the page is updated to reflect it, during some testing it looks like the modded file almost seems to repeat some things and the repeated part uses a format that looks similar to what this page showed before, gonna check it out more tomorrow [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 01:27, 1 August 2024 (UTC)&lt;br /&gt;
* the starting format is not complete, similar to [[Mod_settings_file_format|mod settings format]], there is a bool set to false right after the version string, the page has been adjusted to reflect this [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 19:56, 31 July 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Achievement_file_format&amp;diff=199201</id>
		<title>Achievement file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Achievement_file_format&amp;diff=199201"/>
		<updated>2024-08-02T04:33:27Z</updated>

		<summary type="html">&lt;p&gt;O2theC: Due to achievements.data and achievements-modded.dat having slightly different formats, they have been split up into 2 things, 1 for normal and 1 for modded, due to how similar they are, it should be looked into if condensing them back down to 1 with the differences marked is a better way of conveying the information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a technical description of the achievement file format, used by Factorio to store player&#039;s achievement progress in the files &amp;quot;achievements.dat&amp;quot; and &amp;quot;achievements-modded.dat&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Yes - this information can be used to &amp;quot;cheat&amp;quot; Factorio by simply writing to the achievement file(s) in such a way as if you had met all the achievement requirements, open up Factorio, and then suddenly have all achievements unlocked. The goal of this document is to share how to &#039;&#039;read&#039;&#039; the achievement file(s) - so that third party applications can do new and interesting things with that information. Enjoy!&lt;br /&gt;
&lt;br /&gt;
See the page on [[data types]] for an explanation of the different types of data used in this document.&lt;br /&gt;
= achievements.dat=&lt;br /&gt;
== File Format ==&lt;br /&gt;
The overall file format is as follows. Note that in this file, [[Data_types#array|array]] length is stored as a [[Data_types#short|short]], not an [[Data_types#int|int]]!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]][4]&lt;br /&gt;
| The [[Version_string_format|version string]] of Factorio that generated this file.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#bool|bool]]&lt;br /&gt;
| A bool that is always false&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#array|array]]&amp;lt;[[#Achievement Header Info|bytes]]&amp;gt;&lt;br /&gt;
| [[#Achievement Header Info|Achievement header info]]. Variable length. See the section for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#array|array]]&amp;lt;[[#Achievement Content Info|bytes]]&amp;gt;&lt;br /&gt;
| [[#Achievement Content Info|Achievement content info]]. Variable length. See the section for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]][*]&lt;br /&gt;
| Currently tracked achievements, given as a series of [[Data_types#short|shorts]] up until the end of the file, with each representing the index number of an achievement. The order of achievements in this series matches the order of which the player has them tracked in game. Some shorts may have a value of 0, it is unknown currently why, but they don&#039;t seem to store meaningful data&lt;br /&gt;
|}&lt;br /&gt;
This format has been valid since at least version 1.1.0.&lt;br /&gt;
&lt;br /&gt;
== Achievement Header Info ==&lt;br /&gt;
&lt;br /&gt;
The header contains information about what type of data fields each achievement has.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#Space_Optimized|Space optimized]] [[Data_types#string|string]]&lt;br /&gt;
| Achievement type. This determines what kind of data fields this achievement contains in the content array.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#array|array]]&amp;lt;Header Subobject&amp;gt;&lt;br /&gt;
| An array of achievements that use this achievement type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Header Subobject ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|- &lt;br /&gt;
| [[Data_types#Space_Optimized|Space optimized]] [[Data_types#string|string]]&lt;br /&gt;
| Achievement string id - the one used internally by Factorio.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]]&lt;br /&gt;
| Achievement index number. This number is used to map achievements between this header info array, the content info array, and the tracked achievements list in this file. These index numbers are non-normative, so they won&#039;t always match up with the same achievement.&amp;lt;br&amp;gt; Note: the mapping of index numbers to achievement ids are continuous, but start at index 1 (there is no index 0) - because LUA tables start at 1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Achievement Content Info ==&lt;br /&gt;
&lt;br /&gt;
This contains the actual data of each achievement. It&#039;s important to note that not every achievement listed in the header has a matching content section here.&lt;br /&gt;
&lt;br /&gt;
Also note that this array always ends with an index number of 0. When reading, either ignore this, or manually add in a blank achievement into your meta table at index zero with no fields.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]]&lt;br /&gt;
| Achievement index number. This matches up with the index number in the [[#Achievement Header Info|Achievement header info]].&lt;br /&gt;
|-&lt;br /&gt;
| byte[*]&lt;br /&gt;
| The achievement&#039;s progress information. The structure and length of this is determined by the [[#Achievement Types|achievement&#039;s type]]. See the table below for a list of achievement types.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Achievement Types ==&lt;br /&gt;
&lt;br /&gt;
If new achievement types are added in the future, the achievement files will be unparse-able. Please add any new types you find here, thanks!&lt;br /&gt;
&lt;br /&gt;
See the [[Prototype/Achievement]] base prototype page for more information about achievement structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Achievement&amp;lt;br&amp;gt;Type !! Binary&amp;lt;br&amp;gt;Fields(s) !! Field(s) Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/BuildEntityAchievement|build-entity-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/CombatRobotCountAchievement|combat-robot-count]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
|&lt;br /&gt;
* The greatest number of combat robots you&#039;ve had following you.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ConstructWithRobotsAchievement|construct-with-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Total number of objects constructed using robots.&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DeconstructWithRobotsAchievement|deconstruct-with-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
|&lt;br /&gt;
* Total number of objects deconstructed using robots.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DeliverByRobotsAchievement|deliver-by-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[8]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 8 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontBuildEntityAchievement|dont-build-entity-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontCraftManuallyAchievement|dont-craft-manually-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[8]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 8 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontUseEntityInEnergyProductionAchievement|dont-use-entity-in-energy-production-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* Maximum number of Joules produced per hour, only including power produced from entities listed under &amp;quot;[[Prototype/DontUseEntityInEnergyProductionAchievement#included|included]]&amp;quot;, and excluding those listed under &amp;quot;[[Prototype/DontUseEntityInEnergyProductionAchievement#excluded|excluded]]&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/FinishTheGameAchievement|finish-the-game-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/GroupAttackAchievement|group-attack-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/KillAchievement|kill-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The greatest number of an entity killed (e.g. trees, spawners).&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/PlayerDamagedAchievement|player-damaged-achievement]]&lt;br /&gt;
| &lt;br /&gt;
* [[Data_types#float|float]]&lt;br /&gt;
* [[Data_types#bool|bool]]&lt;br /&gt;
|&lt;br /&gt;
* The maximum amount of damage you&#039;ve taken in a single hit.&lt;br /&gt;
* True if the you survived that hit, False if you died.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ProduceAchievement|produce-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The total number of the item you&#039;ve produced.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ProducePerHourAchievement|produce-per-hour-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The maximum amount of the item produced per hour.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ResearchAchievement|research-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/TrainPathAchievement|train-path-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The longest path (in tiles) planned by a train.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;combat-robot-count&amp;quot; is currently the only achievement type that doesn&#039;t end in &amp;quot;-achievement&amp;quot;. This is not an error.&lt;br /&gt;
&lt;br /&gt;
= achievements-modded.dat = &lt;br /&gt;
== File Format ==&lt;br /&gt;
The overall file format is simular to the non modded version but slightly different.&lt;br /&gt;
Note some arrays here will use an int and others a short for storing their length, assume they use an int unless referred to as short arrays, in which they will use shorts for their length&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]][4]&lt;br /&gt;
| The [[Version_string_format|version string]] of Factorio that generated this file.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#bool|bool]]&lt;br /&gt;
| A bool that is always false&lt;br /&gt;
|-&lt;br /&gt;
| short [[Data_types#array|array]]&amp;lt;[[#Achievement Header Info|bytes]]&amp;gt;&lt;br /&gt;
| [[#Achievement Header Info|Achievement header info]]. Variable length. See the section for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#array|array]]&amp;lt;[[#Achievement Content Info|bytes]]&amp;gt;&lt;br /&gt;
| [[#Achievement Content Info|Achievement Content info]]. Variable length. See the section for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]][*]&lt;br /&gt;
| Currently tracked achievements, given as a series of [[Data_types#short|shorts]] up until the end of the file, with each representing the index number of an achievement. The order of achievements in this series matches the order of which the player has them tracked in game. Some shorts may have a value of 0, it is unknown currently why, but they don&#039;t seem to store meaningful data&lt;br /&gt;
|}&lt;br /&gt;
This format has been valid since at least version 1.1.0.&lt;br /&gt;
&lt;br /&gt;
== Achievement Header Info ==&lt;br /&gt;
&lt;br /&gt;
The header contains information about what type of data fields each achievement has.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#Space_Optimized|Space optimized]] [[Data_types#string|string]]&lt;br /&gt;
| Achievement type. This determines what kind of data fields this achievement contains in the content array.&lt;br /&gt;
|-&lt;br /&gt;
| short [[Data_types#array|array]]&amp;lt;Header Subobject&amp;gt;&lt;br /&gt;
| An array of achievements that use this achievement type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Header Suboject ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|- &lt;br /&gt;
| [[Data_types#Space_Optimized|Space optimized]] [[Data_types#string|string]]&lt;br /&gt;
| Achievement string id - the one used internally by Factorio.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]]&lt;br /&gt;
| Achievement index number. This number is used to map achievements between this header info array, the content info array, and the tracked achievements list in this file. These index numbers are non-normative, so they won&#039;t always match up with the same achievement.&amp;lt;br&amp;gt; Note: the mapping of index numbers to achievement ids are continuous, but start at index 1 (there is no index 0) - because LUA tables start at 1. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Achievement Content Info ==&lt;br /&gt;
&lt;br /&gt;
This a object representing achievements, their type and their data &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#Space_Optimized|Space optimized]] [[Data_types#string|string]]&lt;br /&gt;
| Achievement Type &lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#Space_Optimized|Space optimized]] [[Data_types#string|string]]&lt;br /&gt;
| Achievement string id - the one used internally by Factorio.&lt;br /&gt;
|-&lt;br /&gt;
| byte[*]&lt;br /&gt;
| The achievement&#039;s progress information. The structure and length of this is determined by the [[#Achievement Types_2|achievement&#039;s type]]. See the table below for a list of achievement types.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Achievement Types ==&lt;br /&gt;
&lt;br /&gt;
If new achievement types are added in the future, the achievement files will be unparse-able. Please add any new types you find here, thanks!&lt;br /&gt;
&lt;br /&gt;
See the [[Prototype/Achievement]] base prototype page for more information about achievement structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Achievement&amp;lt;br&amp;gt;Type !! Binary&amp;lt;br&amp;gt;Fields(s) !! Field(s) Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/BuildEntityAchievement|build-entity-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/CombatRobotCountAchievement|combat-robot-count]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
|&lt;br /&gt;
* The greatest number of combat robots you&#039;ve had following you.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ConstructWithRobotsAchievement|construct-with-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Total number of objects constructed using robots.&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DeconstructWithRobotsAchievement|deconstruct-with-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
|&lt;br /&gt;
* Total number of objects deconstructed using robots.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DeliverByRobotsAchievement|deliver-by-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[8]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 8 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontBuildEntityAchievement|dont-build-entity-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontCraftManuallyAchievement|dont-craft-manually-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[8]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 8 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontUseEntityInEnergyProductionAchievement|dont-use-entity-in-energy-production-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* Maximum number of Joules produced per hour, only including power produced from entities listed under &amp;quot;[[Prototype/DontUseEntityInEnergyProductionAchievement#included|included]]&amp;quot;, and excluding those listed under &amp;quot;[[Prototype/DontUseEntityInEnergyProductionAchievement#excluded|excluded]]&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/FinishTheGameAchievement|finish-the-game-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/GroupAttackAchievement|group-attack-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/KillAchievement|kill-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The greatest number of an entity killed (e.g. trees, spawners).&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/PlayerDamagedAchievement|player-damaged-achievement]]&lt;br /&gt;
| &lt;br /&gt;
* [[Data_types#float|float]]&lt;br /&gt;
* [[Data_types#bool|bool]]&lt;br /&gt;
|&lt;br /&gt;
* The maximum amount of damage you&#039;ve taken in a single hit.&lt;br /&gt;
* True if the you survived that hit, False if you died.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ProduceAchievement|produce-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The total number of the item you&#039;ve produced.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ProducePerHourAchievement|produce-per-hour-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The maximum amount of the item produced per hour.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ResearchAchievement|research-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[0]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 0 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/TrainPathAchievement|train-path-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The longest path (in tiles) planned by a train.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/Achievement|achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[0]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 0 bytes long.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;combat-robot-count&amp;quot; is currently the only achievement type that doesn&#039;t end in &amp;quot;-achievement&amp;quot;. This is not an error.   &amp;lt;br&amp;gt;   &lt;br /&gt;
Also for some reason, in the 2nd Header the research-achievement type has no data bytes&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Talk:Achievement_file_format&amp;diff=199200</id>
		<title>Talk:Achievement file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Talk:Achievement_file_format&amp;diff=199200"/>
		<updated>2024-08-02T01:54:14Z</updated>

		<summary type="html">&lt;p&gt;O2theC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* so i went into the modded formated and my god is it different, the normal header and all before is the same , seems like the same index values as the normal one (for my copys of the files), but after it goes weird, first it has an array which uses an int rather than short for length like previous arrays and then it goes SO String (ach type), SO String (ach name), then bytes[*], which is varible length based on ach type, what is weirder is that the research-achievement type has no data bytes, it does in the normal format but in the modded one is has no data bytes, and i had 2 achs with it and it was consistent , so weird , there also seems to be 4 bytes at the end of the file , not sure what they do yet&lt;br /&gt;
* i think i have the correct format now and the page is updated to reflect it, during some testing it looks like the modded file almost seems to repeat some things and the repeated part uses a format that looks similar to what this page showed before, gonna check it out more tomorrow [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 01:27, 1 August 2024 (UTC)&lt;br /&gt;
* the starting format is not complete, similar to [[Mod_settings_file_format|mod settings format]], there is a bool set to false right after the version string, the page has been adjusted to reflect this [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 19:56, 31 July 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Talk:Achievement_file_format&amp;diff=199198</id>
		<title>Talk:Achievement file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Talk:Achievement_file_format&amp;diff=199198"/>
		<updated>2024-08-01T01:27:57Z</updated>

		<summary type="html">&lt;p&gt;O2theC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* the starting format is not complete, similar to [[Mod_settings_file_format|mod settings format]], there is a bool set to false right after the version string, the page has been adjusted to reflect this [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 19:56, 31 July 2024 (UTC)&lt;br /&gt;
** i think i have the correct format now and the page is updated to reflect it, during some testing it looks like the modded file almost seems to repeat some things and the repeated part uses a format that looks similar to what this page showed before, gonna check it out more tomorrow [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 01:27, 1 August 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Achievement_file_format&amp;diff=199197</id>
		<title>Achievement file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Achievement_file_format&amp;diff=199197"/>
		<updated>2024-07-31T22:03:35Z</updated>

		<summary type="html">&lt;p&gt;O2theC: the format seems to have changed in some ways since this was last updated, i changed according to my findings, will see if the content section has also changed, also made it more clear that the strings are stored with the space optimized uint length&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a technical description of the achievement file format, used by Factorio to store player&#039;s achievement progress in the files &amp;quot;achievements.dat&amp;quot; and &amp;quot;achievements-modded.dat&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Yes - this information can be used to &amp;quot;cheat&amp;quot; Factorio by simply writing to the achievement file(s) in such a way as if you had met all the achievement requirements, open up Factorio, and then suddenly have all achievements unlocked. The goal of this document is to share how to _read_ the achievement file(s) - so that third party applications can do new and interesting things with that information. Enjoy!&lt;br /&gt;
&lt;br /&gt;
See the page on [[data types]] for an explanation of the different types of data used in this document.&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
The overall file format is as follows. Note that in this file, [[Data_types#array|array]] length is stored as a [[Data_types#short|short]], not an [[Data_types#int|int]]!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]][4]&lt;br /&gt;
| The [[Version_string_format|version string]] of Factorio that generated this file.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#bool|bool]]&lt;br /&gt;
| A bool that is always false&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#array|array]]&amp;lt;[[#Achievement Header Info|bytes]]&amp;gt;&lt;br /&gt;
| [[#Achievement Header Info|Achievement header info]]. Variable length. See the section for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#array|array]]&amp;lt;[[#Achievement Content Info|bytes]]&amp;gt;&lt;br /&gt;
| [[#Achievement Content Info|Achievement content info]]. Variable length. See the section for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]][*]&lt;br /&gt;
| Currently tracked achievements, given as a series of [[Data_types#short|shorts]] up until the end of the file, with each representing the index number of an achievement. The order of achievements in this series matches the order of which the player has them tracked in game.&lt;br /&gt;
|}&lt;br /&gt;
This format has been valid since at least version 0.14.x.&lt;br /&gt;
&lt;br /&gt;
== Achievement Header Info ==&lt;br /&gt;
&lt;br /&gt;
The header contains information about what type of data fields each achievement has.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#Space optimized|Space optimized]] [[Data_types#string|string]]&lt;br /&gt;
| Achievement type. This determines what kind of data fields this achievement contains in the content array.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#array|array]]&amp;lt;Subobject&amp;gt;&lt;br /&gt;
| An array of achievements that use this achievement type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Subobject ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|- &lt;br /&gt;
| [[Data_types#Space optimized|Space optimized]] [[Data_types#string|string]]&lt;br /&gt;
| Achievement string id - the one used internally by Factorio.&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]]&lt;br /&gt;
| Achievement index number. This number is used to map achievements between this header info array, the content info array, and the tracked achievements list in this file. These index numbers are non-normative, so they won&#039;t always match up with the same achievement.&amp;lt;br&amp;gt; Note: the mapping of index numbers to achievement ids are continuous, but start at index 1 (there is no index 0) - because LUA tables start at 1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Achievement Content Info ==&lt;br /&gt;
&lt;br /&gt;
This contains the actual data of each achievement. It&#039;s important to note that not every achievement listed in the header has a matching content section here.&lt;br /&gt;
&lt;br /&gt;
Also note that this array always ends with an index number of 0. When reading, either ignore this, or manually add in a blank achievement into your meta table at index zero with no fields.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_types#short|short]]&lt;br /&gt;
| Achievement index number. This matches up with the index number in the [[#Achievement Header Info|Achievement header info]].&lt;br /&gt;
|-&lt;br /&gt;
| byte[*]&lt;br /&gt;
| The achievement&#039;s progress information. The structure and length of this is determined by the [[#Achievement Types|achievement&#039;s type]]. See the table below for a list of achievement types.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Achievement Types ==&lt;br /&gt;
&lt;br /&gt;
If new achievement types are added in the future, the achievement files will be unparse-able. Please add any new types you find here, thanks!&lt;br /&gt;
&lt;br /&gt;
See the [[Prototype/Achievement]] base prototype page for more information about achievement structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Achievement&amp;lt;br&amp;gt;Type !! Binary&amp;lt;br&amp;gt;Fields(s) !! Field(s) Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/BuildEntityAchievement|build-entity-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/CombatRobotCountAchievement|combat-robot-count]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
|&lt;br /&gt;
* The greatest number of combat robots you&#039;ve had following you.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ConstructWithRobotsAchievement|construct-with-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Total number of objects constructed using robots.&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DeconstructWithRobotsAchievement|deconstruct-with-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#int|int]]&lt;br /&gt;
|&lt;br /&gt;
* Total number of objects deconstructed using robots.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DeliverByRobotsAchievement|deliver-by-robots-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[8]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 8 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontBuildEntityAchievement|dont-build-entity-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontCraftManuallyAchievement|dont-craft-manually-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[8]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 8 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/DontUseEntityInEnergyProductionAchievement|dont-use-entity-in-energy-production-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* Maximum number of Joules produced per hour, only including power produced from entities listed under &amp;quot;[[Prototype/DontUseEntityInEnergyProductionAchievement#included|included]]&amp;quot;, and excluding those listed under &amp;quot;[[Prototype/DontUseEntityInEnergyProductionAchievement#excluded|excluded]]&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/FinishTheGameAchievement|finish-the-game-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Null bytes, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/GroupAttackAchievement|group-attack-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/KillAchievement|kill-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The greatest number of an entity killed (e.g. trees, spawners).&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/PlayerDamagedAchievement|player-damaged-achievement]]&lt;br /&gt;
| &lt;br /&gt;
* [[Data_types#float|float]]&lt;br /&gt;
* [[Data_types#bool|bool]]&lt;br /&gt;
|&lt;br /&gt;
* The maximum amount of damage you&#039;ve taken in a single hit.&lt;br /&gt;
* True if the you survived that hit, False if you died.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ProduceAchievement|produce-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The total number of the item you&#039;ve produced.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ProducePerHourAchievement|produce-per-hour-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The maximum amount of the item produced per hour.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/ResearchAchievement|research-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* byte[4]&lt;br /&gt;
|&lt;br /&gt;
* Unknown format, 4 bytes long.&lt;br /&gt;
|-&lt;br /&gt;
| [[Prototype/TrainPathAchievement|train-path-achievement]]&lt;br /&gt;
|&lt;br /&gt;
* [[Data_types#double|double]]&lt;br /&gt;
|&lt;br /&gt;
* The longest path (in tiles) planned by a train.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;combat-robot-count&amp;quot; is currently the only achievement type that doesn&#039;t end in &amp;quot;-achievement&amp;quot;. This is not an error.&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Talk:Achievement_file_format&amp;diff=199196</id>
		<title>Talk:Achievement file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Talk:Achievement_file_format&amp;diff=199196"/>
		<updated>2024-07-31T19:56:32Z</updated>

		<summary type="html">&lt;p&gt;O2theC: Created page with &amp;quot;* the starting format is not complete, similar to mod settings format, there is a bool set to false right after the version string, the page has been adjusted to reflect this ~~~~&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* the starting format is not complete, similar to [[Mod_settings_file_format|mod settings format]], there is a bool set to false right after the version string, the page has been adjusted to reflect this [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 19:56, 31 July 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Talk:Property_tree&amp;diff=199195</id>
		<title>Talk:Property tree</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Talk:Property_tree&amp;diff=199195"/>
		<updated>2024-07-31T18:41:55Z</updated>

		<summary type="html">&lt;p&gt;O2theC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;changed from string to PT string for the Dictionary type, since it uses the string with the bool and space optimized start byte&lt;br /&gt;
&lt;br /&gt;
also making it clearer that for a list the string key does not exist, when reading i was confused whether it was not there or if it was a PT string with a true start bool&lt;br /&gt;
&lt;br /&gt;
by PT String i mean the string type used for Property trees&lt;br /&gt;
&lt;br /&gt;
i also got no clue how this talk page works, i hope i am doing it right  &amp;lt;br&amp;gt;    &lt;br /&gt;
- O2theC&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
ug, now i worry about PT string being interpreted as it being a property tree of string type&lt;br /&gt;
i could use some help figuring out how to make this as clear as possible, since it seems i am bad with words and everything in this wiki is just so well made and i don&#039;t want to ruin it&lt;br /&gt;
&lt;br /&gt;
- O2theC&lt;br /&gt;
&lt;br /&gt;
* I think i got it to an ok point, help to make sure it flows and looks good would be nice -- [[User:O2theC|O2theC]] ([[User talk:O2theC|talk]]) 02:39 PM, 31 July 2024 (EDT)&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Property_tree&amp;diff=199194</id>
		<title>Property tree</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Property_tree&amp;diff=199194"/>
		<updated>2024-07-31T18:35:04Z</updated>

		<summary type="html">&lt;p&gt;O2theC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A PropertyTree (the Factorio class name) is a recursive variant format that holds a key &amp;lt;&amp;gt; value pair where the key may be empty and the value may be only one of the following types:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+PropertyTreeType ([[Data_types#unsigned byte|unsigned byte]])&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[Property_tree#None|none]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[Property_tree#Bool|bool]]&lt;br /&gt;
|-&lt;br /&gt;
| 2 || [[Property_tree#Number|number]]&lt;br /&gt;
|-&lt;br /&gt;
| 3 || [[Property_tree#String|string]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 || [[Property_tree#List|list]]&lt;br /&gt;
|-&lt;br /&gt;
| 5 || [[Property_tree#Dictionary|dictionary]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The file format ==&lt;br /&gt;
&lt;br /&gt;
1 [[Data_types#unsigned byte|unsigned byte]] representing the PropertyTreeType.&lt;br /&gt;
&lt;br /&gt;
1 [[Data_types#bool|bool]] the any-type flag (currently not important outside of Factorio internals; default value is false)&lt;br /&gt;
&lt;br /&gt;
== Property Tree Type ==&lt;br /&gt;
&lt;br /&gt;
=== None ===&lt;br /&gt;
Nothing&lt;br /&gt;
&lt;br /&gt;
=== Bool ===&lt;br /&gt;
1 [[Data_types#bool|bool]]&lt;br /&gt;
&lt;br /&gt;
=== Number ===&lt;br /&gt;
1 [[Data_types#double|double]]&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
1 [[Data_types#bool|bool]] if there is no string - then, if there is a string:&lt;br /&gt;
&lt;br /&gt;
1 [[Data_types#Space optimized|Space optimized]] [[Data_types#unsigned int|unsigned int]] the size of the string&lt;br /&gt;
&lt;br /&gt;
N [[Data_types#byte|byte]] the string contents&lt;br /&gt;
&lt;br /&gt;
=== List ===&lt;br /&gt;
Identical to Dictionary&lt;br /&gt;
&lt;br /&gt;
=== Dictionary ===&lt;br /&gt;
1 [[Data_types#unsigned int|unsigned int]] the number of PropertyTree elements&lt;br /&gt;
&lt;br /&gt;
For each element:&lt;br /&gt;
&lt;br /&gt;
1 &#039;&#039;&#039;string&#039;&#039;&#039; (See string type above) the dictionary element name or it can be empty if loading a list&lt;br /&gt;
&lt;br /&gt;
1 [[Property_tree]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Talk:Property_tree&amp;diff=199193</id>
		<title>Talk:Property tree</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Talk:Property_tree&amp;diff=199193"/>
		<updated>2024-07-31T14:34:13Z</updated>

		<summary type="html">&lt;p&gt;O2theC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;changed from string to PT string for the Dictionary type, since it uses the string with the bool and space optimized start byte&lt;br /&gt;
&lt;br /&gt;
also making it clearer that for a list the string key does not exist, when reading i was confused whether it was not there or if it was a PT string with a true start bool&lt;br /&gt;
&lt;br /&gt;
by PT String i mean the string type used for Property trees&lt;br /&gt;
&lt;br /&gt;
i also got no clue how this talk page works, i hope i am doing it right  &amp;lt;br&amp;gt;    &lt;br /&gt;
- Cat Lord&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
ug, now i worry about PT string being interpreted as it being a property tree of string type&lt;br /&gt;
i could use some help figuring out how to make this as clear as possible, since it seems i am bad with words and everything in this wiki is just so well made and i don&#039;t want to ruin it&lt;br /&gt;
&lt;br /&gt;
- Cat Lord&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Talk:Property_tree&amp;diff=199192</id>
		<title>Talk:Property tree</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Talk:Property_tree&amp;diff=199192"/>
		<updated>2024-07-31T14:30:51Z</updated>

		<summary type="html">&lt;p&gt;O2theC: Created page with &amp;quot;changed from string to PT string for the Dictionary type, since it uses the string with the bool and space optimized start byte  also making it clearer that for a list the string key does not exist, when reading i was confused whether it was not there or if it was a PT string with a true start bool  by PT String i mean the string type used for Property trees  i also got no clue how this talk page works, i hope i am doing it right  &amp;lt;br&amp;gt;     - Cat Lord&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;changed from string to PT string for the Dictionary type, since it uses the string with the bool and space optimized start byte&lt;br /&gt;
&lt;br /&gt;
also making it clearer that for a list the string key does not exist, when reading i was confused whether it was not there or if it was a PT string with a true start bool&lt;br /&gt;
&lt;br /&gt;
by PT String i mean the string type used for Property trees&lt;br /&gt;
&lt;br /&gt;
i also got no clue how this talk page works, i hope i am doing it right  &amp;lt;br&amp;gt;    &lt;br /&gt;
- Cat Lord&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Property_tree&amp;diff=199191</id>
		<title>Property tree</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Property_tree&amp;diff=199191"/>
		<updated>2024-07-31T14:26:22Z</updated>

		<summary type="html">&lt;p&gt;O2theC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A PropertyTree (the Factorio class name) is a recursive variant format that holds a key &amp;lt;&amp;gt; value pair where the key may be empty and the value may be only one of the following types:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+PropertyTreeType ([[Data_types#unsigned byte|unsigned byte]])&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[Property_tree#None|none]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[Property_tree#Bool|bool]]&lt;br /&gt;
|-&lt;br /&gt;
| 2 || [[Property_tree#Number|number]]&lt;br /&gt;
|-&lt;br /&gt;
| 3 || [[Property_tree#String|string]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 || [[Property_tree#List|list]]&lt;br /&gt;
|-&lt;br /&gt;
| 5 || [[Property_tree#Dictionary|dictionary]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The file format ==&lt;br /&gt;
&lt;br /&gt;
1 [[Data_types#unsigned byte|unsigned byte]] representing the PropertyTreeType.&lt;br /&gt;
&lt;br /&gt;
1 [[Data_types#bool|bool]] the any-type flag (currently not important outside of Factorio internals; default value is false)&lt;br /&gt;
&lt;br /&gt;
== Property Tree Type ==&lt;br /&gt;
&lt;br /&gt;
=== None ===&lt;br /&gt;
Nothing&lt;br /&gt;
&lt;br /&gt;
=== Bool ===&lt;br /&gt;
1 [[Data_types#bool|bool]]&lt;br /&gt;
&lt;br /&gt;
=== Number ===&lt;br /&gt;
1 [[Data_types#double|double]]&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
1 [[Data_types#bool|bool]] if there is no string - then, if there is a string:&lt;br /&gt;
&lt;br /&gt;
1 [[Data_types#Space optimized|Space optimized]] [[Data_types#unsigned int|unsigned int]] the size of the string&lt;br /&gt;
&lt;br /&gt;
N [[Data_types#byte|byte]] the string contents&lt;br /&gt;
&lt;br /&gt;
=== List ===&lt;br /&gt;
Identical to Dictionary&lt;br /&gt;
&lt;br /&gt;
=== Dictionary ===&lt;br /&gt;
1 [[Data_types#unsigned int|unsigned int]] the number of PropertyTree elements&lt;br /&gt;
&lt;br /&gt;
For each element:&lt;br /&gt;
&lt;br /&gt;
1 [[Property_tree#String|PT string]] the dictionary element name or it can be empty if loading a list&lt;br /&gt;
&lt;br /&gt;
1 [[Property_tree]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>O2theC</name></author>
	</entry>
</feed>