aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0341-Furnace-RecipesUsed-API.patch
diff options
context:
space:
mode:
authorShane Freeder <[email protected]>2024-05-09 14:51:33 +0100
committerShane Freeder <[email protected]>2024-05-09 14:51:33 +0100
commit3693bbdc6b65e68db10375d3eeab70f06708b729 (patch)
tree4a71a5e6e5f50b3e2937053a5d4b4196ef67665b /patches/api/0341-Furnace-RecipesUsed-API.patch
parentf2512b12385961f8ca1f69efebe5ed0e00c0caa8 (diff)
downloadPaper-3693bbdc6b65e68db10375d3eeab70f06708b729.tar.gz
Paper-3693bbdc6b65e68db10375d3eeab70f06708b729.zip
Use internals for getting block/entity countstimings/use-internals
For a long time I've been meaning to move some of this logic internally as this would allow us to avoid hitting systems like block state snapshots which can create issues as many of the spigot implementations of this stuff are increasingly broken, leading to unexpected crashes during ticking, even if the API cannot properly interact with these such states/items, it's generally more preferable to not crash the server in the course, and just let those interactions fail more gracefully.
Diffstat (limited to 'patches/api/0341-Furnace-RecipesUsed-API.patch')
-rw-r--r--patches/api/0341-Furnace-RecipesUsed-API.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/patches/api/0341-Furnace-RecipesUsed-API.patch b/patches/api/0341-Furnace-RecipesUsed-API.patch
new file mode 100644
index 0000000000..7fed82db21
--- /dev/null
+++ b/patches/api/0341-Furnace-RecipesUsed-API.patch
@@ -0,0 +1,51 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Thu, 13 Jan 2022 15:21:08 -0800
+Subject: [PATCH] Furnace RecipesUsed API
+
+
+diff --git a/src/main/java/org/bukkit/block/Furnace.java b/src/main/java/org/bukkit/block/Furnace.java
+index dbdf3dbe9517b09a7965cf9d65cae1edd87af67d..8745e5aeaa81cd42d6625f415c623daa28776647 100644
+--- a/src/main/java/org/bukkit/block/Furnace.java
++++ b/src/main/java/org/bukkit/block/Furnace.java
+@@ -92,6 +92,40 @@ public interface Furnace extends Container {
+ * @throws IllegalArgumentException if value is more than 200
+ */
+ public void setCookSpeedMultiplier(double multiplier);
++
++ /**
++ * Gets the number of times a recipe has been used since the
++ * last player removed items from the result slot. This is used
++ * to calculate experience rewards when withdrawing items from furnaces.
++ *
++ * @param furnaceRecipe the recipe to query the count for
++ * @return the count or 0 if none found
++ */
++ int getRecipeUsedCount(@NotNull org.bukkit.NamespacedKey furnaceRecipe);
++
++ /**
++ * Checks if the recipe has a used count present on this furnace.
++ *
++ * @param furnaceRecipe the recipe to check if a count exists for
++ * @return true if there is a positive count, else false
++ */
++ boolean hasRecipeUsedCount(@NotNull org.bukkit.NamespacedKey furnaceRecipe);
++
++ /**
++ * Sets the number of times a recipe has been used. This is used
++ * to calculate experience rewards when withdrawing items from furnaces.
++ *
++ * @param furnaceRecipe the recipe to set the count for
++ * @param count the count, a non-positive number will remove the recipe
++ */
++ void setRecipeUsedCount(@NotNull org.bukkit.inventory.CookingRecipe<?> furnaceRecipe, int count);
++
++ /**
++ * Sets all recipes used by this furnace.
++ *
++ * @param recipesUsed the recipes used
++ */
++ void setRecipesUsed(@NotNull Map<CookingRecipe<?>, Integer> recipesUsed);
+ // Paper end
+
+ @NotNull