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,顺序与负数索引上传保持一致。 */