Local spawnpos not working?

Hi there, so im currently making a entity with my own model n all and im trying to get it to spawn above ground but my sent has other ideas, heres the code:

INIT.lua


AddCSLuaFile( "cl_init.lua" ) 
AddCSLuaFile( "shared.lua" ) 
include('shared.lua')

function ENT:Initialize()

	self:SetModel("models/kerr/kerr.mdl")
	self:PhysicsInit( SOLID_VPHYSICS )
	self:SetMoveType( MOVETYPE_VPHYSICS )
	self:SetSolid( SOLID_VPHYSICS )
	self:SetUseType( SIMPLE_USE )
	self:DrawShadow( true )

	local phys = self.Entity:GetPhysicsObject()
	if (phys:IsValid()) then
		phys:Wake()
		phys:EnableDrag(false)
		phys:EnableMotion(true)
	end	
end


function ENT:SpawnFunction ( ply, tr )
	
    if !tr.Hit then return end

    local SpawnPos = tr.HitPos + tr.HitNormal * 16
    local ent = ents.Create( self.ClassName )
    ent:SetPos( SpawnPos + Vector( 0, 0, 4 ) )
    ent:Spawn()
    ent:Activate()

    return ent

end

 
function ENT:Use( activator, caller )
    return
end
 
 
function ENT:Think()
end
 

CL_INIT.lua


include('shared.lua')

function ENT:Initialize()
	self:SetModel( "models/kerr/kerr.mdl" )
	self:SetColor( Color( 255, 255, 255 ) )
	self:SetMoveType( MOVETYPE_VPHYSICS )
	self:SetSolid( SOLID_VPHYSICS )
	if ( SERVER ) then self:PhysicsInit( SOLID_VPHYSICS ) end
	local phys = self:GetPhysicsObject()
	if ( IsValid( phys ) ) then phys:Wake() end
end


function ENT:Think()
end

I’ve tried editing the “ent:SetPos( SpawnPos + Vector( 0, 0, 4 ) )” but that doesnt seem to change crap all.

Also i cant seem to spawn the entity a few steps forward away from the place i spawn and i cannot spawn it from a long distance so could someone advise me on what to do?

4 units is barely noticeable in Source, try a higher number