From 0baeb2256559f4b11d573e8de4d0248f008e8143 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Thu, 13 Feb 2025 03:28:49 +0800 Subject: [PATCH] Refresh recipes --- .../item/recipe/BukkitRecipeManager.java | 2 +- .../craftengine/bukkit/util/Reflections.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java index e27a3811b..18be4b45d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java @@ -257,7 +257,7 @@ public class BukkitRecipeManager implements RecipeManager { } // send to players - + Reflections.method$DedicatedPlayerList$reloadRecipes.invoke(Reflections.field$CraftServer$playerList.get(Bukkit.getServer())); // now we need to remove the fake `exact` if (VersionHelper.isVersionNewerThan1_21_4()) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java index ac2e30ce7..d0536315e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java @@ -4050,4 +4050,28 @@ public class Reflections { } method$RecipeManager$byKey = requireNonNull(method$RecipeManager$byKey0); } + + public static final Class clazz$CraftServer = requireNonNull( + ReflectionUtils.getClazz( + BukkitReflectionUtils.assembleCBClass("CraftServer") + ) + ); + + public static final Class clazz$DedicatedPlayerList = requireNonNull( + ReflectionUtils.getClazz( + BukkitReflectionUtils.assembleMCClass("server.dedicated.DedicatedPlayerList") + ) + ); + + public static final Field field$CraftServer$playerList = requireNonNull( + ReflectionUtils.getDeclaredField( + clazz$CraftServer, clazz$DedicatedPlayerList, 0 + ) + ); + + public static final Method method$DedicatedPlayerList$reloadRecipes = requireNonNull( + ReflectionUtils.getMethod( + clazz$DedicatedPlayerList, new String[] {"reloadRecipeData", "reloadRecipes"} + ) + ); }