Thansk so much for the video, that was a deep dive! For my issue, I resolved it like this:
def message(id, data): if(id==c4d.MSG_DESCRIPTION_POSTSETPARAMETER): userDataID = eval(str(data['descid']))[1][0] if userDataID in [2, 4, 5]: c4d.CallButton(op, c4d.OPYTHON_MAKEDIRTY)so, if any user data touched (including fieldlist), the generator updates itself.