I'm trying to transport data from the main menu to the actual game, but the character doesn't get changed with the data.

Here's how it looks: link

-- Local script
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()

local TeleportService = game:GetService("TeleportService")
local playerData = TeleportService:GetLocalPlayerTeleportData()
print(playerData)

local decodedData = game:GetService("HttpService"):JSONDecode(playerData)
print(decodedData)

game.ReplicatedStorage.Remotes.GetData:FireServer(decodedData)

player.PlayerData.MagicEnergy.Value = decodedData.magicEnergy
player.PlayerData.Levels.XP.Value = decodedData.xp
player.PlayerData.Levels.Value = decodedData.levels
player.PlayerData.Silver.Value = decodedData.silver
player.PlayerData.HP.Value = decodedData.hp
player.PlayerData.MagicType.MagicLevel.Value = decodedData.magicLevel
player.PlayerData.MagicXP.Value = decodedData.magicXP
player.PlayerData.MagicXPNeeded.Value = decodedData.magicXPN
player.PlayerData.MagicType.Value = decodedData.magicType

player.PlayerData.Hair1.Value = decodedData.hair1
player.PlayerData.Hair1Color.Value = Vector3.new(tonumber(decodedData.hair1Color))
player.PlayerData.Hair1Offset.Value = Vector3.new(tonumber(decodedData.hair1Offset))
player.PlayerData.Hair2.Value = decodedData.hair2
player.PlayerData.Hair2Color.Value = Vector3.new(tonumber(decodedData.hair2Color))
player.PlayerData.Hair2Offset.Value = Vector3.new(tonumber(decodedData.hair2Offset))
player.PlayerData.SkinColor.Value = Color3.fromRGB(tonumber(decodedData.skinColor))
player.PlayerData.Face.Value = decodedData.face
player.PlayerData.Shirt.Value = decodedData.shirt
player.PlayerData.ShirtColor.Value = Color3.fromRGB(tonumber(decodedData.shirtColor))
player.PlayerData.Pants.Value = decodedData.pants
player.PlayerData.PantsColor.Value = Color3.fromRGB(tonumber(decodedData.pantsColor))

char:WaitForChild("Hair").Handle.Mesh.MeshId = decodedData.hair1
char:WaitForChild("Hair").Handle.Mesh.VertexColor = Vector3.new(tonumber(decodedData.hair1Color))
char:WaitForChild("Hair").Handle.Mesh.Offset = Vector3.new(tonumber(decodedData.hair1Offset))
char:WaitForChild("Hair2").Handle.Mesh.MeshId = decodedData.hair2
char:WaitForChild("Hair2").Handle.Mesh.VertexColor = Vector3.new(tonumber(decodedData.hair2Color))
char:WaitForChild("Hair2").Handle.Mesh.Offset = Vector3.new(tonumber(decodedData.hair2Offset))
char:WaitForChild("Body Colors").HeadColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").LeftArmColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").RightArmColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").LeftLegColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").RightLegColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").TorsoColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char.Head.face.Texture = decodedData.face
char:WaitForChild("Shirt").ShirtTemplate = decodedData.shirt
char:WaitForChild("Shirt").Color3 = Color3.fromRGB(tonumber(decodedData.shirtColor))
char:WaitForChild("Pants").PantsTemplate = decodedData.pants
char:WaitForChild("Pants").Color3 = Color3.fromRGB(tonumber(decodedData.pantsColor))

Server script:

local DSS = game:GetService("DataStoreService")
local playerData = DSS:GetDataStore("PlayerData")

function generateDataKey(player)
	local ret = "user_"..player.UserId
	return ret
end

function generateDataTable(player)
	local dataTable = {
		magicType = player.PlayerData.MagicType.Value,
		magicLevel = player.PlayerData.MagicType.MagicLevel.Value,
		magicXP = player.PlayerData.MagicXP.Value,
		magicXPN = player.PlayerData.MagicXPNeeded.Value,
		magicEnergy = player.PlayerData.MagicEnergy.Value,
		levels = player.PlayerData.Levels.Value,
		xp = player.PlayerData.Levels.XP.Value,
		xpn = player.PlayerData.Levels.XPNeeded.Value,
		silver = player.PlayerData.Silver.Value,
		hp = player.PlayerData.HP.Value,
		
		hair1 = player.PlayerData.Hair1.Value,
		hair1Color = player.PlayerData.Hair1Color.Value,
		hair1Offset = player.PlayerData.Hair1Offset.Value,
		hair2 = player.PlayerData.Hair2.Value,
		hair2Color = player.PlayerData.Hair2Color.Value,
		hair2Offset = player.PlayerData.Hair2Offset.Value,
		skinColor = player.PlayerData.SkinColor.Value,
		face = player.PlayerData.Face.Value,
		shirt = player.PlayerData.Shirt.Value,
		shirtColor = player.PlayerData.ShirtColor.Value,
		pants = player.PlayerData.Pants.Value,
		pantsColor = player.PlayerData.PantsColor.Value
	}
	
	return dataTable
end

function inputData(player, data)
	local char = player.Character or player.CharacterAdded:Wait()
	player.PlayerData.MagicType.Value = data.magicType
	player.PlayerData.MagicType.MagicLevel.Value = data.magicLevel
	player.PlayerData.MagicXP.Value = data.magicXP
	player.PlayerData.MagicXPNeeded.Value = data.magicXPN
	player.PlayerData.MagicEnergy.Value = data.magicEnergy
	player.PlayerData.Levels.Value = data.levels
	player.PlayerData.Levels.XP.Value = data.xp
	player.PlayerData.Levels.XPNeeded.Value = data.xpn
	player.PlayerData.Silver.Value = data.silver
	player.PlayerData.HP.Value = data.hp
	
	player.PlayerData.Hair1.Value = data.hair1
	player.PlayerData.Hair1Color.Value = Vector3.new(tonumber(data.hair1Color))
	player.PlayerData.Hair1Offset.Value = Vector3.new(tonumber(data.hair1Offset))
	player.PlayerData.Hair2.Value = data.hair2
	player.PlayerData.Hair2Color.Value = Vector3.new(tonumber(data.hair2Color))
	player.PlayerData.Hair2Offset.Value = Vector3.new(tonumber(data.hair2Offset))
	player.PlayerData.SkinColor.Value = Color3.fromRGB(tonumber(data.skinColor))
	player.PlayerData.Face.Value = data.face
	player.PlayerData.Shirt.Value = data.shirt
	player.PlayerData.ShirtColor.Value = Color3.fromRGB(tonumber(data.shirtColor))
	player.PlayerData.Pants.Value = data.pants
	player.PlayerData.PantsColor.Value = Color3.fromRGB(tonumber(data.pantsColor))
	
	char:WaitForChild("Hair").Handle.Mesh.MeshId = data.hair1
	char:WaitForChild("Hair").Handle.Mesh.VertexColor = Vector3.new(tonumber(data.hair1Color))
	char:WaitForChild("Hair").Handle.Mesh.Offset = Vector3.new(tonumber(data.hair1Offset))
	char:WaitForChild("Hair2").Handle.Mesh.MeshId = data.hair2
	char:WaitForChild("Hair2").Handle.Mesh.VertexColor = Vector3.new(tonumber(data.hair2Color))
	char:WaitForChild("Hair2").Handle.Mesh.Offset = Vector3.new(tonumber(data.hair2Offset))
	char:WaitForChild("Body Colors").HeadColor3 = Color3.fromRGB(tonumber(data.skinColor))
	char:WaitForChild("Body Colors").LeftArmColor3 = Color3.fromRGB(tonumber(data.skinColor))
	char:WaitForChild("Body Colors").RightArmColor3 = Color3.fromRGB(tonumber(data.skinColor))
	char:WaitForChild("Body Colors").LeftLegColor3 = Color3.fromRGB(tonumber(data.skinColor))
	char:WaitForChild("Body Colors").RightLegColor3 = Color3.fromRGB(tonumber(data.skinColor))
	char:WaitForChild("Body Colors").TorsoColor3 = Color3.fromRGB(tonumber(data.skinColor))
	char.Head.face.Texture = data.face
	char:WaitForChild("Shirt").ShirtTemplate = data.shirt
	char:WaitForChild("Shirt").Color3 = Color3.fromRGB(tonumber(data.shirtColor))
	char:WaitForChild("Pants").PantsTemplate = data.pants
	char:WaitForChild("Pants").Color3 = Color3.fromRGB(tonumber(data.pantsColor))
end

function loadData(player)
	local key = generateDataKey(player)
	local data = playerData:GetAsync(key)
	inputData(player, data)
end

game.Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(char)	
		spawn(function()
			wait(1)
			for i, v in pairs(char:GetChildren()) do
				if v:IsA("Accessory") then
					v:Destroy()
				end
			end
			
			for i, v in pairs(game.ServerStorage:GetChildren()) do
				if v:IsA("Accessory") then
					v:Clone().Parent = char
				end
			end
		end)		
		
		game.ReplicatedStorage.Remotes.GetData.OnServerEvent:Connect(function(player, decodedData)
			print(decodedData)
				
			local success = pcall(function()
				return playerData:GetAsync(key)
			end)
		
			if success then
				print("Data exists")
				inputData(player, decodedData)	
			else
				print("No data found")
			end	
			
			char:WaitForChild("Hair").Handle.Mesh.MeshId = decodedData.hair1
			char:WaitForChild("Hair").Handle.Mesh.VertexColor = Vector3.new(tonumber(decodedData.hair1Color))
			char:WaitForChild("Hair").Handle.Mesh.Offset = Vector3.new(tonumber(decodedData.hair1Offset))
			char:WaitForChild("Hair2").Handle.Mesh.MeshId = decodedData.hair2
			char:WaitForChild("Hair2").Handle.Mesh.VertexColor = Vector3.new(tonumber(decodedData.hair2Color))
			char:WaitForChild("Hair2").Handle.Mesh.Offset = Vector3.new(tonumber(decodedData.hair2Offset))
			char:WaitForChild("Body Colors").HeadColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
			char:WaitForChild("Body Colors").LeftArmColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
			char:WaitForChild("Body Colors").RightArmColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
			char:WaitForChild("Body Colors").LeftLegColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
			char:WaitForChild("Body Colors").RightLegColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
			char:WaitForChild("Body Colors").TorsoColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
			char.Head.face.Texture = decodedData.face
			char:WaitForChild("Shirt").ShirtTemplate = decodedData.shirt
			char:WaitForChild("Shirt").Color3 = Color3.fromRGB(tonumber(decodedData.shirtColor))
			char:WaitForChild("Pants").PantsTemplate = decodedData.pants
			char:WaitForChild("Pants").Color3 = Color3.fromRGB(tonumber(decodedData.pantsColor))			
		end)
	end)
end)