-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathentityProperties.js
343 lines (333 loc) · 29.3 KB
/
entityProperties.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
// This file is generated by get_items.py
const entityNameToProperties = {
// Group: Combat
// Subgroup: defensive-structure
"gate": {'genericTerms': ['combat', 'defensive-structure'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.58, 0.58]},
"land-mine": {'genericTerms': ['combat', 'defensive-structure'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
"radar": {'genericTerms': ['combat', 'defensive-structure'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"stone-wall": {'genericTerms': ['combat', 'defensive-structure'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.58, 0.58]},
// Subgroup: turret
"artillery-turret": {'genericTerms': ['combat', 'turret'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"flamethrower-turret": {'genericTerms': ['combat', 'turret'], 'size': [2, 3], 'selection_size': [2, 3.0], 'collision_size': [1.4, 2.4]},
"gun-turret": {'genericTerms': ['combat', 'turret'], 'size': [2, 2], 'selection_size': [2, 2], 'collision_size': [1.4, 1.4]},
"laser-turret": {'genericTerms': ['combat', 'turret'], 'size': [2, 2], 'selection_size': [2, 2], 'collision_size': [1.4, 1.4]},
"railgun-turret": {'genericTerms': ['combat', 'turret'], 'size': [3, 4], 'selection_size': [3.0, 5.0], 'collision_size': [2.82, 4.0]},
"rocket-turret": {'genericTerms': ['combat', 'turret'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"tesla-turret": {'genericTerms': ['combat', 'turret'], 'size': [4, 4], 'selection_size': [4, 4], 'collision_size': [3.4, 3.4]},
// Group: Logistics
// Subgroup: belt
"express-loader": {'genericTerms': ['logistics', 'belt'], 'size': [1, 2], 'selection_size': [1.0, 2], 'collision_size': [0.8, 1.8]},
"express-splitter": {'genericTerms': ['logistics', 'belt'], 'size': [2, 1], 'selection_size': [1.8, 1.0], 'collision_size': [1.8, 0.8]},
"express-transport-belt": {'genericTerms': ['logistics', 'belt'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
"express-underground-belt": {'genericTerms': ['logistics', 'belt'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
"fast-loader": {'genericTerms': ['logistics', 'belt'], 'size': [1, 2], 'selection_size': [1.0, 2], 'collision_size': [0.8, 1.8]},
"fast-splitter": {'genericTerms': ['logistics', 'belt'], 'size': [2, 1], 'selection_size': [1.8, 1.0], 'collision_size': [1.8, 0.8]},
"fast-transport-belt": {'genericTerms': ['logistics', 'belt'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
"fast-underground-belt": {'genericTerms': ['logistics', 'belt'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
"loader": {'genericTerms': ['logistics', 'belt'], 'size': [1, 2], 'selection_size': [1.0, 2], 'collision_size': [0.8, 1.8]},
"splitter": {'genericTerms': ['logistics', 'belt'], 'size': [2, 1], 'selection_size': [1.8, 1.0], 'collision_size': [1.8, 0.8]},
"transport-belt": {'genericTerms': ['logistics', 'belt'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
"turbo-loader": {'genericTerms': ['logistics', 'belt'], 'size': [1, 2], 'selection_size': [1.0, 2], 'collision_size': [0.8, 1.8]},
"turbo-splitter": {'genericTerms': ['logistics', 'belt'], 'size': [2, 1], 'selection_size': [1.8, 1.0], 'collision_size': [1.8, 0.8]},
"turbo-transport-belt": {'genericTerms': ['logistics', 'belt'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
"turbo-underground-belt": {'genericTerms': ['logistics', 'belt'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
"underground-belt": {'genericTerms': ['logistics', 'belt'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.8, 0.8]},
// Subgroup: circuit-network
"arithmetic-combinator": {'genericTerms': ['logistics', 'circuit-network'], 'size': [1, 2], 'selection_size': [1.0, 2], 'collision_size': [0.7, 1.3]},
"constant-combinator": {'genericTerms': ['logistics', 'circuit-network'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
"decider-combinator": {'genericTerms': ['logistics', 'circuit-network'], 'size': [1, 2], 'selection_size': [1.0, 2], 'collision_size': [0.7, 1.3]},
"display-panel": {'genericTerms': ['logistics', 'circuit-network'], 'size': [1, 1], 'selection_size': [1.0, 1.15], 'collision_size': [0.58, 0.58]},
"power-switch": {'genericTerms': ['logistics', 'circuit-network'], 'size': [2, 2], 'selection_size': [2, 2], 'collision_size': [1.4, 1.4]},
"programmable-speaker": {'genericTerms': ['logistics', 'circuit-network'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.6, 0.6]},
"selector-combinator": {'genericTerms': ['logistics', 'circuit-network'], 'size': [1, 2], 'selection_size': [1.0, 2], 'collision_size': [0.7, 1.3]},
"small-lamp": {'genericTerms': ['logistics', 'circuit-network'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.3, 0.3]},
// Subgroup: energy-pipe-distribution
"big-electric-pole": {'genericTerms': ['logistics', 'energy-pipe-distribution'], 'size': [2, 2], 'selection_size': [2, 2], 'collision_size': [1.3, 1.3]},
"medium-electric-pole": {'genericTerms': ['logistics', 'energy-pipe-distribution'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.3, 0.3]},
"pipe": {'genericTerms': ['logistics', 'energy-pipe-distribution'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.58, 0.58]},
"pipe-to-ground": {'genericTerms': ['logistics', 'energy-pipe-distribution'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.58, 0.49]},
"pump": {'genericTerms': ['logistics', 'energy-pipe-distribution'], 'size': [1, 2], 'selection_size': [1.0, 2], 'collision_size': [0.58, 1.8]},
"small-electric-pole": {'genericTerms': ['logistics', 'energy-pipe-distribution'], 'size': [1, 1], 'selection_size': [0.8, 0.8], 'collision_size': [0.3, 0.3]},
"substation": {'genericTerms': ['logistics', 'energy-pipe-distribution'], 'size': [2, 2], 'selection_size': [2, 2], 'collision_size': [1.4, 1.4]},
// Subgroup: inserter
"bulk-inserter": {'genericTerms': ['logistics', 'inserter'], 'size': [1, 1], 'selection_size': [0.8, 0.8], 'collision_size': [0.3, 0.3]},
"burner-inserter": {'genericTerms': ['logistics', 'inserter'], 'size': [1, 1], 'selection_size': [0.8, 0.8], 'collision_size': [0.3, 0.3]},
"fast-inserter": {'genericTerms': ['logistics', 'inserter'], 'size': [1, 1], 'selection_size': [0.8, 0.8], 'collision_size': [0.3, 0.3]},
"inserter": {'genericTerms': ['logistics', 'inserter'], 'size': [1, 1], 'selection_size': [0.8, 0.8], 'collision_size': [0.3, 0.3]},
"long-handed-inserter": {'genericTerms': ['logistics', 'inserter'], 'size': [1, 1], 'selection_size': [0.8, 0.8], 'collision_size': [0.3, 0.3]},
"stack-inserter": {'genericTerms': ['logistics', 'inserter'], 'size': [1, 1], 'selection_size': [0.8, 0.8], 'collision_size': [0.3, 0.3]},
// Subgroup: logistic-network
"active-provider-chest": {'genericTerms': ['logistics', 'logistic-network'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
"buffer-chest": {'genericTerms': ['logistics', 'logistic-network'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
"construction-robot": {'genericTerms': ['logistics', 'logistic-network'], 'size': [0, 0], 'selection_size': [1.0, 1.0], 'collision_size': [0, 0]},
"logistic-robot": {'genericTerms': ['logistics', 'logistic-network'], 'size': [0, 0], 'selection_size': [1.0, 1.0], 'collision_size': [0, 0]},
"passive-provider-chest": {'genericTerms': ['logistics', 'logistic-network'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
"requester-chest": {'genericTerms': ['logistics', 'logistic-network'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
"roboport": {'genericTerms': ['logistics', 'logistic-network'], 'size': [4, 4], 'selection_size': [4, 4], 'collision_size': [3.4, 3.4]},
"storage-chest": {'genericTerms': ['logistics', 'logistic-network'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
// Subgroup: storage
"iron-chest": {'genericTerms': ['logistics', 'storage'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
"steel-chest": {'genericTerms': ['logistics', 'storage'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
"storage-tank": {'genericTerms': ['logistics', 'storage'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.6, 2.6]},
"wooden-chest": {'genericTerms': ['logistics', 'storage'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.7, 0.7]},
// Subgroup: train-transport
"curved-rail-a": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1, 1], 'collision_size': [1, 1]},
"curved-rail-b": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1, 1], 'collision_size': [1, 1]},
"elevated-curved-rail-a": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1, 1], 'collision_size': [1, 1]},
"elevated-curved-rail-b": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1, 1], 'collision_size': [1, 1]},
"elevated-half-diagonal-rail": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1, 1], 'collision_size': [1, 1]},
"elevated-straight-rail": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1, 1], 'collision_size': [1, 1]},
"half-diagonal-rail": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1, 1], 'collision_size': [1, 1]},
"rail-chain-signal": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.4, 0.4]},
"rail-ramp": {'genericTerms': ['logistics', 'train-transport'], 'size': [4, 16], 'selection_size': [3.4, 1.6], 'collision_size': [3.6, 15.6]},
"rail-signal": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [0.9, 1.3], 'collision_size': [0.4, 0.4]},
"rail-support": {'genericTerms': ['logistics', 'train-transport'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.78, 2.78]},
"straight-rail": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1, 1], 'collision_size': [1, 1]},
"train-stop": {'genericTerms': ['logistics', 'train-transport'], 'size': [1, 1], 'selection_size': [1.8, 1.8], 'collision_size': [1.0, 1.0]},
// Group: Production
// Subgroup: agriculture
"agricultural-tower": {'genericTerms': ['production', 'agriculture'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"biochamber": {'genericTerms': ['production', 'agriculture'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"captive-biter-spawner": {'genericTerms': ['production', 'agriculture'], 'size': [5, 5], 'selection_size': [5.0, 5.0], 'collision_size': [4.4, 4.4]},
// Subgroup: energy
"accumulator": {'genericTerms': ['production', 'energy'], 'size': [2, 2], 'selection_size': [2, 2], 'collision_size': [1.8, 1.8]},
"boiler": {'genericTerms': ['production', 'energy'], 'size': [3, 2], 'selection_size': [3.0, 2], 'collision_size': [2.58, 1.58]},
"fusion-generator": {'genericTerms': ['production', 'energy'], 'size': [3, 5], 'selection_size': [3.0, 5.0], 'collision_size': [2.8, 4.8]},
"fusion-reactor": {'genericTerms': ['production', 'energy'], 'size': [6, 6], 'selection_size': [6, 6], 'collision_size': [5.8, 5.8]},
"heat-exchanger": {'genericTerms': ['production', 'energy'], 'size': [3, 2], 'selection_size': [3.0, 2], 'collision_size': [2.58, 1.58]},
"heat-pipe": {'genericTerms': ['production', 'energy'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.6, 0.6]},
"nuclear-reactor": {'genericTerms': ['production', 'energy'], 'size': [5, 5], 'selection_size': [5.0, 5.0], 'collision_size': [4.4, 4.4]},
"solar-panel": {'genericTerms': ['production', 'energy'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.8, 2.8]},
"steam-engine": {'genericTerms': ['production', 'energy'], 'size': [3, 5], 'selection_size': [3.0, 5.0], 'collision_size': [2.5, 4.7]},
"steam-turbine": {'genericTerms': ['production', 'energy'], 'size': [3, 5], 'selection_size': [3.0, 5.0], 'collision_size': [2.5, 4.7]},
// Subgroup: environmental-protection
"heating-tower": {'genericTerms': ['production', 'environmental-protection'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.5, 2.5]},
"lightning-collector": {'genericTerms': ['production', 'environmental-protection'], 'size': [2, 2], 'selection_size': [2, 2], 'collision_size': [1.4, 1.4]},
"lightning-rod": {'genericTerms': ['production', 'environmental-protection'], 'size': [1, 1], 'selection_size': [1.0, 1.0], 'collision_size': [0.3, 0.3]},
// Subgroup: extraction-machine
"big-mining-drill": {'genericTerms': ['production', 'extraction-machine'], 'size': [5, 5], 'selection_size': [5.0, 5.0], 'collision_size': [4.7, 4.7]},
"burner-mining-drill": {'genericTerms': ['production', 'extraction-machine'], 'size': [2, 2], 'selection_size': [2, 2], 'collision_size': [1.4, 1.4]},
"electric-mining-drill": {'genericTerms': ['production', 'extraction-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.7, 2.7]},
"offshore-pump": {'genericTerms': ['production', 'extraction-machine'], 'size': [2, 2], 'selection_size': [1.2, 1.98], 'collision_size': [1.2, 1.35]},
"pumpjack": {'genericTerms': ['production', 'extraction-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
// Subgroup: module
"beacon": {'genericTerms': ['production', 'module'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
// Subgroup: production-machine
"assembling-machine-1": {'genericTerms': ['production', 'production-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"assembling-machine-2": {'genericTerms': ['production', 'production-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"assembling-machine-3": {'genericTerms': ['production', 'production-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"biolab": {'genericTerms': ['production', 'production-machine'], 'size': [5, 5], 'selection_size': [5.0, 5.0], 'collision_size': [4.4, 4.4]},
"centrifuge": {'genericTerms': ['production', 'production-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"chemical-plant": {'genericTerms': ['production', 'production-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"cryogenic-plant": {'genericTerms': ['production', 'production-machine'], 'size': [5, 5], 'selection_size': [5.0, 5.0], 'collision_size': [4.8, 4.8]},
"electromagnetic-plant": {'genericTerms': ['production', 'production-machine'], 'size': [4, 4], 'selection_size': [4, 4], 'collision_size': [3.4, 3.4]},
"lab": {'genericTerms': ['production', 'production-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"oil-refinery": {'genericTerms': ['production', 'production-machine'], 'size': [5, 5], 'selection_size': [5.0, 5.0], 'collision_size': [4.8, 4.8]},
// Subgroup: smelting-machine
"electric-furnace": {'genericTerms': ['production', 'smelting-machine'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"foundry": {'genericTerms': ['production', 'smelting-machine'], 'size': [5, 5], 'selection_size': [5.0, 5.0], 'collision_size': [4.4, 4.4]},
"recycler": {'genericTerms': ['production', 'smelting-machine'], 'size': [2, 4], 'selection_size': [1.8, 3.7], 'collision_size': [1.4, 3.4]},
"steel-furnace": {'genericTerms': ['production', 'smelting-machine'], 'size': [2, 2], 'selection_size': [1.6, 2], 'collision_size': [1.4, 1.4]},
"stone-furnace": {'genericTerms': ['production', 'smelting-machine'], 'size': [2, 2], 'selection_size': [1.6, 2], 'collision_size': [1.4, 1.4]},
// Group: Space
// Subgroup: space-interactors
"cargo-landing-pad": {'genericTerms': ['space', 'space-interactors'], 'size': [8, 8], 'selection_size': [8, 8], 'collision_size': [7.8, 7.8]},
"rocket-silo": {'genericTerms': ['space', 'space-interactors'], 'size': [9, 9], 'selection_size': [9.0, 9.0], 'collision_size': [8.4, 8.4]},
// Subgroup: space-platform
"asteroid-collector": {'genericTerms': ['space', 'space-platform'], 'size': [3, 3], 'selection_size': [3.0, 3.0], 'collision_size': [2.4, 2.4]},
"cargo-bay": {'genericTerms': ['space', 'space-platform'], 'size': [4, 4], 'selection_size': [4, 4], 'collision_size': [3.8, 3.8]},
"crusher": {'genericTerms': ['space', 'space-platform'], 'size': [2, 3], 'selection_size': [2, 3.0], 'collision_size': [1.4, 2.4]},
"thruster": {'genericTerms': ['space', 'space-platform'], 'size': [4, 5], 'selection_size': [4, 8.0], 'collision_size': [3.4, 4.4]},
// Subgroup: space-related
"space-platform-hub": {'genericTerms': ['space', 'space-related'], 'size': [8, 8], 'selection_size': [8, 8], 'collision_size': [7.8, 7.8]},
}
const buildingGenericTerms = {
"agriculture": ["agricultural-tower", "biochamber", "captive-biter-spawner"],
"belts": ["express-loader", "express-splitter", "express-transport-belt", "express-underground-belt", "fast-loader", "fast-splitter", "fast-transport-belt", "fast-underground-belt", "loader", "splitter", "transport-belt", "turbo-loader", "turbo-splitter", "turbo-transport-belt", "turbo-underground-belt", "underground-belt"],
"circuit-network": ["arithmetic-combinator", "constant-combinator", "decider-combinator", "display-panel", "power-switch", "programmable-speaker", "selector-combinator", "small-lamp"],
"combat": ["artillery-turret", "flamethrower-turret", "gate", "gun-turret", "land-mine", "laser-turret", "radar", "railgun-turret", "rocket-turret", "stone-wall", "tesla-turret"],
"defensive-structure": ["gate", "land-mine", "radar", "stone-wall"],
"energy": ["accumulator", "boiler", "fusion-generator", "fusion-reactor", "heat-exchanger", "heat-pipe", "nuclear-reactor", "solar-panel", "steam-engine", "steam-turbine"],
"energy-pipe-distribution": ["big-electric-pole", "medium-electric-pole", "pipe", "pipe-to-ground", "pump", "small-electric-pole", "substation"],
"environmental-protection": ["heating-tower", "lightning-collector", "lightning-rod"],
"extraction-machine": ["big-mining-drill", "burner-mining-drill", "electric-mining-drill", "offshore-pump", "pumpjack"],
"inserters": ["bulk-inserter", "burner-inserter", "fast-inserter", "inserter", "long-handed-inserter", "stack-inserter"],
"labs": ["lab", "biolab"],
"logistic-network": ["active-provider-chest", "buffer-chest", "construction-robot", "logistic-robot", "passive-provider-chest", "requester-chest", "roboport", "storage-chest"],
"logistics": ["active-provider-chest", "arithmetic-combinator", "big-electric-pole", "buffer-chest", "bulk-inserter", "burner-inserter", "constant-combinator", "construction-robot", "curved-rail-a", "curved-rail-b", "decider-combinator", "display-panel", "elevated-curved-rail-a", "elevated-curved-rail-b", "elevated-half-diagonal-rail", "elevated-straight-rail", "express-loader", "express-splitter", "express-transport-belt", "express-underground-belt", "fast-inserter", "fast-loader", "fast-splitter", "fast-transport-belt", "fast-underground-belt", "half-diagonal-rail", "inserter", "iron-chest", "loader", "logistic-robot", "long-handed-inserter", "medium-electric-pole", "passive-provider-chest", "pipe", "pipe-to-ground", "power-switch", "programmable-speaker", "pump", "rail-chain-signal", "rail-ramp", "rail-signal", "rail-support", "requester-chest", "roboport", "selector-combinator", "small-electric-pole", "small-lamp", "splitter", "stack-inserter", "steel-chest", "storage-chest", "storage-tank", "straight-rail", "substation", "train-stop", "transport-belt", "turbo-loader", "turbo-splitter", "turbo-transport-belt", "turbo-underground-belt", "underground-belt", "wooden-chest"],
"module": ["beacon"],
"pipes": ["pipe", "pipe-to-ground"],
"power-distribution": ["big-electric-pole", "medium-electric-pole", "small-electric-pole", "substation", "power-switch"],
"power-generation": ["boiler", "steam-engine", "solar-panel", "nuclear-reactor", "fusion-generator", "fusion-reactor", "steam-turbine"],
"production": ["accumulator", "agricultural-tower", "assembling-machine-1", "assembling-machine-2", "assembling-machine-3", "beacon", "big-mining-drill", "biochamber", "biolab", "boiler", "burner-mining-drill", "captive-biter-spawner", "centrifuge", "chemical-plant", "cryogenic-plant", "electric-furnace", "electric-mining-drill", "electromagnetic-plant", "foundry", "fusion-generator", "fusion-reactor", "heat-exchanger", "heat-pipe", "heating-tower", "lab", "lightning-collector", "lightning-rod", "nuclear-reactor", "offshore-pump", "oil-refinery", "pumpjack", "recycler", "solar-panel", "steam-engine", "steam-turbine", "steel-furnace", "stone-furnace"],
"production-machine": ["assembling-machine-1", "assembling-machine-2", "assembling-machine-3", "biolab", "centrifuge", "chemical-plant", "cryogenic-plant", "electromagnetic-plant", "lab", "oil-refinery"],
"rails": ["curved-rail-a", "curved-rail-b", "elevated-curved-rail-a", "elevated-curved-rail-b", "elevated-half-diagonal-rail", "elevated-straight-rail", "half-diagonal-rail", "rail-chain-signal", "rail-ramp", "rail-signal", "rail-support", "straight-rail", "train-stop"],
"robotic-logistics": ["roboport", "active-provider-chest", "buffer-chest", "passive-provider-chest", "requester-chest", "storage-chest"],
"smelting-machine": ["electric-furnace", "foundry", "recycler", "steel-furnace", "stone-furnace"],
"space": ["asteroid-collector", "cargo-bay", "cargo-landing-pad", "crusher", "rocket-silo", "space-platform-hub", "thruster"],
"space-interactors": ["cargo-landing-pad", "rocket-silo"],
"space-platform": ["asteroid-collector", "cargo-bay", "crusher", "thruster"],
"space-related": ["space-platform-hub"],
"storage": ["iron-chest", "steel-chest", "storage-tank", "wooden-chest"],
"turret": ["artillery-turret", "flamethrower-turret", "gun-turret", "laser-turret", "railgun-turret", "rocket-turret", "tesla-turret"],
}
const itemToPipeTargetPositions = {
"assembling-machine-2": [[[0, -1], [0, -2]], [[0, 1], [0, 2]]],
"assembling-machine-3": [[[0, -1], [0, -2]], [[0, 1], [0, 2]]],
"big-mining-drill": [[[-2, -1], [-3, -1]], [[2, -1], [3, -1]], [[1, 2], [1, 3]], [[-1, 2], [-1, 3]]],
"biochamber": [[[-1, -1], [-1, -2]], [[1, -1], [1, -2]], [[1, 1], [1, 2]], [[-1, 1], [-1, 2]]],
"boiler": [[[-1, 0.5], [-2, 0.5]], [[1, 0.5], [2, 0.5]], [[0, -0.5], [0, -1.5]]],
"chemical-plant": [[[-1, -1], [-1, -2]], [[1, -1], [1, -2]], [[-1, 1], [-1, 2]], [[1, 1], [1, 2]]],
"cryogenic-plant": [[[-2, 2], [-2, 3]], [[0, 2], [0, 3]], [[2, 2], [2, 3]], [[-2, -2], [-2, -3]], [[0, -2], [0, -3]], [[2, -2], [2, -3]]],
"electric-mining-drill": [[[-1, 0], [-2, 0]], [[1, 0], [2, 0]], [[0, 1], [0, 2]]],
"electromagnetic-plant": [[[-1.5, 0.5], [-2.5, 0.5]], [[1.5, -0.5], [2.5, -0.5]], [[0.5, 1.5], [0.5, 2.5]], [[-0.5, -1.5], [-0.5, -2.5]]],
"flamethrower-turret": [[[-0.5, 1], [-1.5, 1]], [[0.5, 1], [1.5, 1]]],
"foundry": [[[-1, 2], [-1, 3]], [[1, 2], [1, 3]], [[-1, -2], [-1, -3]], [[1, -2], [1, -3]]],
"fusion-generator": [[[-1, 2], [-1, 3]], [[1, 2], [1, 3]], [[0, -2], [0, -3]], [[-1, 0], [-2, 0]], [[1, 0], [2, 0]], [[-1, -1], [-2, -1]], [[1, -1], [2, -1]], [[-1, -2], [-1, -3]], [[1, -2], [1, -3]]],
"fusion-reactor": [[[-2.5, -1.5], [-3.5, -1.5]], [[-2.5, 1.5], [-3.5, 1.5]], [[2.5, -1.5], [3.5, -1.5]], [[2.5, 1.5], [3.5, 1.5]], [[-1.5, 2.5], [-1.5, 3.5]], [[1.5, 2.5], [1.5, 3.5]], [[-1.5, -2.5], [-1.5, -3.5]], [[1.5, -2.5], [1.5, -3.5]]],
"heat-exchanger": [[[-1, 0.5], [-2, 0.5]], [[1, 0.5], [2, 0.5]], [[0, -0.5], [0, -1.5]]],
"offshore-pump": [[[0, 0], [0, 1]]],
"oil-refinery": [[[-1, 2], [-1, 3]], [[1, 2], [1, 3]], [[-2, -2], [-2, -3]], [[0, -2], [0, -3]], [[2, -2], [2, -3]]],
"pipe": [[[0, 0], [0, -1]], [[0, 0], [1, 0]], [[0, 0], [0, 1]], [[0, 0], [-1, 0]]],
"pipe-to-ground": [[[0, 0], [0, -1]], [[0, 0], [0, 1]]],
"pump": [[[0, -0.5], [0, -1.5]], [[0, 0.5], [0, 1.5]]],
"pumpjack": [[[1, -1], [1, -2]]],
"steam-engine": [[[0, 2], [0, 3]], [[0, -2], [0, -3]]],
"steam-turbine": [[[0, 2], [0, 3]], [[0, -2], [0, -3]]],
"storage-tank": [[[-1, -1], [-1, -2]], [[1, 1], [2, 1]], [[1, 1], [1, 2]], [[-1, -1], [-2, -1]]],
"thruster": [[[-1.5, -2], [-2.5, -2]], [[1.5, 0], [2.5, 0]], [[1.5, -2], [2.5, -2]], [[-1.5, 0], [-2.5, 0]]],
}
const itemToHeatTargetPositions = {
"heat-exchanger": [[[0, 0.5], [0, 1.5]]],
"heat-pipe": [[[0, 0], [0, -1]], [[0, 0], [1, 0]], [[0, 0], [0, 1]], [[0, 0], [-1, 0]]],
"heating-tower": [[[0, -1], [0, -2]], [[1, 0], [2, 0]], [[0, 1], [0, 2]], [[-1, 0], [-2, 0]]],
"nuclear-reactor": [[[-2, -2], [-2, -3]], [[0, -2], [0, -3]], [[2, -2], [2, -3]], [[2, -2], [3, -2]], [[2, 0], [3, 0]], [[2, 2], [3, 2]], [[2, 2], [2, 3]], [[0, 2], [0, 3]], [[-2, 2], [-2, 3]], [[-2, 2], [-3, 2]], [[-2, 0], [-3, 0]], [[-2, -2], [-3, -2]]],
}
const fluidRecipes = {
"acid-neutralisation": true,
"advanced-oil-processing": true,
"advanced-thruster-fuel": true,
"advanced-thruster-oxidizer": true,
"ammonia-rocket-fuel": true,
"ammoniacal-solution-separation": true,
"basic-oil-processing": true,
"battery": true,
"big-mining-drill": true,
"biolubricant": true,
"captive-biter-spawner": true,
"carbon": true,
"casting-copper": true,
"casting-copper-cable": true,
"casting-iron": true,
"casting-iron-gear-wheel": true,
"casting-iron-stick": true,
"casting-low-density-structure": true,
"casting-pipe": true,
"casting-pipe-to-ground": true,
"casting-steel": true,
"coal-liquefaction": true,
"coal-synthesis": true,
"concrete": true,
"concrete-from-molten-iron": true,
"crude-oil-barrel": true,
"cryogenic-science-pack": true,
"electric-engine-unit": true,
"electrolyte": true,
"electromagnetic-science-pack": true,
"empty-crude-oil-barrel": true,
"empty-fluoroketone-cold-barrel": true,
"empty-fluoroketone-hot-barrel": true,
"empty-heavy-oil-barrel": true,
"empty-light-oil-barrel": true,
"empty-lubricant-barrel": true,
"empty-petroleum-gas-barrel": true,
"empty-sulfuric-acid-barrel": true,
"empty-water-barrel": true,
"explosives": true,
"express-splitter": true,
"express-transport-belt": true,
"express-underground-belt": true,
"fish-breeding": true,
"flamethrower-ammo": true,
"fluoroketone": true,
"fluoroketone-cold-barrel": true,
"fluoroketone-cooling": true,
"fluoroketone-hot-barrel": true,
"foundation": true,
"foundry": true,
"fusion-power-cell": true,
"heavy-oil-barrel": true,
"heavy-oil-cracking": true,
"holmium-plate": true,
"holmium-solution": true,
"ice-melting": true,
"ice-platform": true,
"light-oil-barrel": true,
"light-oil-cracking": true,
"lightning-collector": true,
"lithium": true,
"lubricant": true,
"lubricant-barrel": true,
"metallurgic-science-pack": true,
"molten-copper": true,
"molten-copper-from-lava": true,
"molten-iron": true,
"molten-iron-from-lava": true,
"overgrowth-jellynut-soil": true,
"overgrowth-yumako-soil": true,
"pentapod-egg": true,
"petroleum-gas-barrel": true,
"plastic-bar": true,
"processing-unit": true,
"quantum-processor": true,
"railgun": true,
"railgun-turret": true,
"refined-concrete": true,
"rocket-fuel": true,
"rocket-fuel-from-jelly": true,
"simple-coal-liquefaction": true,
"solid-fuel-from-ammonia": true,
"solid-fuel-from-heavy-oil": true,
"solid-fuel-from-light-oil": true,
"solid-fuel-from-petroleum-gas": true,
"steam-condensation": true,
"sulfur": true,
"sulfuric-acid": true,
"sulfuric-acid-barrel": true,
"supercapacitor": true,
"superconductor": true,
"tesla-ammo": true,
"tesla-turret": true,
"teslagun": true,
"thruster-fuel": true,
"thruster-oxidizer": true,
"tungsten-carbide": true,
"tungsten-plate": true,
"turbo-splitter": true,
"turbo-transport-belt": true,
"turbo-underground-belt": true,
"water-barrel": true,
}
const artificialTilesSortedByLayer = [
"landfill",
"foundation",
"stone-path",
"concrete",
"frozen-concrete",
"hazard-concrete-left",
"hazard-concrete-right",
"space-platform-foundation",
"frozen-hazard-concrete-left",
"frozen-hazard-concrete-right",
"refined-concrete",
"frozen-refined-concrete",
"refined-hazard-concrete-left",
"refined-hazard-concrete-right",
"frozen-refined-hazard-concrete-left",
"frozen-refined-hazard-concrete-right",
"ice-platform",
"artificial-yumako-soil",
"artificial-jellynut-soil",
"overgrowth-yumako-soil",
"overgrowth-jellynut-soil",
]