#blueprint #factorio #reading #object #string-format #fields #wiki

bin+lib factorio-blueprint

Library for reading and writing Factorio blueprints

3 releases (breaking)

0.3.0 Nov 17, 2021
0.2.0 Sep 27, 2020
0.1.1 Apr 9, 2020

#8 in #factorio

Download history 12/week @ 2024-01-07 10/week @ 2024-01-14 26/week @ 2024-02-18 28/week @ 2024-02-25 16/week @ 2024-03-03 9/week @ 2024-03-10 3/week @ 2024-03-17 6/week @ 2024-03-24 52/week @ 2024-03-31

74 downloads per month
Used in factorio-bitpacker

GPL-3.0 license

555KB
636 lines

factorio-blueprint

Library for reading and writing factorio blueprints. See https://wiki.factorio.com/Blueprint_string_format

The objects module contains typed definitions for all of the objects and types defined on that wiki page. All fields are public. While these objects are currently light on helper methods, it's still straightforward to construct arbitary blueprints.

The Container enum is the primary entry point to the library: it has variants for each of the top-level blueprint items, and has convenience methods for conversion to and from blueprint string format.

CLI

When built with --features codec-cli, this produces a factorio-blueprint executable, which is strictly a codec: it converts from blueprint strings to json, and vice-versa. It can read its inputs from a file, from the command line, or from stdin; it always writes to stdout. This enables some relatively sophisticated manipulations using nothing but the command line. For example, to remove all belts from a blueprint:

$ factorio-blueprint decode --file tests/examples/super_compact_tileable_mining.txt |\
  jq -c '.blueprint.entities |= map(select((has("name") | not) or (.name | contains("belt") | not)))' |\
  factorio-blueprint encode
0eNq1mttqg0AYhO/7GHttwD3p6mVfo5SSw9IurGswpjQE372atCWUEHCSuQpxo37ujP/OrzmKVdz7bRdSL+qjCOs27UT9chS78J6WcdrWH7Ze1CL0vhGZSMtm+uajX/ddWC+akEJ6X2y6EKMYMhHSxn+JWg7Z3cdQw2smfOpDH/wZ6uaOmdi2u/G3bZrOOO6/kDYTh+kzHw+6Cd2412lUZf+AxqtO58HxPMfhtKHv2vi28h/Lz9B2560nlsNb2jcr3/1c41wkeR2peAySApDcdaL8MUQaIOLKZhDZqKrZ+USKKlqBTJE+I5UUohIgogI5ZIryq0QP8nU1n4jKM3lz9hQVV4kedJ9JoGIbKhBSr39XNcNRTeNIikNk7qhGknLzS4sjWQ5Rga/8hkNUwkSKA+TwNYRkowom4rhI5XAS4ZhISRSI4yGl7sj8hhP5NY6kOER4wiYBWTzyk0Qr4GxkOUAlHtYkh8jhnSMnGqnqjswvKUg6x5Esh0jCsnHio1ZwX0TSTKNAJMUM2hVxSpG2cJfGqUS6wFsix5GsxNd8x5kjB6d9x3nuWMF1iKOZyeEQwpHMwNmao5i5LNSN34R9s/jD2rbR32rzOQ2a0fORyERmNtFPg0YSzc6fIUcFKnAXcZpqU8ImIgE51EOcptpUsIc4QDaHPcS5661ELUTiUaCDOE+JrEYNROIxsH84L6usRf1D4immV/unQ9QXf0DIxKfvdr8nisuVj+P489/4MDx9AxAgLaY=

Dependencies

~1.4–2.5MB
~50K SLoC