From 2d903ff35b74963f734df24f930c8f38130a2804 Mon Sep 17 00:00:00 2001 From: GaLi <3096147684@qq.com> Date: Tue, 3 Mar 2026 21:21:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=A4=84=E7=90=86=E9=85=8D?= =?UTF-8?q?=E6=96=B9=E4=B9=A6=E7=AD=BE=E7=9A=84=E7=A9=BA=E7=99=BD=E6=A0=B7?= =?UTF-8?q?=E6=9D=BF=E6=B6=88=E8=80=97=E4=BB=A5=E5=8F=8A=E8=BF=94=E8=BF=98?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/event/CtrlQPatternKeyHandler.java | 1 - .../client/screen/ProviderSelectScreen.java | 3 ++ .../com/extendedae_plus/init/ModNetwork.java | 1 + .../CancelPendingPatternC2SPacket.java | 35 +++++++++++++++++++ .../network/CreateCtrlQPatternC2SPacket.java | 9 ++--- 5 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/extendedae_plus/network/CancelPendingPatternC2SPacket.java diff --git a/src/main/java/com/extendedae_plus/client/event/CtrlQPatternKeyHandler.java b/src/main/java/com/extendedae_plus/client/event/CtrlQPatternKeyHandler.java index 02dece3..7bce132 100644 --- a/src/main/java/com/extendedae_plus/client/event/CtrlQPatternKeyHandler.java +++ b/src/main/java/com/extendedae_plus/client/event/CtrlQPatternKeyHandler.java @@ -222,7 +222,6 @@ public final class CtrlQPatternKeyHandler { isAllowSubstitutes, isFluidSubstitutes )); - PacketDistributor.sendToServer(RequestProvidersListC2SPacket.INSTANCE); } catch (Throwable ignored) { } } diff --git a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java index aa2588b..6473eb7 100644 --- a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java +++ b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java @@ -1,5 +1,6 @@ package com.extendedae_plus.client.screen; +import com.extendedae_plus.network.CancelPendingPatternC2SPacket; import com.extendedae_plus.network.UploadEncodedPatternToProviderC2SPacket; import com.extendedae_plus.util.uploadPattern.ExtendedAEPatternUploadUtil; import com.google.gson.*; @@ -9,6 +10,7 @@ import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.neoforged.fml.loading.FMLPaths; +import net.neoforged.neoforge.network.PacketDistributor; import java.io.IOException; import java.nio.file.Files; @@ -252,6 +254,7 @@ public class ProviderSelectScreen extends Screen { @Override public void onClose() { + PacketDistributor.sendToServer(CancelPendingPatternC2SPacket.INSTANCE); Minecraft.getInstance().setScreen(this.parent); } diff --git a/src/main/java/com/extendedae_plus/init/ModNetwork.java b/src/main/java/com/extendedae_plus/init/ModNetwork.java index 257bcdb..31534f0 100644 --- a/src/main/java/com/extendedae_plus/init/ModNetwork.java +++ b/src/main/java/com/extendedae_plus/init/ModNetwork.java @@ -24,6 +24,7 @@ public class ModNetwork { registrar.playToServer(UploadInventoryPatternToProviderC2SPacket.TYPE, UploadInventoryPatternToProviderC2SPacket.STREAM_CODEC, UploadInventoryPatternToProviderC2SPacket::handle); registrar.playToServer(CreateCtrlQPatternC2SPacket.TYPE, CreateCtrlQPatternC2SPacket.STREAM_CODEC, CreateCtrlQPatternC2SPacket::handle); registrar.playToServer(CreateAndUploadPatternC2SPacket.TYPE, CreateAndUploadPatternC2SPacket.STREAM_CODEC, CreateAndUploadPatternC2SPacket::handle); + registrar.playToServer(CancelPendingPatternC2SPacket.TYPE,CancelPendingPatternC2SPacket.STREAM_CODEC,CancelPendingPatternC2SPacket::handle); registrar.playToServer(EncodeWithShiftFlagC2SPacket.TYPE, EncodeWithShiftFlagC2SPacket.STREAM_CODEC, EncodeWithShiftFlagC2SPacket::handle); // 新增:JEI 中键打开合成界面 & 无线终端拾取方块物品 registrar.playToServer(com.extendedae_plus.network.OpenCraftFromJeiC2SPacket.TYPE, diff --git a/src/main/java/com/extendedae_plus/network/CancelPendingPatternC2SPacket.java b/src/main/java/com/extendedae_plus/network/CancelPendingPatternC2SPacket.java new file mode 100644 index 0000000..2fb16d9 --- /dev/null +++ b/src/main/java/com/extendedae_plus/network/CancelPendingPatternC2SPacket.java @@ -0,0 +1,35 @@ +package com.extendedae_plus.network; + +import com.extendedae_plus.ExtendedAEPlus; +import com.extendedae_plus.util.uploadPattern.CtrlQPendingUploadUtil; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.neoforged.neoforge.network.handling.IPayloadContext; + +public class CancelPendingPatternC2SPacket implements CustomPacketPayload { + + public static final Type TYPE = new Type<>( + ResourceLocation.fromNamespaceAndPath(ExtendedAEPlus.MODID,"cancel_pending_pattern")); + + public static final CancelPendingPatternC2SPacket INSTANCE = new CancelPendingPatternC2SPacket(); + + public static final StreamCodec STREAM_CODEC = StreamCodec.unit(INSTANCE); + + public static void handle(final CancelPendingPatternC2SPacket msg, final IPayloadContext ctx){ + ctx.enqueueWork(() ->{ + if(!((ctx.player()) instanceof ServerPlayer player)) return; + + if(CtrlQPendingUploadUtil.hasPendingCtrlQPattern(player)){ + CtrlQPendingUploadUtil.returnPendingCtrlQPatternToInventory(player); + } + }); + } + + @Override + public Type type() { + return TYPE; + } +} diff --git a/src/main/java/com/extendedae_plus/network/CreateCtrlQPatternC2SPacket.java b/src/main/java/com/extendedae_plus/network/CreateCtrlQPatternC2SPacket.java index 2801cb6..15766fc 100644 --- a/src/main/java/com/extendedae_plus/network/CreateCtrlQPatternC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/CreateCtrlQPatternC2SPacket.java @@ -24,6 +24,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.RecipeHolder; +import net.neoforged.neoforge.network.PacketDistributor; import net.neoforged.neoforge.network.handling.IPayloadContext; import java.util.ArrayList; @@ -157,12 +158,8 @@ public class CreateCtrlQPatternC2SPacket implements CustomPacketPayload { } if (msg.openProviderSelector) { - String pendingId = CtrlQPendingUploadUtil.beginPendingCtrlQUpload(player, pattern); - if (pendingId == null) { - if (!player.getInventory().add(pattern)) { - player.drop(pattern, false); - } - } + CtrlQPendingUploadUtil.beginPendingCtrlQUpload(player, pattern); + PacketDistributor.sendToServer(RequestProvidersListC2SPacket.INSTANCE); return; }