From 5c9d3c6b1aa8b19ec5223226ea1859509483b3c0 Mon Sep 17 00:00:00 2001 From: Chris Ward Date: Tue, 1 Jan 2013 02:26:04 +1100 Subject: [PATCH] Fix recipe NPE/failed display in game --- .../essentials/commands/Commandrecipe.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java index e5c69a88b..4325f13d8 100755 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java @@ -97,11 +97,18 @@ public class Commandrecipe extends EssentialsCommand final User user = ess.getUser(sender); user.setRecipeSee(true); final InventoryView view = user.openWorkbench(null, true); - final String shapeMap = recipe.getShape().length == 2 ? " abecdfghi" : " abcdefghi"; - for (Entry e : ((ShapedRecipe)recipe).getIngredientMap().entrySet()) - { - e.getValue().setAmount(0); - view.setItem(shapeMap.indexOf(e.getKey()), e.getValue()); + for (int j = 0; j < recipe.getShape().length; j++) + { + for (int k = 0; k < recipe.getShape()[j].length(); k++) + { + ItemStack item = recipe.getIngredientMap().get(recipe.getShape()[j].toCharArray()[k]); + if(item == null) + { + continue; + } + item.setAmount(0); + view.getTopInventory().setItem(j * 3 + k + 1, item); + } } }