package com.laytonsmith.abstraction.bukkit; import com.laytonsmith.abstraction.MCItemStack; import com.laytonsmith.abstraction.MCMaterialData; import com.laytonsmith.abstraction.MCShapedRecipe; import com.laytonsmith.abstraction.StaticLayer; import com.laytonsmith.abstraction.enums.MCRecipeType; import java.util.HashMap; import java.util.Map; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ShapedRecipe; public class BukkitMCShapedRecipe extends BukkitMCRecipe implements MCShapedRecipe { ShapedRecipe r; public BukkitMCShapedRecipe(ShapedRecipe recipe) { super(recipe); r = recipe; } public BukkitMCShapedRecipe(MCItemStack result) { this(new ShapedRecipe(((BukkitMCItemStack) result).asItemStack())); } @Override public MCRecipeType getRecipeType() { return MCRecipeType.SHAPED; } @Override public Object getHandle() { return r; } @Override public Map<Character, MCItemStack> getIngredientMap() { Map<Character, MCItemStack> ret = new HashMap<Character, MCItemStack>(); for (Map.Entry<Character, ItemStack> e : r.getIngredientMap().entrySet()) { ret.put(e.getKey(), new BukkitMCItemStack(e.getValue())); } return ret; } @Override public MCItemStack getResult() { return new BukkitMCItemStack(r.getResult()); } @Override public String[] getShape() { return r.getShape(); } @Override public MCShapedRecipe setIngredient(char key, MCItemStack ingredient) { // int type = ingredient.getTypeId(); // int data = 0; // if (type < 256) { // data = ingredient.getData() != null ? ingredient.getData().getData() : 0; // } else { // data = ingredient.getDurability(); // } MCMaterialData data = null; if (ingredient.getTypeId() != 0) { data = ingredient.getData(); } return this.setIngredient(key, data); } @Override public MCShapedRecipe setIngredient(char key, int type, int data) { MCMaterialData md = null; if (type != 0) { md = StaticLayer.GetItemStack(type, data, 1).getData(); } return this.setIngredient(key, md); } @Override public MCShapedRecipe setIngredient(char key, MCMaterialData data) { if (data != null) { r.setIngredient(key, ((BukkitMCMaterialData)data).md); } return this; } @Override public MCShapedRecipe setShape(String[] shape) { r.shape(shape); return this; } }