Changing Mesh Color (Material) on Network

Hi there,

I’m currently trying to implement a small class system, which basically just defines the default startup items for a specific character.
I’ve created an Enumeration to define the different classes (atm Doc & Technician) and put a Key-Input into my Pawn’s class waiting for the player to press “1” or “2”. Upon that event a Custom Event is called, which then executes a “Change Class” function. This sets a new material depending on the enumeration value, which was given to it. The player initially starts with a default class which just uses the standard blue material.

At the moment my Custom Event is set to be a “Multicast” event, but I’m encountering some issues with it.
When changing classes on my server-side window the Mesh updates its Material on both server- and client-window (orange mesh), so basically the client sees, that the server has changed its material.
If I want to change the class on my client-window however the material is only updated on the client-window, so the server does not see a change (green/blue mmsh).
(see picture one)

When changing the Custom Event to “Run On Server” the behaviour is even weirder. It just updates on the server-window, it doesn’t care if I want to change the Server’s or the Client’s mesh. The client-window does not show any changes, whereas the server-window changes both upon request. (picture 2)

I also tried setting up an Authority guard just before the Event is called in “OnRep_Class”, when the Custom Event is a “Multicast”, but then I can’t change my mesh on my client at all. It doesn’t even get into the Event. Server-side working good, though, which does makes sense I guess. (see picture 3)

I’m attaching my blueprints since I can’t see the error so far. Hopefully someone can see the issue here and tell me what I’m missing.

Thank you very much in advance


P.S.: How can I set the “RESOLVED”-flag, for another post I’ve made?

"Multicast" (Server sees only Server changes, Client sees both changes)

"Run On Server" (Server sees both changes, Client sees no changes at all)


Adding “Switch has Authority”-Guard right before “Change Class Event” in "OnRep_Class"

I had the same issue as you. I was attempting to set up a character ability that would switch the material on the character to an invisible/refraction effect. I went about it a bit differently. Rather than using a rep notify I just included a Multicast event. I made sure my input event (Event Use Ability) was called by the server with an authority switch, then ran the Multicast. I’ll include my system:

The Multicast event is really simple, it just sets the material.

Then to reset everything I used a timer that called the same event. I just passed the new material I wanted as a parameter for the event.


I know it’s a slightly different setup from yours, but the overall goal is the same, so I hope this helps somewhat. I don’t see any glaring errors in your setup. You might need to use an authority switch to have a client call a server function. With your Multicast event I believe you are not seeing client changes on the server because the client needs a ‘Run on Server’ in order to duplicate the functionality over. A Multicast will duplicate from server to all clients, but I believe (I’m not positive, but I have gathered) that it will not run code coming from clients. In my example the Event Use Ability is always called from the server in my C++ code, so it is replicated with Multicast. The equivalent in blueprint would be running the Remote branch of the switch to a ‘Run on Server’ event.