client包
This commit is contained in:
parent
e04a18b6cc
commit
2e15c6d326
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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<NetworkPatternControllerMenu> {
|
||||
private static final Component CUSTOM_TITLE = Component.literal("样板供应器状态控制器");
|
||||
|
|
@ -29,7 +29,7 @@ public class GlobalProviderModesScreen extends AbstractContainerScreen<NetworkPa
|
|||
|
||||
// 行1:三个单项切换
|
||||
addRenderableWidget(Button.builder(Component.translatable("gui.extendedae_plus.global.toggle_blocking"), b ->
|
||||
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<NetworkPa
|
|||
))).bounds(x, y, w, h).build());
|
||||
|
||||
addRenderableWidget(Button.builder(Component.translatable("gui.extendedae_plus.global.toggle_adv_blocking"), b ->
|
||||
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<NetworkPa
|
|||
))).bounds(x + w + s, y, w, h).build());
|
||||
|
||||
addRenderableWidget(Button.builder(Component.translatable("gui.extendedae_plus.global.toggle_smart_doubling"), b ->
|
||||
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<NetworkPa
|
|||
int totalW2 = w * 2 + s;
|
||||
int x2 = this.leftPos + (this.imageWidth - totalW2) / 2;
|
||||
addRenderableWidget(Button.builder(Component.translatable("gui.extendedae_plus.global.all_on"), b ->
|
||||
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<NetworkPa
|
|||
))).bounds(x2, y2, w, h).build());
|
||||
|
||||
addRenderableWidget(Button.builder(Component.translatable("gui.extendedae_plus.global.all_off"), b ->
|
||||
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<NetworkPa
|
|||
|
||||
@Override
|
||||
public void render(net.minecraft.client.gui.GuiGraphics gfx, int mouseX, int mouseY, float partialTicks) {
|
||||
this.renderBackground(gfx);
|
||||
this.renderBackground(gfx, mouseX, mouseY, partialTicks);
|
||||
super.render(gfx, mouseX, mouseY, partialTicks);
|
||||
gfx.drawString(this.font, CUSTOM_TITLE, this.leftPos + 10, this.topPos + 8, 0xFFFFFF, false);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user