Gerstner Waves Material doesnt work

You need to create a CPP class, and set it up to be your ocean.
Within the class you run the same Gertner calculations as for the shader. (In cpp is a lot less code).
With the exact same parameters (use variables, set the variables on begin play to propagate to the material instance).
The purpose of the Gertner function on CPP will be to return the heigh at the X/Y location.

Then, assuming everything went ok and the function is blueprint callable, you can make an actor out of the props, pass the ocean as a variable, and query the height got the loc of the actor.
Then you simply replace the actor Z for a cheap hack. Or add forces for a more accurate result (paired with having the Simulate checkbox checked) to have the item move around dynamically.

The dynamic stuff is a bit harder, as you may need to create way more then 1 point to check if you should apply force up or down. The community ocean project is again a great starting spot (I don’t like the way the positioning was setup, so I ended up using sockets myself, but it’s essentially the same base idea, create test points on the fly).

As a general rule of thumb, small vessels do better with a Z replacement, but it really depends on what you need. If the intention is to have the tip raise and the bottom dip, simulation is the only way.