I figured out the solution!!!
Here’s how to make multiplayer rain! The solution was “Is Server”. With that conditional I can separate the server’s code from client’s code, and the server’s variables from the client’s variables. After this, it was quite simple.
Note: Before starting, make sure your clouds are replicated and spawned. They need to be on some type of loop such as a timer event or tick. Make sure you are moving your clouds prior to the “Is Server” conditional so that your clouds can update their positions regardless if its raining or not. You’ll also need some type of particle effect for rain. I’m using a listen-server set up.
In your loop create a sequence. For the first sequence create an event which runs on the server. The code after this should move your clouds to a spot above the character’s location. In the second sequence create an “Is Server” and connect that to a branch. When this is true, everything following will be run on the server. Create a bool which is randomly set to true or false to determine if its raining or not. Create a sequence allowing the bool to randomly be set to true or false. This simulates unpredictable weather. On the last sequence set up a branch determining if your bool is true (raining is true). If true, connect that to a Switch Has Authority. On the authority branch connect that to a multicast event and on the remote branch connect that to a server event. Finally, set up a multicast event and connect that to the code which spawns the rain. Presto! Rain spawns on the server and clients at the same time and quits at the same time.
I hope this helps someone! 