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.