diff --git a/build.gradle b/build.gradle index 8c4ec2e..e8f03eb 100644 --- a/build.gradle +++ b/build.gradle @@ -127,73 +127,29 @@ sourceSets.main.resources { srcDir 'src/generated/resources' } // 暂时排除缺少依赖的可选联动源码,待补齐依赖后再启用 sourceSets.main.java { - // 让编译期能解析 ExtendedAE 的类(如 GuiExPatternProvider、ActionEPPButton 等),作为编译期源引用 - // 运行期仍由 CurseMaven 依赖提供真实模组 Jar + // 编译期引入 ExtendedAE 源码(仅作编译期引用,运行期由依赖提供) srcDir 'othermods/ExtendedAE-1.21-2.2.21-neoforge/src/main/java' - // 分阶段迁移:仅编译样板倍增与必要 GUI/网络相关的核心代码,屏蔽未迁移联动与旧版 Forge API 代码 - include 'com/extendedae_plus/ExtendedAEPlus.java' - include 'com/extendedae_plus/ExtendedAEPlusClient.java' - include 'com/extendedae_plus/config/**' - include 'com/extendedae_plus/api/**' - - // util - include 'com/extendedae_plus/util/ExtendedAELogger.java' - include 'com/extendedae_plus/util/PatternProviderDataUtil.java' - include 'com/extendedae_plus/util/PatternProviderUIHelper.java' - include 'com/extendedae_plus/util/PatternScaler.java' - include 'com/extendedae_plus/util/RequestedAmountHolder.java' - // util needed by network payloads (providers listing / upload helpers) - include 'com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java' - // util for wireless terminal discovery used by new payloads - include 'com/extendedae_plus/util/WirelessTerminalLocator.java' - - // content(最小集) - include 'com/extendedae_plus/content/ClientPatternHighlightStore.java' - include 'com/extendedae_plus/content/ScaledProcessingPattern.java' - - // client-side helpers needed by S2C payloads - include 'com/extendedae_plus/client/ClientAdvancedBlockingState.java' - include 'com/extendedae_plus/client/ui/ProviderSelectScreen.java' - - // 网络(NeoForge 1.21 Payload API版本) - include 'com/extendedae_plus/network/ModNetwork.java' - include 'com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java' - include 'com/extendedae_plus/network/ToggleSmartDoublingC2SPacket.java' - include 'com/extendedae_plus/network/ScalePatternsC2SPacket.java' - include 'com/extendedae_plus/network/SetPatternHighlightS2CPacket.java' - include 'com/extendedae_plus/network/AdvancedBlockingSyncS2CPacket.java' - include 'com/extendedae_plus/network/ProvidersListS2CPacket.java' - include 'com/extendedae_plus/network/RequestProvidersListC2SPacket.java' - include 'com/extendedae_plus/network/SetProviderPageS2CPacket.java' - include 'com/extendedae_plus/network/CraftingMonitorJumpC2SPacket.java' - include 'com/extendedae_plus/network/CraftingMonitorOpenProviderC2SPacket.java' - include 'com/extendedae_plus/network/OpenProviderUiC2SPacket.java' - include 'com/extendedae_plus/network/GlobalToggleProviderModesC2SPacket.java' - include 'com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java' - // newly added custom payloads (NeoForge 1.21) - include 'com/extendedae_plus/network/OpenCraftFromJeiC2SPacket.java' - include 'com/extendedae_plus/network/PickFromWirelessC2SPacket.java' - include 'com/extendedae_plus/network/PullFromJeiOrCraftC2SPacket.java' - - // AE2 mixin:accessor/helpers/autopattern/gui/menu - include 'com/extendedae_plus/mixin/ae2/accessor/**' - include 'com/extendedae_plus/mixin/ae2/helpers/**' - include 'com/extendedae_plus/mixin/ae2/AEProcessingPatternMixin.java' - include 'com/extendedae_plus/mixin/ae2/autopattern/**' - include 'com/extendedae_plus/mixin/ae2/client/gui/PatternProviderScreenMixin.java' - include 'com/extendedae_plus/mixin/ae2/menu/PatternProviderMenuAdvancedMixin.java' - include 'com/extendedae_plus/mixin/ae2/menu/PatternProviderMenuDoublingMixin.java' - - // ExtendedAE GUI 混入(右侧外列按钮与翻页),以及其依赖的 NewIcon 类 - include 'com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java' - include 'com/extendedae_plus/NewIcon.java' - - // 重新启用已适配的 Curios 定位器(基于 wtlib API 包) - include 'com/extendedae_plus/menu/locator/CuriosItemLocator.java' - // 仍然暂不编译自定义宿主,等待完全适配后再启用 - // include 'com/extendedae_plus/menu/host/CuriosWirelessTerminalMenuHost.java' - // include 'com/extendedae_plus/menu/host/CuriosWTMenuHost.java' + // 解封本模组全部源码;仅排除非 accessor 的 mixin 实现,放通 accessor 包用于编译期引用 + include 'com/extendedae_plus/**' + // 允许 accessor + include 'com/extendedae_plus/mixin/**/accessor/**' + // 排除具体的非 accessor mixin 目录 + // AE2 相关非 accessor + exclude 'com/extendedae_plus/mixin/ae2/helpers/**' + exclude 'com/extendedae_plus/mixin/ae2/autopattern/**' + exclude 'com/extendedae_plus/mixin/ae2/client/**' + exclude 'com/extendedae_plus/mixin/ae2/menu/**' + exclude 'com/extendedae_plus/mixin/ae2/AEProcessingPatternMixin.java' + // 排除 ae2 根目录下的普通 mixin(保留 accessor 子目录) + exclude 'com/extendedae_plus/mixin/ae2/*.java' + // 其他模块的非 accessor mixin + exclude 'com/extendedae_plus/mixin/ae2WTlib/**' + // 保留 mixin/jei/accessor,但排除其余 + exclude 'com/extendedae_plus/mixin/jei/*.java' + // 排除顶层 mixin 文件 + exclude 'com/extendedae_plus/mixin/PickFromWirelessMixin.java' + exclude 'com/extendedae_plus/mixin/extendedae/**' } configurations { diff --git a/src/main/java/com/extendedae_plus/client/ClientProxy.java b/src/main/java/com/extendedae_plus/client/ClientProxy.java index 7a1f3a1..5a7d020 100644 --- a/src/main/java/com/extendedae_plus/client/ClientProxy.java +++ b/src/main/java/com/extendedae_plus/client/ClientProxy.java @@ -17,7 +17,7 @@ import net.neoforged.bus.api.SubscribeEvent; /** * 客户端模型注册,将 formed 模型注册为内置模型。 */ -@EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT) public final class ClientProxy { private ClientProxy() {} @@ -60,8 +60,20 @@ public final class ClientProxy { @SubscribeEvent public static void onRegisterScreens(RegisterMenuScreensEvent event) { - // 菜单 -> 屏幕 绑定 - event.register(ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), - (menu, inv, title) -> new GlobalProviderModesScreen(menu, inv, title)); + // 菜单 -> 屏幕 绑定(显式 ScreenConstructor,避免泛型推断问题) + event.register( + ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), + new net.minecraft.client.gui.screens.MenuScreens.ScreenConstructor< + com.extendedae_plus.menu.NetworkPatternControllerMenu, + com.extendedae_plus.client.screen.GlobalProviderModesScreen>() { + @Override + public com.extendedae_plus.client.screen.GlobalProviderModesScreen create( + com.extendedae_plus.menu.NetworkPatternControllerMenu menu, + net.minecraft.world.entity.player.Inventory inv, + net.minecraft.network.chat.Component title) { + return new com.extendedae_plus.client.screen.GlobalProviderModesScreen(menu, inv, title); + } + } + ); } }