1 package org.bukkit.inventory;
3 import java.util.HashMap;
6 import org.apache.commons.lang.Validate;
8 import org.bukkit.Material;
9 import org.bukkit.material.MaterialData;
16 private String[] rows;
17 private Map<Character, ItemStack> ingredients =
new HashMap<Character, ItemStack>();
43 Validate.notNull(
shape,
"Must provide a shape");
44 Validate.isTrue(
shape.length > 0 &&
shape.length < 4,
"Crafting recipes should be 1, 2, 3 rows, not ",
shape.length);
46 for (String row :
shape) {
47 Validate.notNull(row,
"Shape cannot have null rows");
48 Validate.isTrue(row.length() > 0 && row.length() < 4,
"Crafting rows should be 1, 2, or 3 characters, not ", row.length());
50 this.rows =
new String[shape.length];
51 for (
int i = 0; i < shape.length; i++) {
52 this.rows[i] = shape[i];
56 HashMap<Character, ItemStack> newIngredients =
new HashMap<Character, ItemStack>();
57 for (String row : shape) {
58 for (Character c : row.toCharArray()) {
59 newIngredients.put(c, ingredients.get(c));
62 this.ingredients = newIngredients;
98 Validate.isTrue(ingredients.containsKey(key),
"Symbol does not appear in the shape:", key);
99 ingredients.put(key,
new ItemStack(ingredient, 1, (
short) raw));
109 HashMap<Character, ItemStack> result =
new HashMap<Character, ItemStack>();
110 for (Map.Entry<Character,
ItemStack> ingredient : ingredients.entrySet()) {
111 if (ingredient.getValue() == null) {
112 result.put(ingredient.getKey(), null);
114 result.put(ingredient.getKey(), ingredient.getValue().clone());
135 return output.
clone();