From 9fe3336107e71a5c40f52ef82b8bcf6fe648f8a4 Mon Sep 17 00:00:00 2001 From: GaLi <3096147684@qq.com> Date: Tue, 3 Mar 2026 11:28:29 +0800 Subject: [PATCH] =?UTF-8?q?JEI=E5=86=99=E6=A0=B7=E6=9D=BF=E5=AF=B9?= =?UTF-8?q?=E4=BA=8E=E9=85=8D=E6=96=B9=E4=B9=A6=E7=AD=BE=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=97=B6=E5=9B=9E=E9=80=80=E5=88=B0=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E8=83=8C=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UploadEncodedPatternToProviderC2SPacket.java | 5 ++--- .../pattern/CreateAndUploadPatternC2SPacket.java | 6 ++++-- .../util/uploadPattern/ProviderUploadUtil.java | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java b/src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java index b0018ec..406a32a 100644 --- a/src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java @@ -32,16 +32,15 @@ public class UploadEncodedPatternToProviderC2SPacket { ServerPlayer player = ctx.getSender(); if (player == null) return; - // Prefer pending Ctrl+Q pattern upload when present. if (ProviderUploadUtil.hasPendingCtrlQPattern(player)) { if (ProviderUploadUtil.uploadPendingCtrlQPattern(player, msg.providerId)) { return; } + ProviderUploadUtil.returnPendingCtrlQPatternToInventory(player); + return; } if (player.containerMenu instanceof PatternEncodingTermMenu menu) { - // 1) providerId >= 0: byId mode from access terminal - // 2) providerId < 0: index mode, index = -1 - providerId if (msg.providerId >= 0) { ProviderUploadUtil.uploadFromEncodingMenuToProvider(player, menu, msg.providerId); } else { diff --git a/src/main/java/com/extendedae_plus/network/pattern/CreateAndUploadPatternC2SPacket.java b/src/main/java/com/extendedae_plus/network/pattern/CreateAndUploadPatternC2SPacket.java index 53ab35a..33e7616 100644 --- a/src/main/java/com/extendedae_plus/network/pattern/CreateAndUploadPatternC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/pattern/CreateAndUploadPatternC2SPacket.java @@ -145,8 +145,10 @@ public class CreateAndUploadPatternC2SPacket { boolean uploaded = MatrixUploadUtil.uploadPatternToMatrix(player, pattern, grid); if (!uploaded) { - // 上传失败,退还空白样板到网络 - refundBlankPattern(player, grid); + // 上传失败,将样板塞到背包。 + if (!(player.getInventory().add(pattern))) { + player.drop(pattern.copy(),false); + } } }); ctx.setPacketHandled(true); diff --git a/src/main/java/com/extendedae_plus/util/uploadPattern/ProviderUploadUtil.java b/src/main/java/com/extendedae_plus/util/uploadPattern/ProviderUploadUtil.java index 99df4de..31c20f9 100644 --- a/src/main/java/com/extendedae_plus/util/uploadPattern/ProviderUploadUtil.java +++ b/src/main/java/com/extendedae_plus/util/uploadPattern/ProviderUploadUtil.java @@ -281,6 +281,21 @@ public final class ProviderUploadUtil { return true; } + /** + * 将 pending Ctrl+Q 样板回退到玩家背包;若背包已满则掉落在地上。 + */ + public static boolean returnPendingCtrlQPatternToInventory(ServerPlayer player) { + if (player == null) return false; + ItemStack pending = getPendingCtrlQPattern(player); + if (pending.isEmpty()) return false; + + clearPendingCtrlQUpload(player); + if (!player.getInventory().add(pending.copy())) { + player.drop(pending.copy(), false); + } + return true; + } + /** * 列出玩家无线终端网络中的可用 provider,顺序与负数索引上传保持一致。 */