From 3b479df487d00ea29ba85dea5273e27911a6d9e7 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Thu, 30 Dec 2021 02:42:16 -0600 Subject: [PATCH] Expose isFuel and canSmelt methods to FurnaceInventory (#7181) --- ...d-canSmelt-methods-to-FurnaceInvento.patch | 35 +++++++++++++++++++ ...d-canSmelt-methods-to-FurnaceInvento.patch | 31 ++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 patches/api/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch create mode 100644 patches/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch diff --git a/patches/api/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/api/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch new file mode 100644 index 0000000000..df0ae4d59e --- /dev/null +++ b/patches/api/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Thu, 23 Dec 2021 15:32:40 -0600 +Subject: [PATCH] Expose isFuel and canSmelt methods to FurnaceInventory + + +diff --git a/src/main/java/org/bukkit/inventory/FurnaceInventory.java b/src/main/java/org/bukkit/inventory/FurnaceInventory.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/inventory/FurnaceInventory.java ++++ b/src/main/java/org/bukkit/inventory/FurnaceInventory.java +@@ -0,0 +0,0 @@ public interface FurnaceInventory extends Inventory { + */ + void setSmelting(@Nullable ItemStack stack); + ++ // Paper start ++ /** ++ * Check if an item can be used as a fuel source in this furnace container ++ * ++ * @param item Item to check ++ * @return True if a valid fuel source ++ */ ++ public boolean isFuel(@Nullable ItemStack item); ++ ++ /** ++ * Check if an item can be smelted in this furnace container ++ * ++ * @param item Item to check ++ * @return True if can be smelt ++ */ ++ public boolean canSmelt(@Nullable ItemStack item); ++ // Paper end ++ + @Override + @Nullable + Furnace getHolder(); diff --git a/patches/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch new file mode 100644 index 0000000000..5f75625e7f --- /dev/null +++ b/patches/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Thu, 23 Dec 2021 15:32:50 -0600 +Subject: [PATCH] Expose isFuel and canSmelt methods to FurnaceInventory + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java +@@ -0,0 +0,0 @@ public class CraftInventoryFurnace extends CraftInventory implements FurnaceInve + setItem(0, stack); + } + ++ // Paper start ++ @Override ++ public boolean isFuel(ItemStack stack) { ++ return stack != null && !stack.getType().isEmpty() && AbstractFurnaceBlockEntity.isFuel(CraftItemStack.asNMSCopy(stack)); ++ } ++ ++ @Override ++ public boolean canSmelt(ItemStack stack) { ++ // data packs are always loaded in the main world ++ net.minecraft.server.level.ServerLevel world = ((org.bukkit.craftbukkit.CraftWorld) org.bukkit.Bukkit.getWorlds().get(0)).getHandle(); ++ return stack != null && !stack.getType().isEmpty() && world.getRecipeManager().getRecipeFor(((AbstractFurnaceBlockEntity) this.inventory).recipeType, new net.minecraft.world.SimpleContainer(CraftItemStack.asNMSCopy(stack)), world).isPresent(); ++ } ++ // Paper end ++ + @Override + public Furnace getHolder() { + return (Furnace) inventory.getOwner();