From e52e42273f8e33e9582bdc09ca5e8d2f8ead80b0 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Mon, 4 Aug 2025 17:12:01 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"fix(bukkit):=20=E4=BF=AE=E5=A4=8D=201?= =?UTF-8?q?.20=20~=201.20.4=20=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 429c33b1eec9b53afb4cdd002b4c583d0cc34948. --- .../item/recipe/BukkitRecipeManager.java | 4 +- .../reflection/minecraft/CoreReflections.java | 5 +- .../core/item/recipe/CustomRecipeResult.java | 42 ++++++++++++++++- .../postprocessor/ApplyItemDataProcessor.java | 46 ------------------- .../recipe/postprocessor/PostProcessors.java | 21 --------- .../core/registry/BuiltInRegistries.java | 2 +- .../craftengine/core/registry/Registries.java | 2 +- 7 files changed, 46 insertions(+), 76 deletions(-) delete mode 100644 core/src/main/java/net/momirealms/craftengine/core/item/recipe/postprocessor/ApplyItemDataProcessor.java delete mode 100644 core/src/main/java/net/momirealms/craftengine/core/item/recipe/postprocessor/PostProcessors.java 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 aa69741ca..7ec945e9c 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 @@ -19,7 +19,6 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemKeys; import net.momirealms.craftengine.core.item.recipe.*; -import net.momirealms.craftengine.core.item.recipe.postprocessor.PostProcessors; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.registry.BuiltInRegistries; @@ -29,8 +28,10 @@ import org.bukkit.NamespacedKey; import org.bukkit.event.HandlerList; import org.bukkit.inventory.ItemStack; +import java.io.IOException; import java.io.Reader; import java.lang.reflect.Array; +import java.sql.Ref; import java.util.*; import java.util.function.BiFunction; import java.util.function.Consumer; @@ -287,7 +288,6 @@ public class BukkitRecipeManager extends AbstractRecipeManager { public BukkitRecipeManager(BukkitCraftEngine plugin) { instance = this; - PostProcessors.init(); this.plugin = plugin; this.recipeEventListener = new RecipeEventListener(plugin, this, plugin.itemManager()); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java index c5b48563d..4877f0aa3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java @@ -3755,14 +3755,11 @@ public final class CoreReflections { methodHandle$ServerConfigurationPacketListenerImpl$finishCurrentTask = ReflectionUtils.unreflectMethod(method$ServerConfigurationPacketListenerImpl$finishCurrentTask) .asType(MethodType.methodType(void.class, Object.class, Object.class)); - } else { - methodHandle$ServerConfigurationPacketListenerImpl$finishCurrentTask = null; - } - if (VersionHelper.isOrAbove1_20_5()) { methodHandle$ServerCommonPacketListenerImpl$closedSetter = ReflectionUtils.unreflectSetter(field$ServerCommonPacketListenerImpl$closed) .asType(MethodType.methodType(void.class, Object.class, boolean.class)); } else { + methodHandle$ServerConfigurationPacketListenerImpl$finishCurrentTask = null; methodHandle$ServerCommonPacketListenerImpl$closedSetter = null; } } catch (ReflectiveOperationException e) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomRecipeResult.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomRecipeResult.java index 0101cb8c9..aff047c53 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomRecipeResult.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomRecipeResult.java @@ -3,13 +3,21 @@ package net.momirealms.craftengine.core.item.recipe; import net.momirealms.craftengine.core.item.BuildableItem; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.registry.BuiltInRegistries; +import net.momirealms.craftengine.core.registry.Registries; +import net.momirealms.craftengine.core.registry.WritableRegistry; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import net.momirealms.craftengine.core.util.ResourceKey; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.Optional; +@SuppressWarnings("unchecked") public record CustomRecipeResult(BuildableItem item, int count, PostProcessor[] postProcessors) { public T buildItemStack(ItemBuildContext context) { @@ -26,8 +34,24 @@ public record CustomRecipeResult(BuildableItem item, int count, PostProces return builtItem; } + static { + registerPostProcessorType(Key.of("apply_data"), args -> { + List> modifiers = new ArrayList<>(); + Map data = ResourceConfigUtils.getAsMap(args.get("data"), "data"); + for (Map.Entry entry : data.entrySet()) { + Optional.ofNullable(BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY.getValue(Key.withDefaultNamespace(entry.getKey(), "craftengine"))) + .ifPresent(factory -> modifiers.add(factory.create(entry.getValue()))); + } + return new ApplyItemDataProcessor<>(modifiers.toArray(new ItemDataModifier[0])); + }); + } + + public static void registerPostProcessorType(Key id, PostProcessor.Type type) { + ((WritableRegistry>) BuiltInRegistries.RECIPE_POST_PROCESSOR_TYPE) + .register(ResourceKey.create(Registries.RECIPE_POST_PROCESSOR_TYPE.location(), id), type); + } + @FunctionalInterface - @SuppressWarnings("unchecked") public interface PostProcessor { static PostProcessor fromMap(Map map) { @@ -47,4 +71,20 @@ public record CustomRecipeResult(BuildableItem item, int count, PostProces PostProcessor create(Map args); } } + + public static class ApplyItemDataProcessor implements PostProcessor { + private final ItemDataModifier[] modifiers; + + public ApplyItemDataProcessor(ItemDataModifier[] modifiers) { + this.modifiers = modifiers; + } + + @Override + public Item process(Item item, ItemBuildContext context) { + for (ItemDataModifier modifier : this.modifiers) { + item.apply(modifier, context); + } + return item; + } + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/postprocessor/ApplyItemDataProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/postprocessor/ApplyItemDataProcessor.java deleted file mode 100644 index a0feb356c..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/postprocessor/ApplyItemDataProcessor.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.momirealms.craftengine.core.item.recipe.postprocessor; - -import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; -import net.momirealms.craftengine.core.item.recipe.CustomRecipeResult; -import net.momirealms.craftengine.core.registry.BuiltInRegistries; -import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -public class ApplyItemDataProcessor implements CustomRecipeResult.PostProcessor { - public static final Type TYPE = new Type<>(); - private final ItemDataModifier[] modifiers; - - public ApplyItemDataProcessor(ItemDataModifier[] modifiers) { - this.modifiers = modifiers; - } - - @Override - public Item process(Item item, ItemBuildContext context) { - for (ItemDataModifier modifier : this.modifiers) { - item.apply(modifier, context); - } - return item; - } - - public static class Type implements CustomRecipeResult.PostProcessor.Type { - - @Override - @SuppressWarnings("unchecked") - public CustomRecipeResult.PostProcessor create(Map args) { - List> modifiers = new ArrayList<>(); - Map data = ResourceConfigUtils.getAsMap(args.get("data"), "data"); - for (Map.Entry entry : data.entrySet()) { - Optional.ofNullable(BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY.getValue(Key.withDefaultNamespace(entry.getKey(), "craftengine"))) - .ifPresent(factory -> modifiers.add(factory.create(entry.getValue()))); - } - return new ApplyItemDataProcessor<>(modifiers.toArray(new ItemDataModifier[0])); - } - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/postprocessor/PostProcessors.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/postprocessor/PostProcessors.java deleted file mode 100644 index d128e1dc0..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/postprocessor/PostProcessors.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.momirealms.craftengine.core.item.recipe.postprocessor; - -import net.momirealms.craftengine.core.item.recipe.CustomRecipeResult; -import net.momirealms.craftengine.core.registry.BuiltInRegistries; -import net.momirealms.craftengine.core.registry.Registries; -import net.momirealms.craftengine.core.registry.WritableRegistry; -import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.util.ResourceKey; - -public class PostProcessors { - public static final Key APPLY_DATA = Key.of("craftengine", "apply_data"); - - public static void init() { - register(APPLY_DATA, ApplyItemDataProcessor.TYPE); - } - - public static void register(Key id, CustomRecipeResult.PostProcessor.Type type) { - ((WritableRegistry>) BuiltInRegistries.RECIPE_POST_PROCESSOR_TYPE) - .register(ResourceKey.create(Registries.RECIPE_POST_PROCESSOR_TYPE.location(), id), type); - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java index 4f646e4bc..fd0da1023 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java @@ -78,7 +78,7 @@ public class BuiltInRegistries { public static final Registry SLOT_DISPLAY_TYPE = createConstantBoundRegistry(Registries.SLOT_DISPLAY_TYPE); public static final Registry RECIPE_DISPLAY_TYPE = createConstantBoundRegistry(Registries.RECIPE_DISPLAY_TYPE); public static final Registry LEGACY_RECIPE_TYPE = createConstantBoundRegistry(Registries.LEGACY_RECIPE_TYPE); - public static final Registry> RECIPE_POST_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.RECIPE_POST_PROCESSOR_TYPE); + public static final Registry> RECIPE_POST_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.RECIPE_POST_PROCESSOR_TYPE); private static Registry createConstantBoundRegistry(ResourceKey> key) { return new ConstantBoundRegistry<>(key); diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java index 5457cc615..e0845e4ff 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java @@ -80,5 +80,5 @@ public class Registries { public static final ResourceKey> SLOT_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("slot_display_type")); public static final ResourceKey> RECIPE_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_display_type")); public static final ResourceKey> LEGACY_RECIPE_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("legacy_recipe_type")); - public static final ResourceKey>> RECIPE_POST_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_post_processor_type")); + public static final ResourceKey>> RECIPE_POST_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_post_processor_type")); }