Pi-C, I have news. Unfortunately, I cannot send private messages on the forums, as it states I've not participated in enough discussions/am new.
Oh, that's kind of a spam protection. You must have made at least one forum post before you can PM somebody. But I thought one only couldn't send PMs first, forgot about that you also can't answer if somebody has sent you a message. :-)
I did experiment with my mod active alongside Bio Industries, and I don't seem to have the same problem with recipes being removed from the Bio Farm technology. I went into a sandbox world to research the tech manually and verify that everything was there, and indeed, the technology has the bio nursery, bio farm, terraformer, etc. I tested with only Bio Industries and Early Bio Boiler installed.
The effect depends on your mod setting:
if settings.startup["earlybioboilers-require-research"].value == true then
data.raw["technology"]["bi-tech-bio-farming"].effects = {{type = "unlock-recipe", recipe = "bi-bio-boiler"}}
data:extend({
…
})
end
I will still add your proposed fixes to the mod as soon as I can, but I wanted to ask about how often/how frequently this issue occurred when tested?
If you give away the Bio boiler for free right from the start (i.e. "earlybioboilers-require-research" is not checked), the line that overwrites the techs won't be executed and all of BI's recipes are available. If the setting is on, only the Bio boiler will be unlocked by researching bio farming.
Sorry, I'm still very much a novice modder, and apologies for failing to notice the issue.
Such things may happen to more experienced modders as well! It's likely to happen if you play around with rearranging code and doing things in different way -- it's quite easy to overlook that a variable you already had defined in its original place will be undefined if you move the block up a bit… Incidentally, I've noticed just yesterday that I've locked most of the optional disassembly recipes myself by mistake when I tried to be clever and unlock them in a loop (fixed for next release). But that concerned only some recipes that are optional anyway, and didn't remove core recipes. Most important: Nobody has complained about it yet, so I doubt anybody noticed the issue. :-)
Anyway, testing everything in every possible combination would be ideal. (That's difficult with BI because it defines so may things of its own, and not everything is supposed to be there in every situation: Mod settings play a role, some recipes will be toggled or changed if certain other mods -- Krastorio, Bob's, Angel's, Pyanodon's and several more -- are active or if certain recipes already exist etc. Way too much to test for just one person!)
Anyway, while working on your mod, it's a good idea to use log() a lot, and to check factorio-current.log for the output. (Don't forget to comment out these commands before uploading, or people will complain about log spam!) You can easily get at the content of a table like this:
log("Technology effects: " .. serpent.block(data.raw["technology"]["bi-tech-bio-farming"].effects))
You may get an insane amount of output, but usually it's a good idea to look at it -- if only to get a feeling for Factorio's data structures. Also, I've found that being strict about indenting code (e.g. "if" and the matching "end" would always be indented by the same amount) makes it much easier to spot mistakes. Just some hints … :-)