- Баллы
- 76
Я переделал либу @alexandrage на крафты, чтобы вместо массивов юзать хэшкарту. Когда все предметы имеют обозначение и у них есть предмет всё нормально, но стоит мне только добавить воздух как мне начинает вылетать NPE. Что мне сделать чтобы это исправить. P.s на прежнюю версию я не хочу пересаживаться, ну или хотя бы узнаю в чём ошибка была.
Код:
public static void addRecipe(ItemStack stack, String[] shape, HashMap<Character, ItemStack> ingredients) {
Plugin plugin = Plugin.getPlugin();
if (stack == null) {
throw new IllegalArgumentException("Result cannot be null.");
}
ShapedRecipe rc = new ShapedRecipe(new NamespacedKey(plugin, UUID.randomUUID().toString()), stack);
rc.shape(shape);
Craft cr = new Craft();
cr.add(stack);
ingredients.forEach((c,i)-> rc.setIngredient(c,i.getType()));
String shape_string = shape[0]+shape[1]+shape[2];
for (char c:shape_string.toCharArray()) {
if(c == ' '){
cr.add(new ItemStack(Material.AIR));
}
cr.add(ingredients.get(c));
}
for (ItemStack itemStack : cr.stacks) {
System.out.println(itemStack.getType());
}
Bukkit.getServer().addRecipe(rc);
craft.put(rc.getKey().getKey(), cr);
}