The server should be managing inventory. Meaning clients do not “literally” pick up, add, or drop items.
Clients should interact locally as far as a trace and any needed animation. Then call the server to do a trace/interact. If it’s successful there, the item is picked up and added.
Part of the pick up process on the server is to destroy its instance. Said instance should be a replicated actor. By destroying on the server it will be destroyed on all clients.
Dropping goes through the same process. Client wants to drop, RPC’s server to do it. Server validates, then removes item from inventory, and spawns a replicated actor.
Clients “Request” an action. Server determines if its a valid request and if so executes the action.