package com.laytonsmith.abstraction.bukkit;
import com.laytonsmith.abstraction.MCItemStack;
import com.laytonsmith.abstraction.MCShapelessRecipe;
import com.laytonsmith.abstraction.enums.MCRecipeType;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapelessRecipe;
/**
*
* @author jb_aero
*/
public class BukkitMCShapelessRecipe extends BukkitMCRecipe implements MCShapelessRecipe {
ShapelessRecipe r;
public BukkitMCShapelessRecipe(ShapelessRecipe recipe) {
super(recipe);
r = recipe;
}
public BukkitMCShapelessRecipe(MCItemStack result) {
this(new ShapelessRecipe(((BukkitMCItemStack) result).asItemStack()));
}
@Override
public MCRecipeType getRecipeType() {
return MCRecipeType.SHAPELESS;
}
@Override
public Object getHandle() {
return r;
}
@Override
public MCItemStack getResult() {
return new BukkitMCItemStack(r.getResult());
}
@Override
public List<MCItemStack> getIngredients() {
List<MCItemStack> ret = new ArrayList<MCItemStack>();
for (ItemStack is : r.getIngredientList()) {
ret.add(new BukkitMCItemStack(is));
}
return ret;
}
@Override
public MCShapelessRecipe addIngredient(MCItemStack ingredient) {
int type = ingredient.getTypeId();
int data = 0;
if (type < 256) {
data = ingredient.getData() != null ? ingredient.getData().getData() : 0;
} else {
data = ingredient.getDurability();
}
return this.addIngredient(type, data, ingredient.getAmount());
}
@Override
public MCShapelessRecipe addIngredient(int type, int data, int amount) {
r.addIngredient(amount, Material.getMaterial(type), data);
return this;
}
@Override
public MCShapelessRecipe removeIngredient(MCItemStack ingredient) {
int type = ingredient.getTypeId();
int data = 0;
if (type < 256) {
data = ingredient.getData() != null ? ingredient.getData().getData() : 0;
} else {
data = ingredient.getDurability();
}
return this.removeIngredient(type, data, ingredient.getAmount());
}
@Override
public MCShapelessRecipe removeIngredient(int type, int data, int amount) {
r.removeIngredient(amount, Material.getMaterial(type), data);
return this;
}
}