ExtendedAE_Plus/src/main/java/com/extendedae_plus/client/ClientRegistrar.java

99 lines
4.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
import com.extendedae_plus.hooks.BuiltInModelHooks;
import com.extendedae_plus.init.ModItems;
import com.extendedae_plus.init.ModMenuTypes;
import com.extendedae_plus.items.materials.EntitySpeedCardItem;
import net.minecraft.client.gui.screens.MenuScreens;
import net.minecraft.client.renderer.item.ItemProperties;
import net.minecraftforge.fml.ModList;
/**
* 客户端模型注册,将 formed 模型注册为内置模型。
*/
public final class ClientRegistrar {
private ClientRegistrar() {}
private static boolean REGISTERED = false;
/**
* 注册内置模型formed 模型等)。可被 ModelEvent 或启动阶段直接调用。
*/
public static void initBuiltInModels() {
if (REGISTERED) return;
REGISTERED = true;
// 注册 Item property用于根据 ItemStack 的 NBT exponent 切换模型
ItemProperties.register(ModItems.ENTITY_SPEED_CARD.get(), ExtendedAEPlus.id("mult"),
(stack, world, entity, seed) -> (float) EntitySpeedCardItem.readMultiplier(stack));
// 注册四种形成态模型为内置模型
BuiltInModelHooks.addBuiltInModel(
ExtendedAEPlus.id("block/crafting/4x_accelerator_formed_v2"),
new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_4x)));
BuiltInModelHooks.addBuiltInModel(
ExtendedAEPlus.id("block/crafting/16x_accelerator_formed_v2"),
new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_16x)));
BuiltInModelHooks.addBuiltInModel(
ExtendedAEPlus.id("block/crafting/64x_accelerator_formed_v2"),
new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_64x)));
BuiltInModelHooks.addBuiltInModel(
ExtendedAEPlus.id("block/crafting/256x_accelerator_formed_v2"),
new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_256x)));
BuiltInModelHooks.addBuiltInModel(
ExtendedAEPlus.id("block/crafting/1024x_accelerator_formed_v2"),
new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_1024x)));
}
/**
* 将菜单类型与对应的屏幕绑定。
*/
public static void registerMenuScreens() {
MenuScreens.register(ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), GlobalProviderModesScreen::new);
}
/**
* 注册由 AE2 InitScreens 所需的屏幕资源映射(用于内置 JSON 屏幕注册)
*/
public static void registerInitScreens() {
InitScreens.register(ModMenuTypes.ENTITY_TICKER_MENU.get(),
EntitySpeedTickerScreen<EntitySpeedTickerMenu>::new,
"/screens/entity_speed_ticker.json");
registerExtendedAEScreens();
}
private static void registerExtendedAEScreens() {
try {
InitScreens.register(
com.glodblock.github.extendedae.container.ContainerExPatternProvider.TYPE,
com.glodblock.github.extendedae.client.gui.GuiExPatternProvider::new,
"/screens/ex_pattern_provider.json"
);
} catch (Throwable ignored) {
}
}
/**
* 仅客户端:在 Mods 菜单注册配置界面入口。
* 将对 Screen 的引用限制在客户端侧,避免服务端类加载。
*/
// public static void registerConfigScreen() {
// // 将 ModConfigScreen 的引用放在此处,确保仅在 Dist.CLIENT 下解析该类
// ModLoadingContext.get().registerExtensionPoint(
// ConfigScreenHandler.ConfigScreenFactory.class,
// () -> new ConfigScreenHandler.ConfigScreenFactory(
// (mc, parent) -> new ModConfigScreen(parent))
// );
// }
}