--- a/net/minecraft/server/RecipeRepair.java +++ b/net/minecraft/server/RecipeRepair.java @@ -2,12 +2,15 @@ import com.google.common.collect.Lists; import java.util.ArrayList; +import java.util.stream.Stream; -public class RecipeRepair extends IRecipeComplex { +public class RecipeRepair extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends + // CraftBukkit start - Delegate to new parent class public RecipeRepair(MinecraftKey minecraftkey) { - super(minecraftkey); + super(minecraftkey, "", new ItemStack(Items.LEATHER_HELMET), NonNullList.a(RecipeItemStack.a, RecipeItemStack.a(Items.LEATHER_HELMET))); } + // CraftBukkit end public boolean a(IInventory iinventory, World world) { if (!(iinventory instanceof InventoryCrafting)) { @@ -71,6 +74,17 @@ ItemStack itemstack3 = new ItemStack(itemstack2.getItem()); itemstack3.setDamage(i1); + // CraftBukkit start - Construct a dummy repair recipe + if (iinventory instanceof InventoryCrafting) { + InventoryCrafting inventorycrafting = (InventoryCrafting) iinventory; + NonNullList<RecipeItemStack> ingredients = NonNullList.a(); + ingredients.add(new RecipeItemStack(Stream.of(new RecipeItemStack.StackProvider(itemstack2.cloneItemStack())))); + ingredients.add(new RecipeItemStack(Stream.of(new RecipeItemStack.StackProvider(itemstack.cloneItemStack())))); + ShapelessRecipes recipe = new ShapelessRecipes(new MinecraftKey("repairitem"), "", itemstack3.cloneItemStack(), ingredients); + inventorycrafting.setCurrentRecipe(recipe); + itemstack3 = org.bukkit.craftbukkit.event.CraftEventFactory.callPreCraftEvent(inventorycrafting, inventorycrafting.resultInventory, itemstack3, inventorycrafting.container.getBukkitView(), true); + } + // CraftBukkit end return itemstack3; } }