From 2e15c6d326cc4d018a0f08853287da9600a68aa8 Mon Sep 17 00:00:00 2001 From: GaLicn <133291877+GaLicn@users.noreply.github.com> Date: Sat, 6 Sep 2025 15:48:13 +0800 Subject: [PATCH] =?UTF-8?q?client=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extendedae_plus/client/ClientModelEvents.java | 13 +++++++------ .../com/extendedae_plus/client/ClientProxy.java | 14 ++++++++++++-- .../com/extendedae_plus/client/InputEvents.java | 6 +++--- .../extendedae_plus/client/ModConfigScreen.java | 8 +++----- .../client/screen/GlobalProviderModesScreen.java | 14 +++++++------- 5 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/extendedae_plus/client/ClientModelEvents.java b/src/main/java/com/extendedae_plus/client/ClientModelEvents.java index 579f02b..5e74c08 100644 --- a/src/main/java/com/extendedae_plus/client/ClientModelEvents.java +++ b/src/main/java/com/extendedae_plus/client/ClientModelEvents.java @@ -5,11 +5,12 @@ import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.client.event.ModelEvent; +import net.minecraft.client.resources.model.ModelResourceLocation; /** * 确保在模型烘焙/资源重载期间也会注册内置模型,避免在刷新资源后丢失内置模型映射。 */ -@EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT) public final class ClientModelEvents { private ClientModelEvents() {} @@ -17,11 +18,11 @@ public final class ClientModelEvents { 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")); + event.register(ModelResourceLocation.standalone(ExtendedAEPlus.id("block/crafting/4x_accelerator_formed_v2"))); + event.register(ModelResourceLocation.standalone(ExtendedAEPlus.id("block/crafting/16x_accelerator_formed_v2"))); + event.register(ModelResourceLocation.standalone(ExtendedAEPlus.id("block/crafting/64x_accelerator_formed_v2"))); + event.register(ModelResourceLocation.standalone(ExtendedAEPlus.id("block/crafting/256x_accelerator_formed_v2"))); + event.register(ModelResourceLocation.standalone(ExtendedAEPlus.id("block/crafting/1024x_accelerator_formed_v2"))); ClientProxy.init(); } } diff --git a/src/main/java/com/extendedae_plus/client/ClientProxy.java b/src/main/java/com/extendedae_plus/client/ClientProxy.java index 745e3e4..7a1f3a1 100644 --- a/src/main/java/com/extendedae_plus/client/ClientProxy.java +++ b/src/main/java/com/extendedae_plus/client/ClientProxy.java @@ -9,10 +9,15 @@ import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; import com.extendedae_plus.hooks.BuiltInModelHooks; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraft.client.gui.screens.MenuScreens; +import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; /** * 客户端模型注册,将 formed 模型注册为内置模型。 */ +@EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) public final class ClientProxy { private ClientProxy() {} @@ -50,8 +55,13 @@ public final class ClientProxy { event.enqueueWork(() -> { // 确保在首次资源加载前完成内置模型注册(REGISTERED 保护避免重复) init(); - // 菜单 -> 屏幕 绑定 - MenuScreens.register(ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), GlobalProviderModesScreen::new); }); } + + @SubscribeEvent + public static void onRegisterScreens(RegisterMenuScreensEvent event) { + // 菜单 -> 屏幕 绑定 + event.register(ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), + (menu, inv, title) -> new GlobalProviderModesScreen(menu, inv, title)); + } } diff --git a/src/main/java/com/extendedae_plus/client/InputEvents.java b/src/main/java/com/extendedae_plus/client/InputEvents.java index 1264b96..fbe7f35 100644 --- a/src/main/java/com/extendedae_plus/client/InputEvents.java +++ b/src/main/java/com/extendedae_plus/client/InputEvents.java @@ -5,7 +5,6 @@ import appeng.client.gui.me.common.MEStorageScreen; import com.extendedae_plus.ExtendedAEPlus; import com.extendedae_plus.integration.jei.JeiRuntimeProxy; import com.extendedae_plus.mixin.ae2.accessor.MEStorageScreenAccessor; -import com.extendedae_plus.network.ModNetwork; import com.extendedae_plus.network.OpenCraftFromJeiC2SPacket; import com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket; import mezz.jei.api.ingredients.ITypedIngredient; @@ -16,6 +15,7 @@ import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.client.event.ScreenEvent; +import net.neoforged.neoforge.network.PacketDistributor; import org.lwjgl.glfw.GLFW; import java.util.Optional; @@ -61,7 +61,7 @@ public final class InputEvents { GenericStack stack = toGenericStack(typed); if (stack != null) { // 发送到服务端:若网络有库存则拉取一组到空槽,否则若可合成则打开下单界面 - ModNetwork.CHANNEL.sendToServer(new PullFromJeiOrCraftC2SPacket(stack)); + PacketDistributor.sendToServer(new PullFromJeiOrCraftC2SPacket(stack)); // 消费此次点击,避免 JEI/原版对左键的其它处理 event.setCanceled(true); return; @@ -89,7 +89,7 @@ public final class InputEvents { if (stack == null) return; // 发送到服务端,让其验证并打开 CraftAmountMenu - ModNetwork.CHANNEL.sendToServer(new OpenCraftFromJeiC2SPacket(stack)); + PacketDistributor.sendToServer(new OpenCraftFromJeiC2SPacket(stack)); // 消费此次点击,避免 JEI/原版对中键的其它处理 event.setCanceled(true); diff --git a/src/main/java/com/extendedae_plus/client/ModConfigScreen.java b/src/main/java/com/extendedae_plus/client/ModConfigScreen.java index b750c95..798a7e3 100644 --- a/src/main/java/com/extendedae_plus/client/ModConfigScreen.java +++ b/src/main/java/com/extendedae_plus/client/ModConfigScreen.java @@ -79,12 +79,10 @@ public class ModConfigScreen extends Screen { int gap = 8; int buttonsY = y + row * rowHeight + 18; this.addRenderableWidget(Button.builder(Component.translatable("gui.done"), b -> saveAndClose()) - .pos(centerX - btnW - gap/2, buttonsY) - .size(btnW, 20) + .bounds(centerX - btnW - gap/2, buttonsY, btnW, 20) .build()); this.addRenderableWidget(Button.builder(Component.translatable("gui.cancel"), b -> onClose()) - .pos(centerX + gap/2, buttonsY) - .size(btnW, 20) + .bounds(centerX + gap/2, buttonsY, btnW, 20) .build()); } @@ -126,7 +124,7 @@ public class ModConfigScreen extends Screen { @Override public void render(GuiGraphics g, int mouseX, int mouseY, float partialTick) { - this.renderBackground(g); + this.renderBackground(g, mouseX, mouseY, partialTick); super.render(g, mouseX, mouseY, partialTick); int centerX = this.width / 2; diff --git a/src/main/java/com/extendedae_plus/client/screen/GlobalProviderModesScreen.java b/src/main/java/com/extendedae_plus/client/screen/GlobalProviderModesScreen.java index c70a53f..92fc948 100644 --- a/src/main/java/com/extendedae_plus/client/screen/GlobalProviderModesScreen.java +++ b/src/main/java/com/extendedae_plus/client/screen/GlobalProviderModesScreen.java @@ -2,11 +2,11 @@ package com.extendedae_plus.client.screen; import com.extendedae_plus.menu.NetworkPatternControllerMenu; import com.extendedae_plus.network.GlobalToggleProviderModesC2SPacket; -import com.extendedae_plus.network.ModNetwork; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; +import net.neoforged.neoforge.network.PacketDistributor; public class GlobalProviderModesScreen extends AbstractContainerScreen { private static final Component CUSTOM_TITLE = Component.literal("样板供应器状态控制器"); @@ -29,7 +29,7 @@ public class GlobalProviderModesScreen extends AbstractContainerScreen - ModNetwork.CHANNEL.sendToServer(new GlobalToggleProviderModesC2SPacket( + PacketDistributor.sendToServer(new GlobalToggleProviderModesC2SPacket( GlobalToggleProviderModesC2SPacket.Op.TOGGLE, GlobalToggleProviderModesC2SPacket.Op.NOOP, GlobalToggleProviderModesC2SPacket.Op.NOOP, @@ -37,7 +37,7 @@ public class GlobalProviderModesScreen extends AbstractContainerScreen - ModNetwork.CHANNEL.sendToServer(new GlobalToggleProviderModesC2SPacket( + PacketDistributor.sendToServer(new GlobalToggleProviderModesC2SPacket( GlobalToggleProviderModesC2SPacket.Op.NOOP, GlobalToggleProviderModesC2SPacket.Op.TOGGLE, GlobalToggleProviderModesC2SPacket.Op.NOOP, @@ -45,7 +45,7 @@ public class GlobalProviderModesScreen extends AbstractContainerScreen - ModNetwork.CHANNEL.sendToServer(new GlobalToggleProviderModesC2SPacket( + PacketDistributor.sendToServer(new GlobalToggleProviderModesC2SPacket( GlobalToggleProviderModesC2SPacket.Op.NOOP, GlobalToggleProviderModesC2SPacket.Op.NOOP, GlobalToggleProviderModesC2SPacket.Op.TOGGLE, @@ -58,7 +58,7 @@ public class GlobalProviderModesScreen extends AbstractContainerScreen - ModNetwork.CHANNEL.sendToServer(new GlobalToggleProviderModesC2SPacket( + PacketDistributor.sendToServer(new GlobalToggleProviderModesC2SPacket( GlobalToggleProviderModesC2SPacket.Op.SET_TRUE, GlobalToggleProviderModesC2SPacket.Op.SET_TRUE, GlobalToggleProviderModesC2SPacket.Op.SET_TRUE, @@ -66,7 +66,7 @@ public class GlobalProviderModesScreen extends AbstractContainerScreen - ModNetwork.CHANNEL.sendToServer(new GlobalToggleProviderModesC2SPacket( + PacketDistributor.sendToServer(new GlobalToggleProviderModesC2SPacket( GlobalToggleProviderModesC2SPacket.Op.SET_FALSE, GlobalToggleProviderModesC2SPacket.Op.SET_FALSE, GlobalToggleProviderModesC2SPacket.Op.SET_FALSE, @@ -95,7 +95,7 @@ public class GlobalProviderModesScreen extends AbstractContainerScreen