Calling self returns nil

Im having problems with calling self in a function

local Blocking = {}
local fMt = {__index = Blocking}


--// Services
local Replicated = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
--//

if RunService:IsServer() then error("Only can be called on client") end

local ForceField = Replicated:WaitForChild("FF")
local Initialized = false
local AnimFolder = script:WaitForChild("Animations")

local function Init(self)
	Initialized = true -- gonna add more stuff here ye 
end

function Blocking.new(Player)
	if Initialized then error("Cant be called twice") end

	local self = {}

	self.Player = Player
	self.Char = Player.Character
	self.Hum = self.Char:WaitForChild("Humanoid")
	self.Animator = self.Hum:WaitForChild("Animator")
	self.BlockingAnim = self.Animator:LoadAnimation(AnimFolder.Block)

	print(self.Char.Name) -- This works
	
	Init(self)
	return setmetatable(self, fMt)
end

function Blocking:Begin()
	print(self.BlockingAnim) -- Prints nil
	self.BlockingAnim:Play()
	print("started")
end

function Blocking:End()
	self.BlockingAnim:Stop()
	print("ended")
end

return Blocking

I added comments for the error

Where i call Blocking

UIS.InputBegan:Connect(function(input, gameProcessedEvent)
    if gameProcessedEvent then return end
    if input.KeyCode == Enum.KeyCode.F then
        Blocking:Begin()
    end
end)

Where i load it

---// Modules
local Blocking = require(ReplicatedStorage.Modules:WaitForChild("Blocking"))
---//

Player.PlayerScripts:WaitForChild("RbxCharacterSounds").Disabled = true
Blocking.new(Player)

Everytime i call blocking:Begin() it calls the self nil

Call the method on the constructor function:

local blockingConstr = Blocking.new(Player)
blockingConstr:Begin() -- the constructor returns the data with the metatable