Animation plays different in game than studio (AnimationController)

Like the title suggests, my animation on a rigged meshpart does not play correctly(Hand goes inside barrel, idle2 anim is also messed up) in game and im have no clue why.

BarrelThrow and Idle2(1 sec long chest pound anim) is Action4 priority
Idle is Idle priority

In Studio:

In-game:

Code that plays anims:

local SS = game.ServerStorage
local Level1Storage = SS.Level1Storage

--Animation Setup--
local AnimationController = script.Parent.AnimationController

--Idle
local IdleAnimation = script.Parent.Idle
local IdleAnimationTrack = AnimationController:LoadAnimation(IdleAnimation)

--Idle2
local Idle2Animation = script.Parent.Idle2
local Idle2AnimationTrack = AnimationController:LoadAnimation(Idle2Animation)

--BarrelThrow
local BarrelThrowAnimation = script.Parent.BarrelThrow
local BarrelThrowAnimationTrack = AnimationController:LoadAnimation(BarrelThrowAnimation)

--Main Script--
while true do
	IdleAnimationTrack:Play()
	wait(3)
	IdleAnimationTrack:Stop()
	BarrelThrowAnimationTrack:Play()
	BarrelThrowAnimationTrack:GetMarkerReachedSignal("BarrelAppear"):Connect(function()
		local Children = script.Parent.FakeBarrel:GetChildren()
		for i = 1, #Children do
			Children[i].Transparency = 0
		end
	end)
	BarrelThrowAnimationTrack:GetMarkerReachedSignal("BarrelThrow"):Connect(function()
		local Children = script.Parent.FakeBarrel:GetChildren()
		for i = 1, #Children do
			Children[i].Transparency = 1
		end
		
		local BarrelClone = Level1Storage.Barrel:Clone()
		BarrelClone.Parent = game.Workspace
		BarrelClone.Cylinder.CFrame = script.Parent.FakeBarrel.Cylinder.CFrame
	end)
	wait(4)
	IdleAnimationTrack:Play()
	wait(math.random(1,3))
	IdleAnimationTrack:Stop()
	Idle2AnimationTrack:Play()
	wait(1.2)
	IdleAnimationTrack:Play()
end

help :pray:

Apparently, since there was no keyframe for a bone in his right shoulder, it was just doing that :money_mouth_face: