For some reason, my inventory system acts as if there is something in the cell that it is checking when there isn't and it is blocking the player/looting system from placing it there, and on other occasions, it acts as if there isn't an item where one is

function logic:CheckCell(pos, index)
		for i, v in pairs(data.Inventory) do
			if i ~= index then
				if v.Position.X == pos.X or v.Position.Y == pos.Y then
					return false
				end
				for _, v in pairs(v.OtherCells) do
					if v.X == pos.X or v.Y == pos.Y then
						return false
					end
				end
			end
		end
		return true
	end
	
	function logic:CheckItemRoom(pos)
		for i, v in pairs(data.Inventory) do
			if v.Position.X == pos.X or v.Position.Y == pos.Y then
				return false
			end
			for _, v in pairs(v.OtherCells) do
				if v.X == pos.X or v.Y == pos.Y then
					return false
				end
			end
		end
		return true
	end
	
	function logic:LootItem(item)
		local canloot = false
		print(item.Name)
		local itemData = require(replicatedStorage.ItemModules:FindFirstChild(item.Name))
		local posX,posY
		for x = 0,9-itemData.Size.X do
			for y = 0,9-itemData.Size.Y do
				local blocked = false
				print("Checking "..x..","..y)
				for ix = x,x+itemData.Size.X do
					for iy = y,y+itemData.Size.Y do
						if logic:CheckItemRoom(Vector2.new(ix,iy)) then
							if blocked == false then
								canloot = true
							end
							--print(ix..","..iy.." Is Clear")
						else
							--print(ix..","..iy.." Is Not Clear")
							canloot = false
							blocked = true
						end
					end
				end
				print(blocked)
				if not blocked then
					break
				end
			end
		end
		if canloot then
			print("Chosen "..posX..","..posY)
			local othercells = {}
			for x = posX,posX+(itemData.Size.X) do
				for y = posY,posY+(itemData.Size.Y) do
					table.insert(othercells, Vector2.new(x,y))
				end
			end
			local specialdata = {}
			if itemData.Type == "Gun" then
				specialdata.Rounds = item.Rounds
			end
			network:send('l'..'o'..'o'..'t'..'e'..'d', input.player, input.player, item.Part)
			table.insert(data.Inventory, {Name=item.Name,Position=Vector2.new(posX,posY), OtherCells=othercells, unpack(specialdata)})
			hud:updateInventory(data.Inventory)
		end
	end