@etothepii/satisfactory-file-parser 0.4.12 → 0.4.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +43 -22
  3. package/build/parser/byte/binary-readable.interface.d.ts +0 -3
  4. package/build/parser/byte/binary-writable.interface.d.ts +20 -0
  5. package/build/parser/byte/binary-writable.interface.js +2 -0
  6. package/build/parser/byte/byte-reader.class.d.ts +0 -3
  7. package/build/parser/byte/byte-reader.class.js +0 -8
  8. package/build/parser/byte/byte-writer.class.d.ts +6 -3
  9. package/build/parser/byte/byte-writer.class.js +3 -1
  10. package/build/parser/satisfactory/blueprint/blueprint-reader.js +10 -10
  11. package/build/parser/satisfactory/edit/edit-constants.d.ts +157 -3
  12. package/build/parser/satisfactory/edit/edit-constants.js +237 -161
  13. package/build/parser/satisfactory/objects/DataFields.js +9 -9
  14. package/build/parser/satisfactory/objects/SaveObject.d.ts +1 -1
  15. package/build/parser/satisfactory/objects/SaveObject.js +1 -1
  16. package/build/parser/satisfactory/objects/property/generic/FloatProperty.js +1 -1
  17. package/build/parser/satisfactory/objects/property/generic/SetProperty.js +5 -2
  18. package/build/parser/satisfactory/objects/property/generic/StructProperty.js +13 -5
  19. package/build/parser/satisfactory/save/level.class.d.ts +1 -2
  20. package/build/parser/satisfactory/save/level.class.js +10 -15
  21. package/build/parser/satisfactory/save/save-reader.js +8 -4
  22. package/build/parser/satisfactory/save/save.types.d.ts +0 -25
  23. package/build/parser/satisfactory/structs/util.types.js +8 -8
  24. package/build/parser/stream/reworked/readable-stream-parser.d.ts +1 -0
  25. package/build/parser/stream/reworked/readable-stream-parser.js +28 -3
  26. package/package.json +1 -1
  27. package/build/parser/satisfactory/objects/ObjectReference.d.ts +0 -10
  28. package/build/parser/satisfactory/objects/ObjectReference.js +0 -17
  29. package/build/parser/satisfactory/objects/Property.d.ts +0 -272
  30. package/build/parser/satisfactory/objects/Property.js +0 -1177
  31. package/build/parser/satisfactory/objects/ue/FMD5Hash.d.ts +0 -7
  32. package/build/parser/satisfactory/objects/ue/FMD5Hash.js +0 -19
  33. package/build/parser/satisfactory/objects/ue/GUID.d.ts +0 -6
  34. package/build/parser/satisfactory/objects/ue/GUID.js +0 -21
  35. package/build/parser/satisfactory/save/asynchronous-level.class.d.ts +0 -9
  36. package/build/parser/satisfactory/save/asynchronous-level.class.js +0 -66
  37. package/build/parser/stream/byte-stream-reader.class.d.ts +0 -57
  38. package/build/parser/stream/byte-stream-reader.class.js +0 -241
  39. package/build/parser/stream/json-stream-state-writer.d.ts +0 -12
  40. package/build/parser/stream/json-stream-state-writer.js +0 -18
  41. package/build/parser/stream/json-stream-writable.d.ts +0 -20
  42. package/build/parser/stream/json-stream-writable.js +0 -83
  43. package/build/parser/stream/json-stream-writer.d.ts +0 -22
  44. package/build/parser/stream/json-stream-writer.js +0 -127
  45. package/build/parser/stream/reworked/stream-parser.d.ts +0 -6
  46. package/build/parser/stream/reworked/stream-parser.js +0 -31
  47. package/build/parser/stream/save-stream-json-stringifier.d.ts +0 -6
  48. package/build/parser/stream/save-stream-json-stringifier.js +0 -35
  49. package/build/parser/stream/save-stream-reader.class.d.ts +0 -15
  50. package/build/parser/stream/save-stream-reader.class.js +0 -121
  51. package/build/parser/stream/save-stream-writer.class.d.ts +0 -25
  52. package/build/parser/stream/save-stream-writer.class.js +0 -119
  53. package/build/parser/stream/stream-level.class.d.ts +0 -12
  54. package/build/parser/stream/stream-level.class.js +0 -103
  55. package/build/parser/stream/stream-parser.d.ts +0 -40
  56. package/build/parser/stream/stream-parser.js +0 -225
package/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ # Changelog
2
+
3
+ ## [0.4.14] (2024-10-02)
4
+ ### updated README
5
+ * updated the code examples with more context
6
+
7
+ ### Internal renamings (won't affect you if you stick to the code examples)
8
+ * improved the interface for abstract parser classes
9
+ * extended some error log messages
10
+ * added an additional check when parsing struct property InventoryItem, since ported saves often have a few more bytes.
11
+ * changed function name `writeFloat()` to `writeFloat32()` of the save writer.
12
+ * changed variable name `saveOrBlueprintIndicator` to `objectVersion` for objects, since the meaning of that number became now more clear.
package/README.md CHANGED
@@ -9,7 +9,7 @@ This parser can read, modify and write:
9
9
  - Blueprint Files `.sbp`, `.sbpcfg`
10
10
 
11
11
  ## Supported Versions
12
- The version support of the packages is indicated below.
12
+ The version support of the packages is indicated below. Some bugs might still be present, see Bug Reporting further down.
13
13
 
14
14
  Game Version Files of U5 and below are NOT supported.
15
15
 
@@ -18,31 +18,42 @@ Game Version Files of U5 and below are NOT supported.
18
18
  | <= U5 | ❌ |
19
19
  | U6 + U7 | ✅ 0.0.1 - 0.0.34 |
20
20
  | U8 | ✅ 0.1.20 - 0.3.7 |
21
- | U1.0 | ✅ >= 0.4.12 |
21
+ | U1.0 | ✅ >= 0.4.14 |
22
22
 
23
+ ## Changelog
24
+ The Changelog is alongside the readme [here](./CHANGELOG.md)
23
25
 
24
26
  ## Installation via npm
25
27
  `npm install @etothepii/satisfactory-file-parser`
26
28
 
27
29
  ## Usage of Save Parsing
28
30
 
29
- I recommend parsing via stream, to save RAM. The binary data of the whole save will still be in memory, but the converted JSON won't.
30
- The returned `stream` is a readable WHATWG stream of type string.
31
+ I recommend parsing via stream, to save RAM. The binary data of the whole save will still be in memory, but the converted JSON can be streamed. (You can of course keep reading the stream in memory).
32
+ The returned `stream` is a readable WHATWG stream of type string and represents a `SatisfactorySave` object. this object can be serialized again.
31
33
  WHATWG is used by default by browsers. Node js can use them using `Writable.toWeb()` and `Writable.fromWeb()` for example.
32
34
 
33
35
  ```js
34
- const jsonFileStream = fs.createWriteStream(outJsonPath, { highWaterMark: 1024 * 1024 * 200 }); // your outgoing JSON stream. In this case directly to file.
35
- const whatwgWriteStream = Writable.toWeb(outJsonStream) as WritableStream<string>; // convert the file stream to WHATWG-compliant stream
36
-
37
- const { stream, startStreaming } = ReadableStreamParser.CreateReadableStreamFromSaveToJson(savename, file, decompressedBody => {
36
+ import * as fs from 'fs';
37
+ import * as path from 'path';
38
+ import { Writable } from 'stream';
39
+ import { WritableStream } from 'stream/web';
40
+ import { ReadableStreamParser } from '@etothepii/satisfactory-file-parser';
41
+
42
+ const filepath = path.join(__dirname, 'MySave.sav');
43
+ const file = fs.readFileSync(filepath);
44
+ const outJsonPath = path.join(__dirname, 'MySave.json');
45
+ const jsonFileStream = fs.createWriteStream(outJsonPath, { highWaterMark: 1024 * 1024 * 200 }); // your outgoing JSON stream. In this case directly to file.
46
+ const whatwgWriteStream = Writable.toWeb(jsonFileStream) as WritableStream<string>; // convert the file stream to WHATWG-compliant stream
47
+
48
+ const { stream, startStreaming } = ReadableStreamParser.CreateReadableStreamFromSaveToJson('MySave', file, decompressedBody => {
38
49
  console.log('on binary body data.');
39
50
  }, (progress: number, msg: string | undefined) => {
40
51
  // a callback for reporting progress as number [0,1]. Sometimes has a message.
41
- console.log(`${new Date().toString()}: progress`, progress, msg);
52
+ console.log(`progress`, progress, msg);
42
53
  });
43
54
 
44
55
  stream.pipeTo(whatwgWriteStream);
45
- whatwgWriteStream.on('close', () => {
56
+ jsonFileStream.on('close', () => {
46
57
  // write stream finished
47
58
  });
48
59
 
@@ -55,44 +66,49 @@ For example, when writing the header or when writing a chunk of the save body.
55
66
  The splitting in individual chunks enables you to more easily stream the binary data to somewhere else.
56
67
  ```js
57
68
  import * as fs from 'fs';
69
+ import * as path from 'path';
58
70
  import { Parser } from "@etothepii/satisfactory-file-parser";
59
71
 
60
- let header: Uint8Array, bodyChunks: Uint8Array[] = [];
61
- Parser.WriteSave(save, binaryBeforeCompressed => {
72
+ // save is your SatisfactorySave object to serialize. In this example i read it back in from a json file.
73
+ const save = JSON.parse(fs.readFileSync(path.join(__dirname, 'MySave.json'), {encoding: 'utf-8'}));
74
+
75
+ let fileHeader: Uint8Array;
76
+ const bodyChunks: Uint8Array[] = [];
77
+ Parser.WriteSave(save, binaryBeforeCompressed => {
62
78
  console.log('on binary data before being compressed.');
63
79
  }, header => {
64
80
  console.log('on save header.');
65
- header = header;
81
+ fileHeader = header;
66
82
  }, chunk => {
67
83
  console.log('on save body chunk.');
68
84
  bodyChunks.push(chunk);
69
85
  });
70
86
 
71
87
  // write complete sav file back to disk
72
- fs.writeFileSync('./MyModifiedSave.sav', Buffer.concat([header!, ...bodyChunks]));
88
+ fs.writeFileSync('./MyModifiedSave.sav', Buffer.concat([fileHeader!, ...bodyChunks]));
73
89
  ```
74
90
 
75
91
 
76
- ### Old Usage of Save Parsing. Deprecated.
92
+ ### Old Save Parsing. Deprecated.
77
93
  For reading a save file (`.sav`) and parse In-Memory, just pass a Buffer to the parser with the file content.
78
94
  ```js
79
95
  import * as fs from 'fs';
80
96
  import { Parser } from "@etothepii/satisfactory-file-parser";
81
97
 
82
98
  const file = fs.readFileSync('./MySave.sav') as Buffer;
83
- const parsedSave = Parser.ParseSaveFile(file);
99
+ const parsedSave = Parser.ParseSaveFile('MySave', file);
84
100
  ```
85
101
 
86
102
 
87
103
  ## Usage of Blueprint Parsing
88
- Blueprint parsing works very similiar. Note, that blueprints consist of 2 files. The `.sbp` main file and the config file `.sbpcfg`.
104
+ Note, that blueprints consist of 2 files. The `.sbp` main file and the config file `.sbpcfg`.
89
105
 
90
106
  ```js
91
107
  import * as fs from 'fs';
92
108
  import { Parser } from "@etothepii/satisfactory-file-parser";
93
109
 
94
- const mainFile = fs.readFileSync('./MyBlueprint.sbp') as Buffer;
95
- const configFile = fs.readFileSync('./MyBlueprint.sbpcfg') as Buffer;
110
+ const mainFile = fs.readFileSync('./MyBlueprint.sbp');
111
+ const configFile = fs.readFileSync('./MyBlueprint.sbpcfg');
96
112
  const parsedBlueprint = Parser.ParseBlueprintFiles('MyBlueprint', mainFile, configFile);
97
113
  ```
98
114
 
@@ -101,7 +117,8 @@ Consequently, writing a blueprint into binary data works the same way with getti
101
117
  import * as fs from 'fs';
102
118
  import { Parser } from "@etothepii/satisfactory-file-parser";
103
119
 
104
- let mainFileHeader: Uint8Array, mainFileBodyChunks: Uint8Array[] = [];
120
+ let mainFileHeader: Uint8Array;
121
+ const mainFileBodyChunks: Uint8Array[] = [];
105
122
  const summary = Parser.WriteBlueprintFiles(blueprint, mainFileBinaryBeforeCompressed => {
106
123
  console.log('on main file binary data before being compressed.');
107
124
  }, header => {
@@ -116,13 +133,17 @@ const summary = Parser.WriteBlueprintFiles(blueprint, mainFileBinaryBeforeCompre
116
133
  fs.writeFileSync('./MyModifiedBlueprint.sbp', Buffer.concat([mainFileHeader!, ...mainFileBodyChunks]));
117
134
 
118
135
  // write .sbpcfg file back to disk, we get that data from the result of WriteBlueprintFiles
119
- fs.writeFileSync('./MyModifiedSave.sbpcfg', Buffer.from(summary.configFileBinary));
136
+ fs.writeFileSync('./MyModifiedBlueprint.sbpcfg', Buffer.from(summary.configFileBinary));
120
137
  ```
121
138
 
139
+ ### Bug Reports or Feedback
140
+ So far this was just a private hobby project. But i figure some people actually use it.
141
+ If you find a bug or have feedback about the parser, you can just hit me up on the satisfactory discord `etothepii`.
142
+
122
143
  ## License
123
144
  MIT License
124
145
 
125
- Copyright (c) 2023 etothepii
146
+ Copyright (c) 2024 etothepii
126
147
 
127
148
  Permission is hereby granted, free of charge, to any person obtaining a copy
128
149
  of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,5 @@
1
1
  import { BinaryOperable } from "./binary-operable.interface";
2
2
  export interface BinaryReadable extends BinaryOperable {
3
- debug: boolean;
4
3
  skipBytes: (count?: number) => void;
5
4
  readBytes: (count: number) => Uint8Array;
6
5
  readByte: () => number;
@@ -17,6 +16,4 @@ export interface BinaryReadable extends BinaryOperable {
17
16
  readDouble: () => number;
18
17
  readString: () => string;
19
18
  getBufferProgress: () => number;
20
- allocate: (count: number) => PromiseLike<void>;
21
- getAmountAllocatedLeft: () => number;
22
19
  }
@@ -0,0 +1,20 @@
1
+ import { BinaryOperable } from "./binary-operable.interface";
2
+ export interface BinaryWritable extends BinaryOperable {
3
+ skipBytes: (count?: number) => void;
4
+ jumpTo(position: number): void;
5
+ writeByte: (value: number) => void;
6
+ writeBytes: (bytes: Uint8Array) => void;
7
+ writeBytesArray: (bytes: number[]) => void;
8
+ writeInt8: (value: number) => void;
9
+ writeUint8: (value: number) => void;
10
+ writeInt16: (value: number) => void;
11
+ writeUint16: (value: number) => void;
12
+ writeInt32: (value: number) => void;
13
+ writeUint32: (value: number) => void;
14
+ writeInt64: (value: bigint) => void;
15
+ writeUint64: (value: bigint) => void;
16
+ writeFloat32: (value: number) => void;
17
+ writeDouble: (value: number) => void;
18
+ writeString: (value: string) => void;
19
+ getBufferProgress: () => number;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -4,7 +4,6 @@ export declare abstract class ByteReader implements BinaryReadable {
4
4
  protected bufferView: DataView;
5
5
  protected fileBuffer: ArrayBuffer;
6
6
  alignment: Alignment;
7
- debug: boolean;
8
7
  protected currentByte: number;
9
8
  protected handledByte: number;
10
9
  protected maxByte: number;
@@ -27,8 +26,6 @@ export declare abstract class ByteReader implements BinaryReadable {
27
26
  readFloat32(): number;
28
27
  readDouble(): number;
29
28
  readString(): string;
30
- allocate(count: number): Promise<void>;
31
- getAmountAllocatedLeft: () => number;
32
29
  getBufferPosition: () => number;
33
30
  getBufferSlice: (begin: number, end: number | undefined) => ArrayBuffer;
34
31
  getBufferProgress: () => number;
@@ -4,11 +4,9 @@ exports.ByteReader = void 0;
4
4
  const alignment_enum_1 = require("./alignment.enum");
5
5
  class ByteReader {
6
6
  constructor(fileBuffer, alignment) {
7
- this.debug = false;
8
7
  this.currentByte = 0;
9
8
  this.handledByte = 0;
10
9
  this.maxByte = 0;
11
- this.getAmountAllocatedLeft = () => this.bufferView.byteLength - this.currentByte;
12
10
  this.getBufferPosition = () => this.currentByte;
13
11
  this.getBufferSlice = (begin, end) => this.bufferView.buffer.slice(begin, end);
14
12
  this.getBufferProgress = () => this.currentByte / this.bufferView.buffer.byteLength;
@@ -117,11 +115,5 @@ class ByteReader {
117
115
  throw error;
118
116
  }
119
117
  }
120
- allocate(count) {
121
- if (this.currentByte + count < this.bufferView.byteLength) {
122
- console.warn('tried to allocate but there is not enough data left.');
123
- }
124
- return Promise.resolve();
125
- }
126
118
  }
127
119
  exports.ByteReader = ByteReader;
@@ -1,6 +1,7 @@
1
1
  import { Alignment } from "./alignment.enum";
2
- export declare abstract class ByteWriter {
3
- protected alignment: Alignment;
2
+ import { BinaryWritable } from './binary-writable.interface';
3
+ export declare abstract class ByteWriter implements BinaryWritable {
4
+ alignment: Alignment;
4
5
  protected bufferArray: ArrayBuffer;
5
6
  protected bufferView: DataView;
6
7
  protected currentByte: number;
@@ -18,12 +19,14 @@ export declare abstract class ByteWriter {
18
19
  writeUint32(value: number): void;
19
20
  writeInt64(value: bigint): void;
20
21
  writeUint64(value: bigint): void;
21
- writeFloat(value: number): void;
22
+ writeFloat32(value: number): void;
22
23
  writeDouble(value: number): void;
23
24
  writeString(value: string): void;
24
25
  static IsASCIICompatible: (value: string) => boolean;
25
26
  getBufferPosition: () => number;
26
27
  getBufferSlice: (start: number, end?: number) => ArrayBuffer;
28
+ getBufferLength: () => number;
29
+ getBufferProgress: () => number;
27
30
  writeBinarySizeFromPosition(lenIndicatorPos: number, start: number): void;
28
31
  protected extendBufferIfNeeded(countNeededBytes: number, factor?: number): void;
29
32
  protected truncateBuffer(): void;
@@ -6,6 +6,8 @@ class ByteWriter {
6
6
  constructor(alignment, bufferSize = 500) {
7
7
  this.getBufferPosition = () => this.currentByte;
8
8
  this.getBufferSlice = (start, end) => this.bufferArray.slice(start, end);
9
+ this.getBufferLength = () => this.bufferArray.byteLength;
10
+ this.getBufferProgress = () => this.currentByte / this.bufferArray.byteLength;
9
11
  this.alignment = alignment;
10
12
  this.bufferArray = new ArrayBuffer(bufferSize);
11
13
  this.bufferView = new DataView(this.bufferArray);
@@ -69,7 +71,7 @@ class ByteWriter {
69
71
  this.bufferView.setBigUint64(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
70
72
  this.currentByte += 8;
71
73
  }
72
- writeFloat(value) {
74
+ writeFloat32(value) {
73
75
  this.extendBufferIfNeeded(4);
74
76
  this.bufferView.setFloat32(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
75
77
  this.currentByte += 4;
@@ -23,13 +23,13 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
23
23
  };
24
24
  }
25
25
  static ReadHeader(reader) {
26
- const blueprintTypeOrWhat = reader.readBytes(4);
27
- const versionThing = reader.readBytes(2 * 4);
26
+ const alwaysTwo = reader.readBytes(4);
27
+ const objectVersion = reader.readBytes(2 * 4);
28
28
  const dimensions = util_types_1.vec3.ParseInt(reader);
29
29
  let itemTypeCount = reader.readInt32();
30
30
  const itemCosts = new Array(itemTypeCount).fill(['', 0]);
31
31
  for (let i = 0; i < itemTypeCount; i++) {
32
- let indexOrWhat = reader.readInt32();
32
+ reader.readInt32();
33
33
  let itemPathName = reader.readString();
34
34
  let itemCount = reader.readInt32();
35
35
  itemCosts[i] = [itemPathName, itemCount];
@@ -37,7 +37,7 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
37
37
  let recipeCount = reader.readInt32();
38
38
  const recipeRefs = new Array(recipeCount).fill('');
39
39
  for (let i = 0; i < recipeCount; i++) {
40
- let indexOrWhat = reader.readInt32();
40
+ reader.readInt32();
41
41
  const recipeName = reader.readString();
42
42
  recipeRefs[i] = recipeName;
43
43
  }
@@ -105,7 +105,7 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
105
105
  level_class_1.Level.ReadObjectHeaders(reader, objects, () => { });
106
106
  const someChecksumThing = reader.readInt32();
107
107
  BlueprintReader.ReadBlueprintObjectContents(reader, objects, 0);
108
- const pos = reader.getBufferPosition();
108
+ reader.getBufferPosition();
109
109
  return objects;
110
110
  }
111
111
  static ReadBlueprintObjectContents(reader, objectsList, buildVersion) {
@@ -133,14 +133,14 @@ class BlueprintConfigReader extends byte_reader_class_1.ByteReader {
133
133
  this.parse = () => BlueprintConfigReader.ParseConfig(this);
134
134
  }
135
135
  static ParseConfig(reader) {
136
- const unk = reader.readInt32();
136
+ const alwaysTwo = reader.readInt32();
137
137
  const description = reader.readString();
138
- const unk3 = reader.readInt32();
139
- const colorMaybe = util_types_1.col4.ParseRGBA(reader);
138
+ const iconID = reader.readInt32();
139
+ const color = util_types_1.col4.ParseRGBA(reader);
140
140
  return {
141
141
  description,
142
- color: colorMaybe,
143
- iconID: unk3
142
+ color,
143
+ iconID,
144
144
  };
145
145
  }
146
146
  }
@@ -870,6 +870,68 @@ export declare const EDIT: {
870
870
  readonly CLASS_NAME: "Build_Ramp_Frame_Inverted_01_C";
871
871
  };
872
872
  };
873
+ readonly STAIRS: {
874
+ readonly NORMAL_8x1: {
875
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/FicsitSet/Build_Stair_FicsitSet_8x1_01.Build_Stair_FicsitSet_8x1_01_C";
876
+ readonly CLASS_NAME: "Build_Stair_FicsitSet_8x1_01_C";
877
+ };
878
+ readonly NORMAL_8x2: {
879
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/FicsitSet/Build_Stair_FicsitSet_8x2_01.Build_Stair_FicsitSet_8x2_01_C";
880
+ readonly CLASS_NAME: "Build_Stair_FicsitSet_8x2_01_C";
881
+ };
882
+ readonly NORMAL_8x4: {
883
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/FicsitSet/Build_Stair_FicsitSet_8x4_01.Build_Stair_FicsitSet_8x4_01_C";
884
+ readonly CLASS_NAME: "Build_Stair_FicsitSet_8x4_01_C";
885
+ };
886
+ readonly CONCRETE_8x1: {
887
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/ConcreteSet/Build_Stair_Concrete_8x1.Build_Stair_Concrete_8x1_C";
888
+ readonly CLASS_NAME: "Build_Stair_Concrete_8x1_C";
889
+ };
890
+ readonly CONCRETE_8x2: {
891
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/ConcreteSet/Build_Stair_Concrete_8x2.Build_Stair_Concrete_8x2_C";
892
+ readonly CLASS_NAME: "Build_Stair_Concrete_8x2_C";
893
+ };
894
+ readonly CONCRETE_8x4: {
895
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/ConcreteSet/Build_Stair_Concrete_8x4.Build_Stair_Concrete_8x4_C";
896
+ readonly CLASS_NAME: "Build_Stair_Concrete_8x4_C";
897
+ };
898
+ readonly CONCRETE_POLISHED_8x1: {
899
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/PolishedConcreteSet/Build_Stair_PolishedConcrete_8x1.Build_Stair_PolishedConcrete_8x1_C";
900
+ readonly CLASS_NAME: "Build_Stair_PolishedConcrete_8x1_C";
901
+ };
902
+ readonly CONCRETE_POLISHED_8x2: {
903
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/PolishedConcreteSet/Build_Stair_PolishedConcrete_8x2.Build_Stair_PolishedConcrete_8x2_C";
904
+ readonly CLASS_NAME: "Build_Stair_PolishedConcrete_8x2_C";
905
+ };
906
+ readonly CONCRETE_POLISHED_8x4: {
907
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/PolishedConcreteSet/Build_Stair_PolishedConcrete_8x4.Build_Stair_PolishedConcrete_8x4_C";
908
+ readonly CLASS_NAME: "Build_Stair_PolishedConcrete_8x4_C";
909
+ };
910
+ readonly ASPHALT_8x1: {
911
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/AsphaltSet/Build_Stair_Asphalt_8x1.Build_Stair_Asphalt_8x1_C";
912
+ readonly CLASS_NAME: "Build_Stair_Asphalt_8x1_C";
913
+ };
914
+ readonly ASPHALT_8x2: {
915
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/AsphaltSet/Build_Stair_Asphalt_8x2.Build_Stair_Asphalt_8x2_C";
916
+ readonly CLASS_NAME: "Build_Stair_Asphalt_8x2_C";
917
+ };
918
+ readonly ASPHALT_8x4: {
919
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/AsphaltSet/Build_Stair_Asphalt_8x4.Build_Stair_Asphalt_8x4_C";
920
+ readonly CLASS_NAME: "Build_Stair_Asphalt_8x4_C";
921
+ };
922
+ readonly METAL_8x1: {
923
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/GripMetal/Build_Stair_GripMetal_8x1.Build_Stair_GripMetal_8x1_C";
924
+ readonly CLASS_NAME: "Build_Stair_GripMetal_8x1_C";
925
+ };
926
+ readonly METAL_8x2: {
927
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/GripMetal/Build_Stair_GripMetal_8x2.Build_Stair_GripMetal_8x2_C";
928
+ readonly CLASS_NAME: "Build_Stair_GripMetal_8x2_C";
929
+ };
930
+ readonly METAL_8x4: {
931
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Foundation/GripMetal/Build_Stair_GripMetal_8x4.Build_Stair_GripMetal_8x4_C";
932
+ readonly CLASS_NAME: "Build_Stair_GripMetal_8x4_C";
933
+ };
934
+ };
873
935
  };
874
936
  readonly WALL: {
875
937
  readonly SOLID: {
@@ -1065,6 +1127,18 @@ export declare const EDIT: {
1065
1127
  readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Window_8x4_04.Build_Wall_Window_8x4_04_C";
1066
1128
  readonly CLASS_NAME: "Build_Wall_Window_8x4_04_C";
1067
1129
  };
1130
+ readonly NORMAL_8x4_05: {
1131
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Window_8x4_05.Build_Wall_Window_8x4_05_C";
1132
+ readonly CLASS_NAME: "Build_Wall_Window_8x4_05_C";
1133
+ };
1134
+ readonly NORMAL_8x4_06: {
1135
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Window_8x4_06.Build_Wall_Window_8x4_06_C";
1136
+ readonly CLASS_NAME: "Build_Wall_Window_8x4_06_C";
1137
+ };
1138
+ readonly NORMAL_8x4_07: {
1139
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Window_8x4_07.Build_Wall_Window_8x4_07_C";
1140
+ readonly CLASS_NAME: "Build_Wall_Window_8x4_07_C";
1141
+ };
1068
1142
  readonly CONCRETE_8x4_01: {
1069
1143
  readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Wall/ConcreteWallSet/Build_Wall_Concrete_8x4_Window_01.Build_Wall_Concrete_8x4_Window_01_C";
1070
1144
  readonly CLASS_NAME: "Build_Wall_Concrete_8x4_Window_01_C";
@@ -1458,6 +1532,22 @@ export declare const EDIT: {
1458
1532
  readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Fence/Build_Concrete_Barrier_01.Build_Concrete_Barrier_01_C";
1459
1533
  readonly CLASS_NAME: "Build_Concrete_Barrier_01_C";
1460
1534
  };
1535
+ readonly BARRIER_LOW: {
1536
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Barrier/Build_Barrier_Low_01.Build_Barrier_Low_01_C";
1537
+ readonly CLASS_NAME: "Build_Barrier_Low_01_C";
1538
+ };
1539
+ readonly BARRIER_TALL: {
1540
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/Barrier/Build_Barrier_Tall_01.Build_Barrier_Tall_01_C";
1541
+ readonly CLASS_NAME: "Build_Barrier_Tall_01_C";
1542
+ };
1543
+ readonly TARPFENCE: {
1544
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/TarpFence/Build_TarpFence.Build_TarpFence_C";
1545
+ readonly CLASS_NAME: "Build_TarpFence_C";
1546
+ };
1547
+ readonly CHAIN_LINK_FENCE: {
1548
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Building/TarpFence/Build_ChainLinkFence.Build_ChainLinkFence_C";
1549
+ readonly CLASS_NAME: "Build_ChainLinkFence_C";
1550
+ };
1461
1551
  };
1462
1552
  readonly WORKSHOP: {
1463
1553
  readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/Workshop/Build_Workshop.Build_Workshop_C";
@@ -1540,9 +1630,11 @@ export declare const EDIT: {
1540
1630
  };
1541
1631
  readonly POWER_POLE_WALL_MK1: {
1542
1632
  readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/PowerPoleWall/Build_PowerPoleWall.Build_PowerPoleWall_C";
1633
+ readonly CLASS_NAME: "Build_PowerPoleWall_C";
1543
1634
  };
1544
1635
  readonly POWER_POLE_WALL_MK2: {
1545
1636
  readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/PowerPoleWall/Build_PowerPoleWall_Mk2.Build_PowerPoleWall_Mk2_C";
1637
+ readonly CLASS_NAME: "Build_PowerPoleWall_Mk2_C";
1546
1638
  };
1547
1639
  };
1548
1640
  readonly POWER_LINE: {
@@ -1777,9 +1869,35 @@ export declare const EDIT: {
1777
1869
  readonly CLASS_NAME: "Build_QuantumEncoder_C";
1778
1870
  };
1779
1871
  };
1780
- readonly ALIEN_POWER_BUILDING: {
1781
- readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/AlienPower/Build_AlienPowerBuilding.Build_AlienPowerBuilding_C";
1782
- readonly CLASS_NAME: "Build_AlienPowerBuilding_C";
1872
+ readonly POWER_GENERATORS: {
1873
+ readonly COAL: {
1874
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/GeneratorCoal/Build_GeneratorCoal.Build_GeneratorCoal_C";
1875
+ readonly CLASS_NAME: "Build_GeneratorCoal_C";
1876
+ };
1877
+ readonly FUEL: {
1878
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/GeneratorFuel/Build_GeneratorFuel.Build_GeneratorFuel_C";
1879
+ readonly CLASS_NAME: "Build_GeneratorFuel_C";
1880
+ };
1881
+ readonly BIOMASS_AUTOMATED: {
1882
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/GeneratorBiomass/Build_GeneratorBiomass_Automated.Build_GeneratorBiomass_Automated_C";
1883
+ readonly CLASS_NAME: "Build_GeneratorBiomass_Automated_C";
1884
+ };
1885
+ readonly BIOMASS_INTEGRATED: {
1886
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/GeneratorBiomass/Build_GeneratorIntegratedBiomass.Build_GeneratorIntegratedBiomass_C";
1887
+ readonly CLASS_NAME: "Build_GeneratorIntegratedBiomass_C";
1888
+ };
1889
+ readonly POWER_STORAGE: {
1890
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/PowerStorage/Build_PowerStorageMk1.Build_PowerStorageMk1_C";
1891
+ readonly CLASS_NAME: "Build_PowerStorageMk1_C";
1892
+ };
1893
+ readonly NUCLEAR: {
1894
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/GeneratorNuclear/Build_GeneratorNuclear.Build_GeneratorNuclear_C";
1895
+ readonly CLASS_NAME: "Build_GeneratorNuclear_C";
1896
+ };
1897
+ readonly ALIEN_POWER_BUILDING: {
1898
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/AlienPower/Build_AlienPowerBuilding.Build_AlienPowerBuilding_C";
1899
+ readonly CLASS_NAME: "Build_AlienPowerBuilding_C";
1900
+ };
1783
1901
  };
1784
1902
  readonly STORAGE: {
1785
1903
  readonly CONTAINER_MK_1: {
@@ -1831,6 +1949,14 @@ export declare const EDIT: {
1831
1949
  readonly CLASS_NAME: "BUILD_Potty_mk1_C";
1832
1950
  };
1833
1951
  readonly SIGN: {
1952
+ readonly LARGE: {
1953
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Large.Build_StandaloneWidgetSign_Large_C";
1954
+ readonly CLASS_NAME: "Build_StandaloneWidgetSign_Large_C";
1955
+ };
1956
+ readonly HUGE: {
1957
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Huge.Build_StandaloneWidgetSign_Huge_C";
1958
+ readonly CLASS_NAME: "Build_StandaloneWidgetSign_Huge_C";
1959
+ };
1834
1960
  readonly SMALL: {
1835
1961
  readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Small.Build_StandaloneWidgetSign_Small_C";
1836
1962
  readonly CLASS_NAME: "Build_StandaloneWidgetSign_Small_C";
@@ -1843,6 +1969,26 @@ export declare const EDIT: {
1843
1969
  readonly RECIPE: "/Game/FactoryGame/Recipes/Buildings/Recipe_StandaloneWidgetSign_SmallWide.Recipe_StandaloneWidgetSign_SmallWide_C";
1844
1970
  readonly PREFAB_LAYOUT: "/Game/FactoryGame/Interface/UI/InGame/Signs/SignLayouts/BPW_Sign4x1_1.BPW_Sign4x1_1_C";
1845
1971
  };
1972
+ readonly SMALL_VERY_WIDE: {
1973
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_SmallVeryWide.Build_StandaloneWidgetSign_SmallVeryWide_C";
1974
+ readonly CLASS_NAME: "Build_StandaloneWidgetSign_SmallVeryWide_C";
1975
+ };
1976
+ readonly SQUARE_TINY: {
1977
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Square_Tiny.Build_StandaloneWidgetSign_Square_Tiny_C";
1978
+ readonly CLASS_NAME: "Build_StandaloneWidgetSign_Square_Tiny_C";
1979
+ };
1980
+ readonly SQUARE_SMALL: {
1981
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Square_Small.Build_StandaloneWidgetSign_Square_Small_C";
1982
+ readonly CLASS_NAME: "Build_StandaloneWidgetSign_Square_Small_C";
1983
+ };
1984
+ readonly SQUARE: {
1985
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Square.Build_StandaloneWidgetSign_Square_C";
1986
+ readonly CLASS_NAME: "Build_StandaloneWidgetSign_Square_C";
1987
+ };
1988
+ readonly MEDIUM: {
1989
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Medium.Build_StandaloneWidgetSign_Medium_C";
1990
+ readonly CLASS_NAME: "Build_StandaloneWidgetSign_Medium_C";
1991
+ };
1846
1992
  readonly PORTRAIT: {
1847
1993
  readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Portrait.Build_StandaloneWidgetSign_Portrait_C";
1848
1994
  readonly CLASS_NAME: "Build_StandaloneWidgetSign_Portrait_C";
@@ -1857,6 +2003,14 @@ export declare const EDIT: {
1857
2003
  readonly PLAYER_STATE: {
1858
2004
  readonly TYPE_PATH: "/Game/FactoryGame/Character/Player/BP_PlayerState.BP_PlayerState_C";
1859
2005
  };
2006
+ readonly PORTAL: {
2007
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/Portal/Build_Portal.Build_Portal_C";
2008
+ readonly CLASS_NAME: "Build_Portal_C";
2009
+ };
2010
+ readonly PORTAL_SATELLITE: {
2011
+ readonly TYPE_PATH: "/Game/FactoryGame/Buildable/Factory/Portal/Build_PortalSatellite.Build_PortalSatellite_C";
2012
+ readonly CLASS_NAME: "Build_PortalSatellite_C";
2013
+ };
1860
2014
  readonly CREATURE: {
1861
2015
  readonly ELITE_STINGER: {
1862
2016
  readonly TYPE_PATH: "/Game/FactoryGame/Character/Creature/Enemy/Stinger/BigStinger/Char_EliteStinger.Char_EliteStinger_C";