From 48c00efc836f0e3709c0da3db0d616624e5dbdfb Mon Sep 17 00:00:00 2001 From: GaLi Date: Wed, 3 Dec 2025 11:19:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E4=B8=8A=E4=BC=A0=E9=80=82?= =?UTF-8?q?=E9=85=8D=E8=B6=85=E7=BA=A7=E8=A3=85=E9=85=8D=E7=9F=A9=E9=98=B5?= =?UTF-8?q?=E6=A0=B7=E6=9D=BF=E6=A0=B8=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/uploadPattern/MatrixUploadUtil.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/com/extendedae_plus/util/uploadPattern/MatrixUploadUtil.java b/src/main/java/com/extendedae_plus/util/uploadPattern/MatrixUploadUtil.java index 863179e..e8eb1e6 100644 --- a/src/main/java/com/extendedae_plus/util/uploadPattern/MatrixUploadUtil.java +++ b/src/main/java/com/extendedae_plus/util/uploadPattern/MatrixUploadUtil.java @@ -11,6 +11,7 @@ import appeng.crafting.pattern.AESmithingTablePattern; import appeng.crafting.pattern.AEStonecuttingPattern; import appeng.menu.me.items.PatternEncodingTermMenu; import appeng.menu.slot.RestrictedInputSlot; +import com.extendedae_plus.content.matrix.PatternCorePlusBlockEntity; import com.extendedae_plus.content.matrix.UploadCoreBlockEntity; import com.extendedae_plus.mixin.ae2.accessor.PatternEncodingTermMenuAccessor; import com.glodblock.github.extendedae.common.me.matrix.ClusterAssemblerMatrix; @@ -97,6 +98,8 @@ public final class MatrixUploadUtil { try { // 获取网络中所有 Pattern Tile Set allTiles = grid.getMachines(TileAssemblerMatrixPattern.class); + Set myAllTiles = grid.getMachines(PatternCorePlusBlockEntity.class); + // 用 Set 记录已经扫描过的集群,避免重复调用 clusterHasSingleUploadCore Set scannedClusters = new HashSet<>(); @@ -116,6 +119,24 @@ public final class MatrixUploadUtil { } } } + + for (PatternCorePlusBlockEntity myTile : myAllTiles) { + if (myTile == null || !myTile.isFormed() || !myTile.getMainNode().isActive()) continue; + + ClusterAssemblerMatrix cluster = myTile.getCluster(); + if (cluster == null) continue; + + // 如果该集群已经扫描过,或者该集群含 UploadCore,则处理 tile + if (scannedClusters.contains(cluster) || clusterHasSingleUploadCore(cluster)) { + scannedClusters.add(cluster); // 标记为已扫描 + + InternalInventory inv = myTile.getExposedInventory(); + if (inv != null) { + result.add(inv); + } + } + } + } catch (Throwable ignored) {} return result; }