diff --git a/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledge.java b/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledge.java new file mode 100644 index 00000000..a4ab8507 --- /dev/null +++ b/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledge.java @@ -0,0 +1,62 @@ +package com.pahimar.ee3.knowledge; + +import com.pahimar.ee3.reference.Comparators; +import com.pahimar.ee3.util.ItemHelper; +import net.minecraft.item.ItemStack; + +import java.util.Collection; +import java.util.Collections; +import java.util.Set; +import java.util.TreeSet; + +public class PlayerKnowledge { + + private static final int VERSION = 1; + + private int version; + private Set knownItemStacks; + + public PlayerKnowledge() { + this(Collections.EMPTY_SET); + } + + public PlayerKnowledge(Collection itemStacks) { + + version = VERSION; + knownItemStacks = new TreeSet<>(Comparators.idComparator); + + if (itemStacks != null) { + for (ItemStack itemStack : itemStacks) { + knownItemStacks.add(ItemHelper.clone(itemStack, 1)); + } + } + } + + public boolean isKnown(ItemStack itemStack) { + return knownItemStacks.contains(ItemHelper.clone(itemStack, 1)); + } + + public Set get() { + return knownItemStacks; + } + + public void learn(ItemStack itemStack) { + + if (itemStack != null) { + ItemStack unitItemStack = ItemHelper.clone(itemStack, 1); + knownItemStacks.add(unitItemStack); + } + } + + public void forget(ItemStack itemStack) { + + if (itemStack != null) { + ItemStack unitItemStack = ItemHelper.clone(itemStack, 1); + knownItemStacks.remove(unitItemStack); + } + } + + public void forgetAll() { + knownItemStacks.clear(); + } +}