package joshie.harvest.core.util.holders; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import java.util.ArrayList; import java.util.List; public class ItemHolder extends AbstractItemHolder { private final Item item; private ItemHolder(Item item) { this.item = item; } public static ItemHolder of(Item item) { return new ItemHolder(item); } @Override public boolean matches(ItemStack stack) { return stack.getItem() == item; } @Override public List<ItemStack> getMatchingStacks() { if (matchingStacks != null && matchingStacks.size() > 0) return matchingStacks; else { matchingStacks = new ArrayList<>(); matchingStacks.add(new ItemStack(item)); return matchingStacks; } } public static ItemHolder readFromNBT(NBTTagCompound tag) { return new ItemHolder(Item.REGISTRY.getObject(new ResourceLocation(tag.getString("ItemName")))); } @Override public NBTTagCompound writeToNBT(NBTTagCompound tag) { tag.setString("ItemName", Item.REGISTRY.getNameForObject(item).toString()); return tag; } @Override public String toString() { return new ItemStack(item).getDisplayName(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ItemHolder that = (ItemHolder) o; return item != null ? item.equals(that.item) : that.item == null; } @Override public int hashCode() { return item != null ? item.hashCode() : 0; } }