Deadlock's Stacking for Pyanodon Continued


Adds Deadlock stacking support for intermediate products from Pyanodon's mod suite. Community-maintained continuation for Factorio 2.1.

Content
5 days ago
2.1
6
Logistics

g Cannot install

5 days ago
5 days ago
(updated 5 days ago)

3.1.2 is the current max version
EDIT: Nevermind. I see your note on the main page. you can ignore this

4 days ago
(updated 4 days ago)

There is a temporary workaround, but I do not recommend it unless you are comfortable editing mod ZIP files. Please make a backup of your save first.

You need to modify both mod ZIPs.

1. Patch pycoalprocessing 3.1.2

Open:

pycoalprocessing_3.1.2.zip

Inside the ZIP, find:

pycoalprocessing_3.1.2/migrations/beacon-interference.lua

Replace the entire contents of that file with:

storage.beacon_interference_alerts = storage.beacon_interference_alerts or {}
storage.alerts = storage.alerts or {}
storage.alert_count = storage.alert_count or 0

if not storage.beacon_interference_icons then return end

for _, surface in pairs(game.surfaces) do
    for _, entity in pairs(surface.find_entities_filtered {
        type = {
            "assembling-machine",
            "furnace",
            "rocket-silo",
            "mining-drill"
        }
    }) do
        local id = storage.beacon_interference_icons[entity.unit_number]

        if id then
            local rendering_object = rendering.get_object_by_id(id)
            rendering_object.destroy()

            storage.beacon_interference_alerts[entity.unit_number] = py.generate_alert(
                entity,
                {type = "virtual", name = "beacon-interference"},
                "beacon-interference",
                {"entity-status.beacon-interference"},
                true
            )
        end
    end
end

storage.beacon_interference_icons = nil

The important part is:

if not storage.beacon_interference_icons then return end

This prevents the migration from crashing when that old save data does not exist.

2. Change the dependency in Stacking for Pyanodon Continued

Open:

DeadlocksStackingForPyanadon-continued_0.7.0.zip

Inside the ZIP, find:

DeadlocksStackingForPyanadon-continued_0.7.0/info.json

Replace the entire contents of info.json with:

{
    "name": "DeadlocksStackingForPyanadon-continued",
    "version": "0.7.0",
    "title": "Deadlock's Stacking for Pyanodon Continued",
    "author": "Chrisdec, continued by goakiller900",
    "collaborator": "Billbo99, The_Ghost",
    "contact": "",
    "homepage": "https://github.com/goakiller900/DeadlocksStackingForPyanadon-continued",
    "dependencies": [
        "base >= 2.1.0",
        "pycoalprocessing >= 3.1.2",
        "deadlock-beltboxes-loaders-continued >= 7.0.3",
        "(?)DeadlockCrating >= 1.6.0",
        "(?)pyindustry >= 1.5.4",
        "(?)pyhightech >= 1.7.8",
        "(?)pyrawores >= 2.3.1",
        "(?)pyfusionenergy >= 1.6.9",
        "(?)pypetroleumhandling >= 2.0.8",
        "(?)pyalienlife >= 1.13.2",
        "(?)pyalternativeenergy >= 1.0.4"
    ],
    "description": "Adds Deadlock stacking support for intermediate products from Pyanodon's mod suite. Community-maintained continuation for Factorio 2.1.",
    "factorio_version": "2.1"
}

Make sure the files are saved back into the ZIP in their original locations. Do not accidentally create an additional folder level inside either archive.

After making both changes, Factorio should allow the mods to load together.

This is a dirty temporary workaround. Mod updates may overwrite the changes, and you should return to the normal unmodified versions once pycoalprocessing 3.1.3 is released.

I would have included this workaround directly in Deadlock's Stacking for Pyanodon Continued, but Factorio keeps each mod’s saved data separate. My mod cannot modify or repair pycoalprocessing’s private storage before its own migration runs, so the fix has to be made inside pycoalprocessing itself.

4 days ago

For clarity, the workaround above is not a proper fix for pycoalprocessing. It is only a temporary mitigation that allows affected saves to load.

The change in beacon-interference.lua checks whether the old beacon_interference_icons save data exists:

if not storage.beacon_interference_icons then return end

When that table is missing, the migration currently crashes because it tries to read data that does not exist.

The added check tells the migration to stop instead of crashing when there is no table available to process.

The second change lowers this mod’s dependency requirement from pycoalprocessing 3.1.3 to 3.1.2, so Factorio allows both mods to be enabled together.

Both changes are needed for this workaround:

  • The dependency change allows installation.
  • The Lua change prevents the migration crash.

This is not intended to replace the proper solution from the PyCoal developers. Their final implementation may work completely differently. Remove these manual changes and return to the official files once a compatible pycoalprocessing release becomes available.

New response