package net.obnoxint.mcdev.util;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapedRecipe;
public class SerializableShapedRecipe extends SerializableRecipe {
private static final long serialVersionUID = 7165405366341246113L;
private final Map<Character, SerializableItemStack> ingredients;
private final String[] shape;
public SerializableShapedRecipe(final ShapedRecipe recipe) {
super(RECIPE_TYPE_SHAPED, recipe);
final Map<Character, ItemStack> map = recipe.getIngredientMap();
final Map<Character, SerializableItemStack> in = new HashMap<>();
final String[] sh = recipe.getShape();
final String[] shp = new String[sh.length];
for (final char c : map.keySet()) {
in.put(c, new SerializableItemStack(map.get(c)));
}
System.arraycopy(sh, 0, shp, 0, sh.length);
ingredients = in;
shape = shp;
}
public SerializableItemStack getIngredient(final char c) {
return ingredients.get(c);
}
public Map<Character, SerializableItemStack> getIngredients() {
return Collections.unmodifiableMap(ingredients);
}
public String[] getShape() {
final String[] r = new String[shape.length];
System.arraycopy(shape, 0, r, 0, shape.length);
return r;
}
public ShapedRecipe toShapedRecipe() {
final ShapedRecipe r = new ShapedRecipe(getResult().toItemStack());
for (final char c : ingredients.keySet()) {
r.setIngredient(c, ingredients.get(c).getMaterialData());
}
r.shape(getShape());
return r;
}
}