Types/Order

From Official Factorio Wiki
Revision as of 17:51, 16 August 2023 by BilkaBot (talk | contribs) (Migrated prototype doc to separate website)
Jump to navigation Jump to search

The prototype docs have moved to a new website with an improved format. This documentation page can now be found here: https://lua-api.factorio.com/latest/types/Order.html

This wiki page is no longer updated and will be removed at some point in the future, so please update your browser bookmarks or other links that sent you here. If you'd like to contribute to the new docs, you can leave your feedback on the forums.



Basic

The order property is a simple string. When the game needs to sort prototypes, it looks at their order properties and sorts those alphabetically. A prototype with an order string of "a" will be listed before other prototypes with order string "b" or "c". The "-" or "[]" structures that can be found in vanilla order strings do not have any special meaning.

Advanced

When the game compares two prototypes (of the same type) if the order strings aren't equal they're lexicographically compared to determine if a given prototype is shown before or after another. If the order strings are equal then the game falls back to comparing the prototype names to determine order.

Examples

Two item prototypes

The second item is shown before the first one (in the crafting grid/inventory etc)

{
    type = "item",
    name = "item-1",
    order = "ad",
  },

  {
    type = "item",
    name = "item-2",
    order = "ab",
  },

Some sorted strings

Using an UTF-8 character list, the sort order of special characters can be identified. This is the sort order for common characters:

  • "-"
  • "0"
  • "9"
  • "A"
  • "Z"
  • "["
  • "]"
  • "a"
  • "z"

Example using the above ordering:

  • "a"
  • "ab"
  • "azaaa" (b is sorted before z, so "ab" comes before "az", regardless of the rest of the letters after "az")
  • "b"
  • "b-zzzz"
  • "b[aaaa]" ([ is sorted after - in UTF-8)
  • "bb" (b is sorted after [ in UTF-8)