The order property is a simple string
. When the game needs to sort prototypes (of the same type), 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.
The alphabetical sorting uses lexicographical comparison 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.
{ -- This item will be shown after the below one
type = "item",
name = "item-1",
order = "ad",
},
{ -- This item will be shown before the above one
type = "item",
name = "item-2",
order = "ab",
}
-- The order of special characters can be identified by looking at a UTF-8 character list.
-- This is the order some common characters are sorted in:
"-"
"0"
"9"
"A"
"Z"
"["
"]"
"a"
"z"
-- The following order strings would be ordered thusly then:
"a"
"ab"
"azaaa" -- "b" is sorted before "z", so "ab" comes before "az", regardless of the letters following it
"b"
"b-zzz"
"b[aaa]" -- "[" is sorted after "-" in UTF-8
"bb" -- "b" is sorted after "[" in UTF-8
]