修复材质概率进游戏紫黑块问题

This commit is contained in:
GaLi 2025-08-30 11:22:04 +08:00
parent 09d1bf195c
commit 0e90d9825a
3 changed files with 15 additions and 4 deletions

View File

@ -37,6 +37,9 @@ public class ExtendedAEPlus {
public ExtendedAEPlus() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
// 在客户端尽早注册内置模型保证首次资源加载前映射已建立仿照 AE2 AppEngClient 构造期注册
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClientProxy::init);
// 注册mod初始化事件
modEventBus.addListener(this::commonSetup);

View File

@ -1,5 +1,6 @@
package com.extendedae_plus.client;
import com.extendedae_plus.ExtendedAEPlus;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.ModelEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@ -8,13 +9,19 @@ import net.minecraftforge.fml.common.Mod;
/**
* 确保在模型烘焙/资源重载期间也会注册内置模型避免在刷新资源后丢失内置模型映射
*/
@Mod.EventBusSubscriber(value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
@Mod.EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
public final class ClientModelEvents {
private ClientModelEvents() {}
@SubscribeEvent
public static void onRegisterAdditional(ModelEvent.RegisterAdditional event) {
// 在每次模型重载开始时确保内置模型已注册
// 先显式登记这些模型ID使其在首次加载阶段被请求从而触发我们的内置模型拦截
event.register(ExtendedAEPlus.id("block/crafting/4x_accelerator_formed_v2"));
event.register(ExtendedAEPlus.id("block/crafting/16x_accelerator_formed_v2"));
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.init();
}
}

View File

@ -43,9 +43,6 @@ public final class ClientProxy {
BuiltInModelHooks.addBuiltInModel(
ExtendedAEPlus.id("block/crafting/1024x_accelerator_formed_v2"),
new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_1024x)));
// 菜单 -> 屏幕 绑定
MenuScreens.register(ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), GlobalProviderModesScreen::new);
}
/**
@ -53,8 +50,12 @@ public final class ClientProxy {
*/
public static void onClientSetup(final FMLClientSetupEvent event) {
event.enqueueWork(() -> {
// 确保在首次资源加载前完成内置模型注册REGISTERED 保护避免重复
init();
// 仅在客户端设置阶段执行与 UI 相关的一次性绑定
registerConfigScreen();
// 菜单 -> 屏幕 绑定
MenuScreens.register(ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), GlobalProviderModesScreen::new);
});
}