diff options
author | md_5 <git@md-5.net> | 2018-11-03 21:04:33 +1100 |
---|---|---|
committer | md_5 <git@md-5.net> | 2018-11-03 21:04:33 +1100 |
commit | f0398e444e43a9c63249e668eb85f5fecbb4b6db (patch) | |
tree | f6e90e715de2b19419e371ba5ff6556fc017368a | |
parent | 96c461b3a528611ab4d4e22d71c63e10f9a1d034 (diff) | |
download | craftbukkit-f0398e444e43a9c63249e668eb85f5fecbb4b6db.tar craftbukkit-f0398e444e43a9c63249e668eb85f5fecbb4b6db.tar.gz craftbukkit-f0398e444e43a9c63249e668eb85f5fecbb4b6db.tar.lz craftbukkit-f0398e444e43a9c63249e668eb85f5fecbb4b6db.tar.xz craftbukkit-f0398e444e43a9c63249e668eb85f5fecbb4b6db.zip |
SPIGOT-4438: Add choice API to furnace recipes
-rw-r--r-- | nms-patches/FurnaceRecipe.patch | 20 | ||||
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java | 13 |
2 files changed, 20 insertions, 13 deletions
diff --git a/nms-patches/FurnaceRecipe.patch b/nms-patches/FurnaceRecipe.patch index 4d150e73..a26f71d9 100644 --- a/nms-patches/FurnaceRecipe.patch +++ b/nms-patches/FurnaceRecipe.patch @@ -1,17 +1,23 @@ --- a/net/minecraft/server/FurnaceRecipe.java +++ b/net/minecraft/server/FurnaceRecipe.java -@@ -2,6 +2,10 @@ +@@ -2,6 +2,16 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; ++// CraftBukkit start ++import java.util.ArrayList; ++import java.util.List; +import org.bukkit.craftbukkit.inventory.CraftFurnaceRecipe; +import org.bukkit.craftbukkit.inventory.CraftItemStack; ++import org.bukkit.craftbukkit.util.CraftMagicNumbers; +import org.bukkit.craftbukkit.util.CraftNamespacedKey; +import org.bukkit.inventory.Recipe; ++import org.bukkit.inventory.RecipeChoice; ++// CraftBukkit end public class FurnaceRecipe implements IRecipe { -@@ -56,6 +60,19 @@ +@@ -56,6 +66,23 @@ return this.key; } @@ -20,9 +26,13 @@ + CraftItemStack result = CraftItemStack.asCraftMirror(this.result); + RecipeItemStack list = this.ingredient; + list.buildChoices(); -+ net.minecraft.server.ItemStack stack = list.choices[0]; + -+ CraftFurnaceRecipe recipe = new CraftFurnaceRecipe(CraftNamespacedKey.fromMinecraft(this.key), result, CraftItemStack.asCraftMirror(stack), this.experience, this.cookingTime); ++ List<org.bukkit.Material> choices = new ArrayList<>(list.choices.length); ++ for (ItemStack i : list.choices) { ++ choices.add(CraftMagicNumbers.getMaterial(i.getItem())); ++ } ++ ++ CraftFurnaceRecipe recipe = new CraftFurnaceRecipe(CraftNamespacedKey.fromMinecraft(this.key), result, new RecipeChoice.MaterialChoice(choices), this.experience, this.cookingTime); + recipe.setGroup(this.group); + + return recipe; @@ -31,7 +41,7 @@ public static class a implements RecipeSerializer<FurnaceRecipe> { public a() {} -@@ -106,11 +123,11 @@ +@@ -106,11 +133,11 @@ return "smelting"; } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java index a3c3f6e3..4ae2fafb 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java @@ -1,24 +1,22 @@ package org.bukkit.craftbukkit.inventory; -import java.util.stream.Stream; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.RecipeItemStack; - import org.bukkit.NamespacedKey; import org.bukkit.craftbukkit.util.CraftNamespacedKey; import org.bukkit.inventory.FurnaceRecipe; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.RecipeChoice; public class CraftFurnaceRecipe extends FurnaceRecipe implements CraftRecipe { - public CraftFurnaceRecipe(NamespacedKey key, ItemStack result, ItemStack source, float experience, int cookingTime) { - super(key, result, source.getType(), source.getDurability(), experience, cookingTime); + public CraftFurnaceRecipe(NamespacedKey key, ItemStack result, RecipeChoice source, float experience, int cookingTime) { + super(key, result, source, experience, cookingTime); } public static CraftFurnaceRecipe fromBukkitRecipe(FurnaceRecipe recipe) { if (recipe instanceof CraftFurnaceRecipe) { return (CraftFurnaceRecipe) recipe; } - CraftFurnaceRecipe ret = new CraftFurnaceRecipe(recipe.getKey(), recipe.getResult(), recipe.getInput(), recipe.getExperience(), recipe.getCookingTime()); + CraftFurnaceRecipe ret = new CraftFurnaceRecipe(recipe.getKey(), recipe.getResult(), recipe.getInputChoice(), recipe.getExperience(), recipe.getCookingTime()); ret.setGroup(recipe.getGroup()); return ret; } @@ -26,8 +24,7 @@ public class CraftFurnaceRecipe extends FurnaceRecipe implements CraftRecipe { @Override public void addToCraftingManager() { ItemStack result = this.getResult(); - RecipeItemStack input = new RecipeItemStack(Stream.of(new RecipeItemStack.StackProvider(CraftItemStack.asNMSCopy(this.getInput())))); - MinecraftServer.getServer().getCraftingManager().a(new net.minecraft.server.FurnaceRecipe(CraftNamespacedKey.toMinecraft(this.getKey()), this.getGroup(), input, CraftItemStack.asNMSCopy(result), getExperience(), getCookingTime())); + MinecraftServer.getServer().getCraftingManager().a(new net.minecraft.server.FurnaceRecipe(CraftNamespacedKey.toMinecraft(this.getKey()), this.getGroup(), toNMS(this.getInputChoice()), CraftItemStack.asNMSCopy(result), getExperience(), getCookingTime())); } } |