production lines: resolve conveyor -> island placement mapping

The recipe conveyors (game_conveyor_<product>_epb) are placed as named child GameObjects
in the island_* prefabs (islands_assets_all.bundle), NOT via energy_grid (power grid only)
or any config asset. New extractor bundle/extract_conveyor_placements.py walks every island
prefab and cross-references production_lines.json -> extracted/conveyor_placements.json.

Result: Factorio (energyRods, 80mmT3Cannon, contactGrenades, armorPiercingRocket),
Kaiserplatz (energyRods, 40mmT3Cannon), Demo_Wunderinsel (70mmT3Cannon), DeusExMashineSmall
(computingModules, coralDust), testIsland(+Tramplers) (the 4 base test conveyors).

Corrects the earlier "Armory = Sprengstofffabrik hosts explosives" guess: the
LittleFactory/LittleFactoryArmory islands place NO recipe conveyors; grenades/rockets are
on Factorio. Unplaced blueprints: explosiveSmall, mechanicalParts (+ the plural
armorPiercingRockets, whose singular-named instance is on Factorio).
This commit is contained in:
DownloadPizza
2026-06-11 19:38:13 +02:00
parent e4899b43e7
commit 8abe4bcecf
3 changed files with 628 additions and 13 deletions

View File

@@ -0,0 +1,491 @@
{
"_source": "islands_assets_all.bundle island_* prefab hierarchy (game_conveyor_<product>_epb child GameObjects); recipes from production_lines.json",
"_unplaced_recipes": [
"game_conveyor_armorPiercingRockets",
"game_conveyor_explosiveSmall",
"game_conveyor_mechanicalParts"
],
"islands": {
"island_Demo_Wunderinsel": {
"recipes": [
{
"conveyor": "game_conveyor_70mmT3Cannon",
"pos": [
-3.27,
-0.01,
-7.78
],
"recipe": {
"inputs": [
{
"itemId": "item_alloySteel",
"amount": 40
},
{
"itemId": "item_resourceMetal_t2",
"amount": 300
}
],
"outputs": [
{
"itemId": "game_packedShotgunTurretT3Container",
"amount": 1
}
],
"craftTimeSeconds": 55.0
}
}
],
"product_conveyors_without_matching_recipe": [],
"infrastructure": [
"game_conveyorInSwitch_epb",
"game_conveyorOutLargeItem_epb",
"game_conveyorSlot"
]
},
"island_DeusExMashineSmall": {
"recipes": [
{
"conveyor": "game_conveyor_computingModules",
"pos": [
19.04,
-0.34,
-11.85
],
"recipe": {
"inputs": [
{
"itemId": "item_blackBox",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_resourceMetal_t3",
"amount": 10
}
],
"craftTimeSeconds": 7.0
}
},
{
"conveyor": "game_conveyor_coralDust",
"pos": [
0.9,
0.0,
3.2
],
"recipe": {
"inputs": [
{
"itemId": "item_resourceCoralPiece",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_resourceCoralDust",
"amount": 10
},
{
"itemId": "item_resourceMetal_t1",
"amount": 2
}
],
"craftTimeSeconds": 5.0
}
}
],
"product_conveyors_without_matching_recipe": [],
"infrastructure": [
"game_conveyorInSwitch_epb",
"game_conveyorOutInventory_epb",
"game_conveyorSlotInput_epb"
]
},
"island_Factorio": {
"recipes": [
{
"conveyor": "game_conveyor_energyRods",
"pos": [
-10.25,
-3.44,
-0.51
],
"recipe": {
"inputs": [
{
"itemId": "item_crystalHandles",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_energyBar",
"amount": 10
}
],
"craftTimeSeconds": 7.0
}
},
{
"conveyor": "game_conveyor_80mmT3Cannon",
"pos": [
3.49,
-3.45,
-7.43
],
"recipe": {
"inputs": [
{
"itemId": "item_alloySteel",
"amount": 40
},
{
"itemId": "item_resourceMetal_t2",
"amount": 300
}
],
"outputs": [
{
"itemId": "game_packedTurretT3Container",
"amount": 1
}
],
"craftTimeSeconds": 55.0
}
},
{
"conveyor": "game_conveyor_contactGrenades",
"pos": [
1.25,
3.52,
1.93
],
"recipe": {
"inputs": [
{
"itemId": "item_resourceFabric",
"amount": 10
},
{
"itemId": "item_resourceGunpowder",
"amount": 10
}
],
"outputs": [
{
"itemId": "item_grenadeContact",
"amount": 5
}
],
"craftTimeSeconds": 5.0
}
}
],
"product_conveyors_without_matching_recipe": [
{
"conveyor": "game_conveyor_armorPiercingRocket",
"pos": [
-8.05,
3.52,
-8.79
]
}
],
"infrastructure": [
"game_conveyorInSwitch_epb",
"game_conveyorOutInventory_epb",
"game_conveyorOutLargeItem_epb",
"game_conveyorSlot",
"game_conveyorSlotInput_epb"
]
},
"island_Kaiserplatz": {
"recipes": [
{
"conveyor": "game_conveyor_energyRods",
"pos": [
3.06,
0.05,
1.41
],
"recipe": {
"inputs": [
{
"itemId": "item_crystalHandles",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_energyBar",
"amount": 10
}
],
"craftTimeSeconds": 7.0
}
},
{
"conveyor": "game_conveyor_40mmT3Cannon",
"pos": [
1.13,
0.05,
-6.21
],
"recipe": {
"inputs": [
{
"itemId": "item_alloySteel",
"amount": 40
},
{
"itemId": "item_resourceMetal_t2",
"amount": 300
}
],
"outputs": [
{
"itemId": "game_packedAutoTurretT3Container",
"amount": 1
}
],
"craftTimeSeconds": 55.0
}
}
],
"product_conveyors_without_matching_recipe": [],
"infrastructure": [
"game_conveyorInSwitch_epb",
"game_conveyorOutInventory_epb",
"game_conveyorOutLargeItem_epb",
"game_conveyorSlot",
"game_conveyorSlotInput_epb"
]
},
"island_testIsland": {
"recipes": [
{
"conveyor": "game_conveyor_baseInventoryToLarge",
"pos": [
0.0,
0.1,
0.0
],
"recipe": {
"inputs": [
{
"itemId": "item_resourceMetal_t1",
"amount": 1
},
{
"itemId": "item_c4Dynamite",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_explosiveBig",
"amount": 1
}
],
"craftTimeSeconds": 15.0
}
},
{
"conveyor": "game_conveyor_baseInventoryToInventory",
"pos": [
-0.0,
0.0,
-6.0
],
"recipe": {
"inputs": [
{
"itemId": "item_resourceMetal_t1",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_c4Dynamite",
"amount": 1
},
{
"itemId": "item_resourceMetal_t1",
"amount": 2
}
],
"craftTimeSeconds": 5.0
}
},
{
"conveyor": "game_conveyor_baseLargeToLarge",
"pos": [
7.0,
0.0,
0.0
],
"recipe": {
"inputs": [
{
"itemId": "item_wineBox",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_explosiveBig",
"amount": 1
}
],
"craftTimeSeconds": 15.0
}
},
{
"conveyor": "game_conveyor_baseLargeToInventory",
"pos": [
5.0,
7.5,
-0.0
],
"recipe": {
"inputs": [
{
"itemId": "item_wineBox",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_coinCrown",
"amount": 1000
}
],
"craftTimeSeconds": 15.0
}
}
],
"product_conveyors_without_matching_recipe": [],
"infrastructure": [
"game_conveyorInSwitch_epb",
"game_conveyorOutInventory_epb",
"game_conveyorOutLargeItem_epb",
"game_conveyorSlot",
"game_conveyorSlotInput_epb"
]
},
"island_testIslandTramplers": {
"recipes": [
{
"conveyor": "game_conveyor_baseInventoryToLarge",
"pos": [
0.0,
0.1,
0.0
],
"recipe": {
"inputs": [
{
"itemId": "item_resourceMetal_t1",
"amount": 1
},
{
"itemId": "item_c4Dynamite",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_explosiveBig",
"amount": 1
}
],
"craftTimeSeconds": 15.0
}
},
{
"conveyor": "game_conveyor_baseInventoryToInventory",
"pos": [
-0.0,
0.0,
-6.0
],
"recipe": {
"inputs": [
{
"itemId": "item_resourceMetal_t1",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_c4Dynamite",
"amount": 1
},
{
"itemId": "item_resourceMetal_t1",
"amount": 2
}
],
"craftTimeSeconds": 5.0
}
},
{
"conveyor": "game_conveyor_baseLargeToLarge",
"pos": [
7.0,
0.0,
0.0
],
"recipe": {
"inputs": [
{
"itemId": "item_wineBox",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_explosiveBig",
"amount": 1
}
],
"craftTimeSeconds": 15.0
}
},
{
"conveyor": "game_conveyor_baseLargeToInventory",
"pos": [
5.0,
7.5,
-0.0
],
"recipe": {
"inputs": [
{
"itemId": "item_wineBox",
"amount": 1
}
],
"outputs": [
{
"itemId": "item_coinCrown",
"amount": 1000
}
],
"craftTimeSeconds": 15.0
}
}
],
"product_conveyors_without_matching_recipe": [],
"infrastructure": [
"game_conveyorInSwitch_epb",
"game_conveyorOutInventory_epb",
"game_conveyorOutLargeItem_epb",
"game_conveyorSlot",
"game_conveyorSlotInput_epb"
]
}
}
}