Screeching metal on remove.

When the rocket explodes, some minutes after it starts screeching like it wasn’t removed, but it’s invisible. When I do admin clean-up, everything’s fine.
Here’s the code:




if ( SERVER ) then

	AddCSLuaFile( "shared.lua" )
	
end

ENT.Type 			= "anim"
ENT.Base 			= "base_anim"
ENT.PrintName		= "Rocket"

ENT.Spawnable			= false
ENT.AdminSpawnable		= false




function ENT:Initialize()
	self:SetModel("models/weapons/kp_rocket.mdl")
	self:SetMoveCollide(COLLISION_GROUP_PROJECTILE) -- This causes errors until removed.
 	self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE)
	self:PhysicsInit(SOLID_VPHYSICS)
	self:SetMoveType(MOVETYPE_VPHYSICS)
	self:SetSolid(SOLID_CUSTOM)
	self.Entity:SetRenderMode(RENDERMODE_TRANSALPHA)
	if (SERVER) then
local zfire = ents.Create( "env_fire_trail" )
		zfire:SetPos( self:GetPos() )
		zfire:SetParent( self )
		zfire:Spawn()
		zfire:Activate()
        end
	local phys = self:GetPhysicsObject()
	if IsValid(phys) then
		phys:Wake()
		phys:SetMass(1)
		phys:EnableDrag(false)
		phys:EnableGravity(false)
		phys:SetBuoyancyRatio(0)
	end
	
	self.deployDelay = CurTime() +5.1
end
	


function ENT:SetEntityOwner(ent)
	self:SetOwner(ent)
	self.entOwner = ent
end

function ENT:PhysicsCollide(data, physobj)
	local start = data.HitPos + data.HitNormal
    local endpos = data.HitPos - data.HitNormal
	util.Decal("Scorch",start,endpos)
	self:Explode()
	return true
end

function ENT:Explode()
	util.BlastDamage( self, self:GetOwner(), self:GetPos(), 160, 160 )
	local effectdata = EffectData()
	local rocketexp = ("grenadek/explosion2.wav")
	effectdata:SetStart( self:GetPos() )
	effectdata:SetOrigin( self:GetPos() )
	effectdata:SetScale( 5 )
	util.Effect( "kexplode", effectdata ) 
	self:EmitSound(rocketexp, 100, math.random(95,105))
	local shake = ents.Create( "env_shake" )
		shake:SetOwner( self.entOwner )
		shake:SetPos( self.Entity:GetPos() )
		shake:SetKeyValue( "amplitude", "5" )
		shake:SetKeyValue( "radius", "1500" )
		shake:SetKeyValue( "duration", "2.5" )
		shake:SetKeyValue( "frequency", "255" )
		shake:SetKeyValue( "spawnflags", "4" )
		shake:Spawn()
		shake:Activate()
		shake:Fire( "StartShake", "", 0 )
	self:Remove()
end

function ENT:OnRemove()
	if self.flysound then self.flysound:Stop() end
end

function ENT:OnRemove()
	if self.flysound then self.flysound:Stop() end
end

function ENT:Think()
	if self.deployDelay then
		//if CurTime() < self.deployDelay then return end
		self.deployDelay = nil
		self.flysound = CreateSound(self, "v_rpgk/rl_rocket.wav")
		self.flysound:Play()

		ParticleEffectAttach("rocket_smoke_trail", PATTACH_ABSORIGIN_FOLLOW, self, 0)
	end
	local phys = self:GetPhysicsObject()
	if IsValid(phys) then phys:SetVelocity(self:GetAngles():Forward() *1500) return end
end




[ERROR] addons/kingpin_loc_playermodels_170055513/lua/entities/kp_rocket/shared.lua:21: attempt to call method 'SetMoveCollide' (a nil value)
  1. unknown - addons/kingpin_loc_playermodels_170055513/lua/entities/kp_rocket/shared.lua:21