From 43860832ffb06153ff4fa7407f43b3682cf0a2ef Mon Sep 17 00:00:00 2001 From: Pahimar Date: Thu, 19 May 2016 15:55:14 -0400 Subject: [PATCH] Start work on the new and improved PlayerKnowledge system --- .../ee3/knowledge/PlayerKnowledge.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledge.java 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(); + } +}