From 0d770c21c4670c2a0369c852cafb08e96298966f Mon Sep 17 00:00:00 2001 From: Geolykt Date: Sat, 12 Jun 2021 00:50:34 +0200 Subject: [PATCH] Fix Fire and Burst issues Not a 1.17 related issue this time around --- .../enchantments_plus/evt/WatcherEnchant.java | 2 +- .../enchantments_plus/util/RecipeUtil.java | 23 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/geolykt/enchantments_plus/evt/WatcherEnchant.java b/src/main/java/de/geolykt/enchantments_plus/evt/WatcherEnchant.java index 63168e4..666cf31 100644 --- a/src/main/java/de/geolykt/enchantments_plus/evt/WatcherEnchant.java +++ b/src/main/java/de/geolykt/enchantments_plus/evt/WatcherEnchant.java @@ -245,7 +245,7 @@ public final byte protectedBlockQuery(Block block, boolean netherstep_remove, bo return 0; } - @EventHandler(ignoreCancelled = true) + @EventHandler(ignoreCancelled = false) public void onBlockInteract(PlayerInteractEvent evt) { if (evt.getAction() == Action.PHYSICAL) { return; diff --git a/src/main/java/de/geolykt/enchantments_plus/util/RecipeUtil.java b/src/main/java/de/geolykt/enchantments_plus/util/RecipeUtil.java index 4a33af2..eca83a4 100644 --- a/src/main/java/de/geolykt/enchantments_plus/util/RecipeUtil.java +++ b/src/main/java/de/geolykt/enchantments_plus/util/RecipeUtil.java @@ -26,6 +26,7 @@ import org.bukkit.inventory.FurnaceRecipe; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.Recipe; +import org.bukkit.inventory.RecipeChoice; /** * This class has the goal of replacing the rigid CompatibilityAdapter with something more Soft-coded.
@@ -43,19 +44,19 @@ private static ItemStack getSmeltedVariant(ItemStack input) { Iterator recipes = Bukkit.recipeIterator(); while (recipes.hasNext()) { Recipe recipe = recipes.next(); - if (!(recipe instanceof FurnaceRecipe)) { - continue; + if (recipe instanceof FurnaceRecipe) { + RecipeChoice choice = ((FurnaceRecipe) recipe).getInputChoice(); + if (!choice.test(input)) { + continue; + } + ItemStack predone = recipe.getResult(); + predone.setAmount(predone.getAmount()*input.getAmount()); + return predone; } - if (((FurnaceRecipe) recipe).getInput().getType() != input.getType()) { - continue; - } - ItemStack predone = recipe.getResult(); - predone.setAmount(predone.getAmount()*input.getAmount()); - return predone; } return new ItemStack(Material.AIR); } - + /** * Recipe cache for smelting recipes */ @@ -80,10 +81,10 @@ public static ItemStack getSmeltedVariant(ItemStack input, boolean updateCache) out.setAmount(out.getAmount()*input.getAmount()); return out; } - + private static final HashMap cacheDuration = new HashMap<>(); public static final int REFRESH_EVERY = 60000; // Refresh every minute - + /** * Returns the smelted Itemstack based on a given ItemStack.
* Does not account for stack capacity!