From 88be77fa616dbc905b493146e7ad4e8f921fdc85 Mon Sep 17 00:00:00 2001 From: Acuadragon100 <30689683+Acuadragon100@users.noreply.github.com> Date: Thu, 21 May 2026 17:08:05 +0200 Subject: [PATCH 1/3] Use reflection for recipe type extension info. --- src/main/java/net/neoforged/neoforge/client/ClientHooks.java | 4 ++-- src/main/java/net/neoforged/neoforge/common/CommonHooks.java | 4 ++-- .../neoforge/network/configuration/CheckExtensibleEnums.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java index 837d8e2e4c6..0eb3d0c96f7 100644 --- a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java +++ b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java @@ -94,6 +94,7 @@ import net.neoforged.neoforge.forge.snapshots.ForgeSnapshotsModClient; import net.neoforged.neoforge.gametest.GameTestHooks; import net.neoforged.neoforge.internal.versions.neoforge.NeoForgeVersion; +import net.neoforged.neoforge.network.configuration.CheckExtensibleEnums; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; @@ -104,7 +105,6 @@ import org.joml.Vector3f; import xyz.bluspring.kilt.injections.client.gui.screens.MenuScreensInjection; import xyz.bluspring.kilt.injections.client.renderer.ShaderInstanceInjection; -import xyz.bluspring.kilt.injections.world.inventory.RecipeBookTypeInjection; import net.minecraft.FileUtil; import net.minecraft.client.Camera; @@ -1128,7 +1128,7 @@ public static List getEffectTooltip(EffectRenderingInventoryScreen return event.getTooltip(); } - private static final ExtensionInfo RECIPE_BOOK_TYPE_EXTENSION_INFO = RecipeBookTypeInjection.getExtensionInfo(); + private static final ExtensionInfo RECIPE_BOOK_TYPE_EXTENSION_INFO = CheckExtensibleEnums.getEnumExtensionInfo(RecipeBookType.class); private static final RecipeBookType[] RECIPE_BOOK_TYPES = RecipeBookType.values(); private static RecipeBookType @Nullable [] cachedFilteredTypes = null; diff --git a/src/main/java/net/neoforged/neoforge/common/CommonHooks.java b/src/main/java/net/neoforged/neoforge/common/CommonHooks.java index 4b72c7191be..469631db28e 100644 --- a/src/main/java/net/neoforged/neoforge/common/CommonHooks.java +++ b/src/main/java/net/neoforged/neoforge/common/CommonHooks.java @@ -96,6 +96,7 @@ import net.neoforged.neoforge.event.level.NoteBlockEvent; import net.neoforged.neoforge.event.level.block.CropGrowEvent; import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.network.configuration.CheckExtensibleEnums; import net.neoforged.neoforge.registries.NeoForgeRegistries; import net.neoforged.neoforge.resource.ResourcePackLoader; import net.neoforged.neoforge.server.ServerLifecycleHooks; @@ -111,7 +112,6 @@ import xyz.bluspring.kilt.injections.nbt.CompoundTagInjection; import xyz.bluspring.kilt.injections.nbt.ListTagInjection; import xyz.bluspring.kilt.injections.world.entity.ai.attributes.AttributeSupplierBuilderInjection; -import xyz.bluspring.kilt.injections.world.inventory.RecipeBookTypeInjection; import net.minecraft.ChatFormatting; import net.minecraft.ResourceLocationException; @@ -1660,7 +1660,7 @@ public static boolean tryDispenseShearsHarvestBlock(BlockSource source, ItemStac } public static Map> buildRecipeBookTypeTagFields(Map> vanillaMap) { - ExtensionInfo extInfo = RecipeBookTypeInjection.getExtensionInfo(); + ExtensionInfo extInfo = CheckExtensibleEnums.getEnumExtensionInfo(RecipeBookType.class); if (extInfo.extended()) { vanillaMap = new HashMap<>(vanillaMap); for (RecipeBookType type : RecipeBookType.values()) { diff --git a/src/main/java/net/neoforged/neoforge/network/configuration/CheckExtensibleEnums.java b/src/main/java/net/neoforged/neoforge/network/configuration/CheckExtensibleEnums.java index 9a1c456ba33..c1c87229619 100644 --- a/src/main/java/net/neoforged/neoforge/network/configuration/CheckExtensibleEnums.java +++ b/src/main/java/net/neoforged/neoforge/network/configuration/CheckExtensibleEnums.java @@ -193,7 +193,7 @@ private static synchronized Map getEnumEntries() { return enumEntries; } - private static ExtensionInfo getEnumExtensionInfo(Class> enumClass) { + public static ExtensionInfo getEnumExtensionInfo(Class> enumClass) { try { Method mth = enumClass.getDeclaredMethod("getExtensionInfo"); return (ExtensionInfo) mth.invoke(null); From 974d70a1e377e1fff9b0d0c79d4cddec058393dc Mon Sep 17 00:00:00 2001 From: Acuadragon100 <30689683+Acuadragon100@users.noreply.github.com> Date: Fri, 22 May 2026 11:54:39 +0200 Subject: [PATCH 2/3] Add edge case to handle Fabric mods. --- src/main/java/net/neoforged/neoforge/common/CommonHooks.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/neoforged/neoforge/common/CommonHooks.java b/src/main/java/net/neoforged/neoforge/common/CommonHooks.java index 469631db28e..dea1170b1ef 100644 --- a/src/main/java/net/neoforged/neoforge/common/CommonHooks.java +++ b/src/main/java/net/neoforged/neoforge/common/CommonHooks.java @@ -1667,6 +1667,10 @@ public static Map> buildRecipeBookTypeTagFi if (type.ordinal() < extInfo.vanillaCount()) { continue; } + //Kilt: Fabric mods might already have added themselves here. + if (vanillaMap.containsKey(type)) { + continue; + } String name = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, type.name()); vanillaMap.put(type, Pair.of("is" + name + "GuiOpen", "is" + name + "FilteringCraftable")); } From 1ea211f1eb04c7caa98241e7673f2917666d587d Mon Sep 17 00:00:00 2001 From: Acuadragon100 <30689683+Acuadragon100@users.noreply.github.com> Date: Fri, 22 May 2026 12:15:56 +0200 Subject: [PATCH 3/3] Add warning when entry exists --- src/main/java/net/neoforged/neoforge/common/CommonHooks.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/neoforged/neoforge/common/CommonHooks.java b/src/main/java/net/neoforged/neoforge/common/CommonHooks.java index dea1170b1ef..8729e6a4eab 100644 --- a/src/main/java/net/neoforged/neoforge/common/CommonHooks.java +++ b/src/main/java/net/neoforged/neoforge/common/CommonHooks.java @@ -1669,6 +1669,7 @@ public static Map> buildRecipeBookTypeTagFi } //Kilt: Fabric mods might already have added themselves here. if (vanillaMap.containsKey(type)) { + LOGGER.warn("Existing tag fields found for non-vanilla RecipeBookType enum {} {}. These will be used instead of the NeoForge (Kilt) defaults.", type, vanillaMap.get(type)); continue; } String name = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, type.name());