Okay so I just tested it using remote events, and that seems to work.
It should look something like this.
Server script:
local c_service = game:GetService("CollectionService")
for _, part in c_service:GetTagged("Apple") do
part.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
game:GetService("ReplicatedStorage"):WaitForChild("RemoteEvent"):FireClient(game.Players:GetPlayerFromCharacter(hit.Parent), part) --You HAVE to put the player as an argument, or else this will not work. Put the part as an argument so we can send it and it's properties over to the client.
end
end)
end
Local script:
game:GetService("ReplicatedStorage"):WaitForChild("RemoteEvent").OnClientEvent:Connect(function(part) --Getting the part that we passed over as an argument
part.Color = Color3.fromRGB(75,151,75)
part.Material = Enum.Material.SmoothPlastic
end)
This works 100% for the client only. Hope this fixes your problem!
Edit: I know this is messy, and you should probably set yours up so it isn’t as messy as mine, but I was in a rush.