package net.CyanWool.api.inventory.recipes;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.CyanWool.api.inventory.ItemType;
public class SimpleRecipeManager implements RecipeManager {
private List<ShapedRecipe> shapedRecipes = new ArrayList<ShapedRecipe>();
private List<ShapelessRecipe> shapelessRecipes = new ArrayList<ShapelessRecipe>();
private List<FurnaceRecipe> furnaceRecipes = new ArrayList<FurnaceRecipe>();
private List<FurnaceFuel> fuels = new ArrayList<FurnaceFuel>();
@Override
public boolean register(Recipe recipe) {
if (recipe instanceof ShapedRecipe) {
shapedRecipes.add((ShapedRecipe) recipe);
return true;
} else if (recipe instanceof ShapelessRecipe) {
shapelessRecipes.add((ShapelessRecipe) recipe);
return true;
} else if (recipe instanceof FurnaceRecipe) {
furnaceRecipes.add((FurnaceRecipe) recipe);
return true;
}
return false;
}
@Override
public boolean registerAll(List<Recipe> recipes) {
boolean failed = false;
for (Recipe recipe : recipes) {
failed |= register(recipe);
}
return failed;
}
@Override
public boolean remove(Recipe recipe) {
if (recipe instanceof ShapedRecipe) {
Iterator<ShapedRecipe> it = shapedRecipes.iterator();
while (it.hasNext()) {
ShapedRecipe i = it.next();
if (i.equals(recipe)) {
it.remove();
return true;
}
}
}
return false;
}
@Override
public void clear() {
shapedRecipes.clear();
shapelessRecipes.clear();
furnaceRecipes.clear();
fuels.clear();
}
@Override
public List<Recipe> getAllRecipes() {
List<Recipe> recipes = new ArrayList<Recipe>();
recipes.addAll(furnaceRecipes);
recipes.addAll(shapedRecipes);
recipes.addAll(shapelessRecipes);
return recipes;
}
@Override
public List<ShapedRecipe> getShapedRecipes() {
return shapedRecipes;
}
@Override
public List<ShapelessRecipe> getShapelessRecipes() {
return shapelessRecipes;
}
@Override
public ShapedRecipe matchShapedRecipe(List<ItemType> itemType) {
for (ShapedRecipe recipe : getShapedRecipes()) {
if (recipe.getItems().values().containsAll(itemType)) {
return recipe;
}
}
return null;
}
@Override
public ShapelessRecipe matchShapelessRecipe(List<ItemType> itemType) {
for (ShapelessRecipe recipe : getShapelessRecipes()) {
if (recipe.getItems().containsAll(itemType)) {
return recipe;
}
}
return null;
}
@Override
public boolean registerFuel(FurnaceFuel fuel) {
fuels.add(fuel);
return true;
}
@Override
public boolean remove(FurnaceFuel fuel) {
Iterator<FurnaceFuel> it = fuels.iterator();
while (it.hasNext()) {
FurnaceFuel i = it.next();
i.equals(fuel);
it.remove();
return true;
}
return false;
}
@Override
public List<FurnaceFuel> getAllFuels() {
return fuels;
}
@Override
public List<FurnaceRecipe> getFurnaceRecipes() {
return furnaceRecipes;
}
}