package WayofTime.bloodmagic.api; import lombok.EqualsAndHashCode; import lombok.RequiredArgsConstructor; import lombok.Setter; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; @RequiredArgsConstructor @EqualsAndHashCode public class ItemStackWrapper { public final Item item; public final int stackSize; public final int meta; @Setter public NBTTagCompound nbtTag; public ItemStackWrapper(Item item, int stackSize) { this(item, stackSize, 0); } public ItemStackWrapper(Item item) { this(item, 1, 0); } public ItemStackWrapper(Block block, int stackSize, int meta) { this(Item.getItemFromBlock(block), stackSize, meta); } public ItemStackWrapper(Block block, int stackSize) { this(block, stackSize, 0); } public ItemStackWrapper(Block block) { this(block, 1, 0); } public ItemStackWrapper(BlockStack blockStack) { this(blockStack.getBlock(), 1, blockStack.getMeta()); } @Nullable public static ItemStackWrapper getHolder(ItemStack stack) { if (stack.isEmpty()) { return null; } return new ItemStackWrapper(stack.getItem(), stack.getCount(), stack.getItemDamage()); } public ItemStack toStack() { return new ItemStack(item, stackSize, meta); } public String getDisplayName() { return toStack().getDisplayName(); } @Override public String toString() { return stackSize + "x" + item.getUnlocalizedName() + "@" + this.meta; } public ItemStack toStack(int count) { ItemStack result = new ItemStack(item, count, meta); result.setTagCompound(nbtTag); return result; } public static List toWrapperList(List itemStackList) { List wrapperList = new ArrayList(); for (ItemStack stack : itemStackList) wrapperList.add(ItemStackWrapper.getHolder(stack)); return wrapperList; } public static List toStackList(List wrapperList) { List stackList = new ArrayList(); for (ItemStackWrapper wrapper : wrapperList) stackList.add(wrapper.toStack()); return stackList; } }