summaryrefslogtreecommitdiffstats
path: root/nms-patches/RecipeRepair.patch
blob: 388dbc10abb4297433c0219dfa2658bd6a9f18b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
--- 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;
             }
         }