🌐 Enable Planet Mods Lite

by Kryzeth

A more streamlined, Lite version of the Enable All Planet Mods, removing several planet mods which either warped the early game too much, or simply did not add enough unique content for the mid to late game. A more playability-focused planet pack. 🌐

Mod packs
23 days ago
2.0
2.74K
Planets

b [BUG] SLP - Dyson Sphere Reworked Crash

a month ago
(updated a month ago)

I realize that it's not your mod, but the SLP - Dyson Sphere Reworked mod is causing a crash in multiplayer and single player (able to reproduce it consistently with our multiplayer save in single player) - https://mods.factorio.com/mod/slp-dyson-sphere-reworked/discussion/689561b87a08ab261eb526cb

Not entirely certain on the specifics, but the scenario is:
1. we had a platform with a [MK1 connector] on it get destroyed
2. platform is rebuilt. name doesn't seem to matter (same or different). having the mk1 connector in the blueprint or not doesn't seem to matter. even being a brand new platform with no other tiles (not from old blueprint) doesn't matter.
3. building a new MK1 connector (whether manually requested or auto-requested by build) causes it to crash. Deleting any existing connector on any other platform also causes it to crash (so can't rebuild / move any).

I am assuming the old connector didn't get cleaned up in mod's cache on platform destruction and so as soon as any of the mod code is run is just crashes on the entity lookup.

Only mods used are this mod pack (though a week or two out of date now i think).

a month ago
(updated a month ago)

Hmm, thanks for the report on both sides. I have some similar runtime code set up in my Reverse Factory mod, that has to check each machine on every surface, and has to add/remove when certain events are raised.

The only script event that they appear to be missing is "on_pre_surface_cleared" and "on_pre_surface_deleted", which may apply to this specific case, if the platform itself was removed/destroyed, and the reference to the original object not cleared.

Though they do already have "on_entity_died" and "script_raised_destroy", which should have removed the reference long before the platform was destroyed/removed. If that's not the problem, then I guess there must just be a bug somewhere in their UpdateAll script (the one that decides to add or remove references from the list, then runs the relevant code)

Apart from that, only other differences is that they use "on_robot_pre_mined" instead of "on_robot_mined_entity"; though I don't know what the actual difference between these events is. It probably doesn't matter, considering it should most likely be getting built by space platform, not by construction bot.

There's a command written here that you could probably use to get more info on the current list of references, but it will likely just confirm what you already know:

/c __slp-dyson-sphere-reworked__ game.player.print(serpent.dump(storage))
a month ago

Thanks for looking into the script events. Seems like it's definitely missing references, though I'm surprised there are so many. I would have expected one missing reference given the one item from that mod on the platform that got demolished but looks like there are a lot in the result. That MK1 connector did get moved / rebuilt on the platform many times as I was reorganizing things, perhaps every reference to it was kept along the way.

https://i.imgur.com/kkWHKXk.jpeg

Would you happen to know of any way to clear / delete / reset the invalid entity references? It would be great to not have to remove/re-add the mod and lose all of the launched satellites (at least I'm hoping that removing the mod and re-adding would solve the issue).

I imagine doing it via console would turn off achievements (as that command did in single player), in which case I imagine a mod could do that same action of looping over references and removing invalid ones, right?

23 days ago

Sorry, thought I responded to this last week, but no, there's no part of the runtime script that regenerates the entity list, and I wouldn't know of any other commands to be able to do that. Unfortunately, remove/save/re-add would be the only way

New response