Nullius


In this Factorio prequel, you're an android terraforming planets and seeding them with life. Replaces all recipes and technology. No life means no coal, oil, wood, biters, or free oxygen, requiring varied renewable energy sources. For reliability, you'll focus on abundant elements from the air, sea, or common minerals such as iron ore, bauxite, sandstone, and calcite. Advanced technology enables asteroid mining of rarer elements.

Overhaul
9 months ago
1.1
33.7K
Environment Mining Fluids Manufacturing Power

i Mod compatibility in data stage

1 year, 9 months ago
(updated 1 year, 9 months ago)

Apologies if this (or something similar) has been brought up. I took a quick look through the topic headers and didn't find anything.

I've had a compatibility bug report to my "Infinite Resources - Normal Yields" mod with this mod, that being that my mod is not affecting resources added by Nullius. A quick look suggests that this may be a conflict of mod load order in combination of when this mod adds its resources.

Unless there are specific reasons for doing things the way you have, may I make some suggestions?

  • Your new resources should probably be defined in data.lua (instead of data-updates.lua). This will allow mods that then iterate through all of the resources in data-updates.lua to be able to grab yours, too, without the need of pushing this off to data-final-fixes.lua (where some other changes may be necessitated at) or adding your mod as an optional dependency (to guarantee load order). This same concept applies to any newly added items, entities, etc as well.
  • Your changes to vanilla resources (or any other vanilla item you may modify and keep in a similar manner), while it's fine being done in data-updates.lua, should probably be done by modifying only those properties that you need to change for your mod instead of redefining the entire thing and then overwriting the original. This will allow other mods to make changes to properties that your mod doesn't touch or care about (like say the icon or sprite sheet) without risk of being overwritten. For example, the main thing I see you modifying on iron ore is the mining time. This could be accomplished with this one line of code:

    data.raw.resource["iron-ore"].minable.mining_time = 1.2

I just wanted to bring these to your attention. It would certainly help to increase compatibility between mods. :)

(Edited for formatting; I hate markdown :( )

1 year, 4 months ago

It's especially complicated because Nullius includes Angels which itself overrides the ores, but Nullius doesn't want Angels ores. This was also one of the first parts that I got working, before I understood Factorio modding very well, so it's a bit loosely implemented.

But I found an internal flag within angels that I can set to disable the override. That simplifies things. So, I should be able to declare the resources more normally in the first pass and then just disable the ones I don't want in the second pass. This should make things a little more normal to deal with for other mods.

I'm working on some changes related to this as part of compatibility with a different mod, which I hope to include in an update within the next few weeks.

New response