Moduled Player Data does not saves

Hello, so i tried to make a player data be inside of a module, I can change it trough console, and it updates, but if close the game, its saves the default data, not new, and I don’t know what is the problem.

Here’s the code

Module:

local Data = {}
local Remotes = game.ReplicatedStorage:WaitForChild("Remotes")


Data.PlayerData = {}

function Data.new(Player)
    local PData  = {}

    PData.Food = 10
    PData.Fertilizer = 5

    PData.Tool = "Shovel"
    PData.Tools = {}

    --table.insert(PlayerData[Player.UserId], PData)
    Data.PlayerData[Player.UserId] = PData

    return PData
end

function Data:Get(Player)
    if game:GetService("RunService"):IsClient() then
        print("client")
        return Remotes.GetPlayerData:InvokeServer(Player)
    else
        return Data.PlayerData[Player.UserId]
    end
end

function Data:SetKey(Player, Key, Value)
    Data.PlayerData[Player.UserId][Key] = Value
end

function Data:Set(Player, PData)
    print(PData, "data to update")
    Data.PlayerData[Player.UserId] = PData
    print(Data.PlayerData[Player.UserId], "pdata after update")
end

return Data

Script:

local PlayerData = require(game.ReplicatedStorage:WaitForChild("Data"))
local Remotes = game.ReplicatedStorage:WaitForChild("Remotes")

local DataStoreService = game:GetService("DataStoreService")
local DataStore = DataStoreService:GetDataStore("WormfeederDataStore")

game.Players.PlayerAdded:Connect(function(Player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = Player

    local Food = Instance.new("IntValue")
    Food.Name = "Food"
    Food.Parent = leaderstats

    local Fertilizer = Instance.new("IntValue")
    Fertilizer.Name = "Fertilizer"
    Fertilizer.Parent = leaderstats

    local Data

    local succes, errormsg = pcall(function()
        Data = DataStore:GetAsync(Player.UserId)
    end)


    if succes then
        print(Data, "is a player data")
        if Data then
            PlayerData.new(Player)
            PlayerData:Set(Player, Data)
            local PData = PlayerData:Get(Player)

            Food.Value = PData.Food
            Fertilizer.Value = PData.Fertilizer
        else
            print("New Player", Player.Name)
            PlayerData.new(Player)
            local PData = PlayerData:Get(Player)

            Food.Value = PData.Food
            Fertilizer.Value = PData.Fertilizer
        end
    else
        warn("An error occured while loading data:", errormsg)
        Player:Kick("An error occured while loading data! Please join later")
    end

    game:BindToClose(function()
        print(Player.Name, "is leaving!")

        local Succes, Errormsg = pcall(function()
            local SaveData = PlayerData:Get(Player)
            print("sd", SaveData)

            DataStore:SetAsync(Player.UserId, SaveData)
        end)

        if Succes then
            print("Data successfully saved")
        else
            warn("An error occured while saving data:", Errormsg)
        end
    end)
end)

Remotes.GetPlayerData.OnServerInvoke = function(player)
    return PlayerData:Get(player)
end