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..8729e6a4eab 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,13 +1660,18 @@ 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()) { if (type.ordinal() < extInfo.vanillaCount()) { continue; } + //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()); vanillaMap.put(type, Pair.of("is" + name + "GuiOpen", "is" + name + "FilteringCraftable")); } 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);