package openmods.inventory; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Ordering; import java.util.List; import net.minecraft.item.ItemStack; import openmods.inventory.comparator.ComparatorComponents; public class StackComparatorBuilder { private List<Ordering<ItemStack>> result = Lists.newArrayList(); private boolean usedItem; private boolean usedItemId; private boolean usedDamage; private boolean usedSize; public StackComparatorBuilder useItem() { Preconditions.checkState(!usedItem); usedItem = true; result.add(ComparatorComponents.ITEM_COMPARATOR); return this; } public StackComparatorBuilder useItemId() { Preconditions.checkState(!usedItemId); usedItemId = true; result.add(ComparatorComponents.ITEM_ID_COMPARATOR); return this; } public StackComparatorBuilder useDamage() { Preconditions.checkState(!usedDamage); usedDamage = true; result.add(ComparatorComponents.DAMAGE_COMPARATOR); return this; } public StackComparatorBuilder useSize() { Preconditions.checkState(!usedSize); usedSize = true; result.add(ComparatorComponents.SIZE_COMPARATOR); return this; } public Ordering<ItemStack> build() { return Ordering.compound(result); } }