How do I make a safe build system with Building Tools by F3X?

My goal for today is to make a simple system that removes the ability of other players to touch each other’s builds. I’ve already created a system that puts each player’s builds in a private folder. But others can still select them.

– The system that creates the main WORKSPACE folder

--Stores all parts in this folder--

local serverSide = Instance.new("Folder")
serverSide.Name = "WORKSPACE"
serverSide.Parent = game.Workspace

--Adds folder for blocks--

game.Players.PlayerAdded:Connect(function(plr)
	if workspace:FindFirstChild(plr.Name) then else
		local folder = Instance.new('Folder')
		folder.Name = plr.Name
		folder.Parent = serverSide
	end 

end)

--Delete the block's when someone leaves the game--

game.Players.PlayerRemoving:Connect(function(plr)
	if serverSide:FindFirstChild(plr.Name) then
		serverSide:FindFirstChild(plr.Name):Destroy()
	end
end)

– The part of my create part function that adds build to the folder

function CreatePart(Type)

	-- Send the creation request to the server
	local Part = Core.SyncAPI:Invoke('CreatePart', Type, CFrame.new(Core.Mouse.Hit.p), Core.Targeting.Scope)
	Part.Name = game.Players.LocalPlayer.Name.."'s Part"
	Part.Parent = workspace["WORKSPACE"]:FindFirstChild(game.Players.LocalPlayer.Name)

In addition to making private folders you would also need to read through the code of the build tools and add an extra check somewhere on the server that verifies that you own a part before replicated the change to the clients. I don’t really know anything about how the f3x build tools were made, but theres probably a serverscript that handles updating parts, and you would need to go to the part where the client tells the server what they have changed to put the check.

The above prevents people from manipulating other peoples parts, but it doesn’t stop them from just harmlessly selecting them. To remove the selecting you would need to find the localscript that handles selecting and put in a check to make sure that the player owns the part before allowing them to select it.

The reason that it is important to put checks on both the client and the server is so an exploiter can’t bypass the client checks and be able to change other peoples parts.

Hope this helps!

I found a solution. Thanks for the help!