82 lines
4.0 KiB
Java
82 lines
4.0 KiB
Java
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.screen.EntitySpeedTickerScreen;
|
||
import com.extendedae_plus.client.render.crafting.EPlusCraftingCubeModelProvider;
|
||
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.renderer.item.ItemProperties;
|
||
import net.neoforged.api.distmarker.Dist;
|
||
import net.neoforged.bus.api.SubscribeEvent;
|
||
import net.neoforged.fml.common.EventBusSubscriber;
|
||
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
|
||
|
||
/**
|
||
* 客户端模型注册,将 formed 模型注册为内置模型。
|
||
*/
|
||
@EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT)
|
||
public final class ClientProxy {
|
||
private static boolean REGISTERED = false;
|
||
|
||
private ClientProxy() {}
|
||
|
||
public static void init() {
|
||
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)));
|
||
|
||
}
|
||
|
||
@SubscribeEvent
|
||
public static void onRegisterScreens(RegisterMenuScreensEvent event) {
|
||
// 菜单 -> 屏幕 绑定(显式 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);
|
||
}
|
||
}
|
||
);
|
||
|
||
/**
|
||
* 注册由 AE2 InitScreens 所需的屏幕资源映射(用于内置 JSON 屏幕注册)
|
||
*/
|
||
InitScreens.register(event, ModMenuTypes.ENTITY_TICKER_MENU.get(), EntitySpeedTickerScreen::new, "/screens/entity_speed_ticker.json");
|
||
}
|
||
}
|