package joshie.harvest.core.util.interfaces; import joshie.harvest.api.core.Size; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public interface ISizeable { /** Shorthand for single stacks * @param item the item * @param size the size */ default ItemStack getStack(Item item, Size size) { return getStackOfSize(item, size, 1); } /** Returns a stack of this size **/ default ItemStack getStackOfSize(Item item, Size size, int stackSize) { return new ItemStack(item, stackSize, (getMeta() * 3) + size.ordinal()); } /** Return the metadata for this sizeable **/ int getMeta(); default long getSellValue(Size size) { return size == Size.SMALL ? getSmall() : size == Size.MEDIUM ? getMedium() : getLarge(); } /** The sell values for various sizes **/ long getSmall(); long getMedium(); long getLarge(); }