I have no idea how to fix this bizarre glitch with jets in my game

So how would we stop the bodymovers from moving the jet upon it being hit?

Upon hit, you can find body movers and delete them or set them to zero force. The aircraft will fall down the sky rather than stop in mid air.

I don’t think this would work either. There was an occurrence where the AA gun destroyed the seat’s weld to the plane, and the player (and jet) fell, but it still showed the pilot was floating in air to all the other clients.

This is what I’m talking about, @SourceShahb.

I have sent this forum post to ROBLOX support, I’m very convinced that this is some sort of bug. Even my developer who made this jet is convinced of it too, @Kyxino

Have you taken a look closely to the server side or other client side to see if the assets is still there? Such as body movers, seat, etc? If so, it seems that you have incorrectly destroy them. You destroy them on client side instead of server side.

Anything that is destroy on client side will not be replicated to the server side and all clients. Anything the is destroyed on server side, all clients will be destroyed.

All assets of the plane are still there

One thing that made the issue less prominent was switching the control script from being parented to the player/character to leaving it inside the plane model. The issue still occurred but it was less frequent, but it still occurred nonetheless.
Could this be a bug or feature request I should bring up?

It got even more bizarre when I switched the AA turret’s targeting from searching the player list to searching workspace instead - the plane would get stuck in the air, but the player would not

--[[
old
function findPlayer()
	local highestmag
	local target 
	local t2
	for _,v in ipairs(game.Players:GetChildren()) do
		if on == false then return end
		if v.Character ~= nil and owner.Value ~= nil and v.Team ~= owner.Value and v.Character.Humanoid.Health > 0 then
			if v.Character:FindFirstChild("F-16") or v.Character:FindFirstChild("helicopter") then
				if v.Character.Head ~= nil and (hrp.MAIN.Position - v.Character.Head.Position).magnitude < (highestmag or script.Parent.range.Value) then
					highestmag = (hrp.MAIN.Position - v.Character.Head.Position).magnitude
					target = v
					t2 = target.Character.Head
				end	
			end
		end
	end
	return target and t2 or nil
end
--]]
function findPlayer()
	--new
	local highestmag
	local target 
	local t2
	for _,v in ipairs(workspace:GetChildren()) do
		if on == false then return end
		if v:FindFirstChild("Humanoid") ~= nil and owner.Value ~= nil then
			local plrr = game.Players:GetPlayerFromCharacter(v)
			if plrr and v.Humanoid.Health > 0 then
				if v:FindFirstChild("F-16") == nil then return end
				if v.Head ~= nil and (hrp.MAIN.Position - v.Head.Position).magnitude < (highestmag or script.Parent.range.Value) then
					highestmag = (hrp.MAIN.Position - v.Head.Position).magnitude
					target = v
					t2 = target.Head
				end	
			end
		end
	end
	return target and t2 or nil
end

Probably my last reply to this thread - the issue all along seems to be an issue with explosions and ROBLOX’s physics.

@Kyxino is a developer I work with, and he is more experienced than I on this stuff, so I’m confident in declaring this a bug. We have both been testing our own possible fixes to this issue, with the same thing resulting - either the player or plane, or both, hovers in mid-air, with the pilot appearing invisible to all other clients. This resulted from either the PrimaryPart of the plane, the VehicleSeat, or/and the part with the bodymover(s) in it being destroyed/impacted by an explosion.

@Kyxino eventually found a “fix” where explosions would have no blast damage, but would simply just break the joints of whatever was within its radius:

Not sure if using DestroyJointRadiusPercent would be another option, but since it is directly connected to explosions, I think it would be safer to just hard code in a :BreakJoints().

This seems to be a obscure bug since I’ve noticed many games don’t use explosions at all, or just use the visual property of them and have their own damage system coded in, to account for anti-teamkilling purposes.

I was going to post this in Bug Reports but it won’t let me

Just going to clear this up, this is what I believe. There are issues with the server-client connections between explosions, which cause other clients to see the jet glitch, but the server doesn’t. This is because an explosion object is being ran separately on both the server and the clients, which it shouldn’t be running on the client if it is running on the server, so this seems more of an engine bug unless Roblox wants that type of behavior? Either way, custom explosions are the solution to this type of issue. This post can now be closed.