local TeleportService = game:GetService("TeleportService")

local TeleportSystem = {}

function TeleportSystem.TeleportPlayer(player, placeId)
	if not player or not player:IsA("Player") then
		return false
	end

	if typeof(placeId) ~= "number" then
		return false
	end

	local success, result = pcall(function()
		return TeleportService:TeleportAsync(placeId, {player})
	end)

	if not success then
		warn("[TeleportSystem] Failed:", result)
		return false
	end

	return true
end

function TeleportSystem.TeleportPlayers(players, placeId)
	if typeof(players) ~= "table" then
		return false
	end

	if typeof(placeId) ~= "number" then
		return false
	end

	local validPlayers = {}

	for _, player in ipairs(players) do
		if player and player:IsA("Player") then
			table.insert(validPlayers, player)
		end
	end

	if #validPlayers == 0 then
		return false
	end

	local success, result = pcall(function()
		return TeleportService:TeleportAsync(placeId, validPlayers)
	end)

	if not success then
		warn("[TeleportSystem] Failed:", result)
		return false
	end

	return true
end

return TeleportSystem