Thanks for all the answers so far , ofc the answers of "do it simple" are not quite reason for me to jump of joy, but I appreciate them nonetheless.
After taking a good look at the buffsystems let me explain my current thought and problems:
I am splitting modifiiers of variables into +x1,+x2%,*x3 and provide an double[3] modifiers for x instead of x itself to access from outside the method and I have a variable that points to an outermost wrapper(Object starter) so I can modify and overwrite the method. Now I seperate simple variable modifications and keep them in a list to reduce the amount of wrappers needed, each of these simple modifications will have an apply and remove method so I do not add up modifiiers every time I call the method.
The big problem for me is how to handle the removal, will each wrapper or simple modifier need a remove boolean to check each time its executed, do I trust for example a buildings demolish instruction and instead of a list I use a map to easier find the modifiers to be used. Do I keep a seperate list for timed modifiers so I can check each time if they expire?