When some other mod tries to read data.raw['storage-tank']['fluid-memory-unit'].pictures
of your storage tank it will get:
{
flow_sprite = {
filename = "__fluid-memory-storage__/graphics/entity/nothing.png",
priority = "extra-high",
size = 1
},
fluid_background = 0,
gas_flow = 0,
picture = {
filename = "__fluid-memory-storage__/graphics/entity/fluid-memory-unit.png",
hr_version = {
filename = "__fluid-memory-storage__/graphics/entity/hr-fluid-memory-unit.png",
priority = "high",
scale = 0.5,
shift = {
0.25,
-0.0625
},
size = {
256,
256
}
},
priority = "high",
shift = {
0.25,
-0.0625
},
size = {
128,
128
}
},
window_background = 0
}
See that only one of the sprites you set by using same table "nothing" gets proper sprite, while everything else gets literal 0. This obviously isn't a valid sprite.
I suspect Factorio serializer handles usage of this one table in multiple places by serializing it only once, but deserialization for other mods doesn't work properly...deserializing it as 0.
I suggest using table.deepcopy(nothing)
instead of just nothing
when you are creating storage tank prototype to work around this Factorio issue. I already tested this fix and it provided proper sprites to other mods.