package openmods.inventory.comparator; import com.google.common.base.Function; import com.google.common.collect.Ordering; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class ComparatorComponents { @SuppressWarnings("unchecked") private static <T> Ordering<T> arbitrary() { return (Ordering<T>)Ordering.arbitrary(); } public static final Ordering<ItemStack> ITEM_COMPARATOR = arbitrary().onResultOf(new Function<ItemStack, Item>() { @Override public Item apply(ItemStack input) { return input.getItem(); } }).nullsLast(); public static final Ordering<ItemStack> ITEM_ID_COMPARATOR = Ordering.natural().onResultOf(new Function<ItemStack, Integer>() { @Override public Integer apply(ItemStack input) { return Item.getIdFromItem(input.getItem()); } }).nullsLast(); public static final Ordering<ItemStack> DAMAGE_COMPARATOR = Ordering.natural().onResultOf(new Function<ItemStack, Integer>() { @Override public Integer apply(ItemStack input) { return input.getItemDamage(); } }).nullsLast(); public static final Ordering<ItemStack> SIZE_COMPARATOR = Ordering.natural().onResultOf(new Function<ItemStack, Integer>() { @Override public Integer apply(ItemStack input) { return input.stackSize; } }).nullsLast(); }