inv.AddItem(0, inv.items[1], 1);
Вы только что создали пустой инвентарь, но пытаетесь добавить (хотя по коду заменить) нулевой элемент первым элементов.
Откуда берётся первый элемент для замены?
Откуда берётся нулевой элемент под замену?
Так как вы пытаетесь нельзя.
Создайте класс хранилище, который будет всем желающим отдавать А или Б (в виде класса С). А при необходимости заменять их.