沙布尔复制修复

沙布尔复制修复

Aeronautics模组中物理装配器物品复制问题的修复。

Bug修复

Sable 复制修复

修复了 Sable 在组装非 Clearable 容器(例如 Create 的桌布、置物台、传送带)时出现的复制 Bug。

这个 Bug 是什么?

在 SubLevelAssemblyHelper.moveBlocks 中,Sable 会检查:

if (blockEntity instanceof Clearable clearable) {
    clearable.clearContent();   // 标准容器:清除旧位置的物品
}

某些第三方容器(如 Create 的桌布、置物台、传送带)并未实现 Clearable 接口。 因此,旧位置的物品不会被清除,而新位置通过 loadWithComponents(tag, ...) 加载了一个重复的副本。 这会导致物品数量翻倍。

修复是如何工作的

一个轻量级的 Mixin 被注入到 SubLevelAssemblyHelper.moveBlocks 中:

  • 当 blockEntity 不是 Clearable 的实例时, tag 会被重置为仅包含 id 字段以及坐标字段。

  • 然后,loadWithComponents(tag, ...) 会以全新出厂状态(不含任何物品)在新位置加载容器。

兼容性

  • Minecraft 1.21.1
  • NeoForge 21.1.219+
  • Sable 1.2.2+