diff --git a/src/main/java/com/extendedae_plus/ExtendedAEPlus.java b/src/main/java/com/extendedae_plus/ExtendedAEPlus.java index 9a3ffd6..62a0d6b 100644 --- a/src/main/java/com/extendedae_plus/ExtendedAEPlus.java +++ b/src/main/java/com/extendedae_plus/ExtendedAEPlus.java @@ -1,10 +1,7 @@ package com.extendedae_plus; -import appeng.init.client.InitScreens; import appeng.menu.locator.MenuLocators; -import com.extendedae_plus.ae.menu.EntitySpeedTickerMenu; -import com.extendedae_plus.ae.screen.EntitySpeedTickerScreen; -import com.extendedae_plus.client.ClientProxy; +import com.extendedae_plus.client.ClientRegistrar; import com.extendedae_plus.config.ModConfigs; import com.extendedae_plus.init.*; import com.extendedae_plus.menu.locator.CuriosItemLocator; @@ -37,7 +34,7 @@ public class ExtendedAEPlus { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); // 在客户端尽早注册内置模型,保证首次资源加载前映射已建立(仿照 AE2 的 AppEngClient 构造期注册) - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClientProxy::initBuiltInModels); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClientRegistrar::initBuiltInModels); // 注册mod初始化事件 modEventBus.addListener(this::commonSetup); @@ -57,9 +54,6 @@ public class ExtendedAEPlus { // 注册通用配置 ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ModConfigs.COMMON_SPEC); - - // 客户端侧延迟注册:在 FMLClientSetupEvent 阶段执行(包含 MenuScreens 绑定等) - // 由下面的 ClientModEvents 负责在客户端总线上接收事件并委派 } /** @@ -97,20 +91,19 @@ public class ExtendedAEPlus { public static void onClientSetup(final FMLClientSetupEvent event) { // 直接在此处执行客户端一次性注册(UI/屏幕/渲染器绑定) // 注册客户端配置界面 - ClientProxy.registerConfigScreen(); + ClientRegistrar.registerConfigScreen(); - InitScreens.register(ModMenuTypes.ENTITY_TICKER_MENU.get(), - EntitySpeedTickerScreen::new, - "/screens/entity_speed_ticker.json"); + // 将 InitScreens 的注册委托给 ClientRegistrar,便于集中管理客户端注册逻辑 + ClientRegistrar.registerInitScreens(); // 菜单 -> 屏幕 绑定 - ClientProxy.registerMenuScreens(); + ClientRegistrar.registerMenuScreens(); } @SubscribeEvent public static void onRegisterGeometryLoaders(final ModelEvent.RegisterGeometryLoaders evt) { try { - ClientProxy.initBuiltInModels(); + ClientRegistrar.initBuiltInModels(); // 注册 AE2 部件模型(例如 entity_ticker_part_item),仿照 CrazyAddons 的做法 ModItems.registerPartModels(); } catch (Exception ignored) {} diff --git a/src/main/java/com/extendedae_plus/client/ClientModelEvents.java b/src/main/java/com/extendedae_plus/client/ClientModelEvents.java index fa441d1..e62450d 100644 --- a/src/main/java/com/extendedae_plus/client/ClientModelEvents.java +++ b/src/main/java/com/extendedae_plus/client/ClientModelEvents.java @@ -22,6 +22,6 @@ public final class ClientModelEvents { event.register(ExtendedAEPlus.id("block/crafting/64x_accelerator_formed_v2")); event.register(ExtendedAEPlus.id("block/crafting/256x_accelerator_formed_v2")); event.register(ExtendedAEPlus.id("block/crafting/1024x_accelerator_formed_v2")); - ClientProxy.initBuiltInModels(); + ClientRegistrar.initBuiltInModels(); } } diff --git a/src/main/java/com/extendedae_plus/client/ClientProxy.java b/src/main/java/com/extendedae_plus/client/ClientRegistrar.java similarity index 83% rename from src/main/java/com/extendedae_plus/client/ClientProxy.java rename to src/main/java/com/extendedae_plus/client/ClientRegistrar.java index 8b7fb46..4da808b 100644 --- a/src/main/java/com/extendedae_plus/client/ClientProxy.java +++ b/src/main/java/com/extendedae_plus/client/ClientRegistrar.java @@ -1,7 +1,10 @@ package com.extendedae_plus.client; import appeng.client.render.crafting.CraftingCubeModel; +import appeng.init.client.InitScreens; import com.extendedae_plus.ExtendedAEPlus; +import com.extendedae_plus.ae.menu.EntitySpeedTickerMenu; +import com.extendedae_plus.ae.screen.EntitySpeedTickerScreen; import com.extendedae_plus.client.render.crafting.EPlusCraftingCubeModelProvider; import com.extendedae_plus.client.screen.GlobalProviderModesScreen; import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; @@ -14,8 +17,8 @@ import net.minecraftforge.fml.ModLoadingContext; /** * 客户端模型注册,将 formed 模型注册为内置模型。 */ -public final class ClientProxy { - private ClientProxy() {} +public final class ClientRegistrar { + private ClientRegistrar() {} private static boolean REGISTERED = false; @@ -54,6 +57,15 @@ public final class ClientProxy { MenuScreens.register(ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), GlobalProviderModesScreen::new); } + /** + * 注册由 AE2 InitScreens 所需的屏幕资源映射(用于内置 JSON 屏幕注册) + */ + public static void registerInitScreens() { + InitScreens.register(ModMenuTypes.ENTITY_TICKER_MENU.get(), + EntitySpeedTickerScreen::new, + "/screens/entity_speed_ticker.json"); + } + /** * 仅客户端:在 Mods 菜单注册配置界面入口。 * 将对 Screen 的引用限制在客户端侧,避免服务端类加载。