package joshie.harvest.player.tracking; import joshie.harvest.api.cooking.Recipe; import joshie.harvest.api.knowledge.Note; import joshie.harvest.api.player.IPlayerTracking; import joshie.harvest.core.util.holders.ItemStackHolder; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import java.util.HashSet; import java.util.Set; public class Tracking implements IPlayerTracking { protected Set<ItemStackHolder> obtained = new HashSet<>(); //Items that have been obtained protected Set<ResourceLocation> recipes = new HashSet<>(); //Recipe Learnt protected Set<ResourceLocation> notes = new HashSet<>(); //Notes Learnt protected Set<ResourceLocation> unread = new HashSet<>(); //Things we haven't read yet protected int mineFloorReached = 1; public Set<ResourceLocation> getReadStatus() { return unread; } public int getMineFloorReached() { return mineFloorReached; } public void setMineFloorReached(int floor) { mineFloorReached = floor; } public boolean learnRecipe(Recipe recipe) { if (recipe == null) { recipes.clear(); return false; } else return recipes.add(recipe.getResource()); } @Override public boolean learnNote(Note note) { if (note == null) { notes.clear(); return false; } else return notes.add(note.getResource()); } @Override public void addAsObtained(ItemStack stack) { obtained.add(ItemStackHolder.of(stack)); } public boolean hasObtainedItem(ItemStack stack) { for (ItemStackHolder holder: obtained) { if (holder.matches(stack)) return true; } return false; } }