Sable Assembly Fix
Fixes item duplication during Sable assembly/disassembly by preventing non-Clearable block entities from dropping their contents. Works with any mod - Keg, cabinets, baskets, Item Drains, Sophisticated Storage, etc. No configuration needed.
截图
介绍
Overview
Sable Assembly Fix fixes an item duplication bug that occurs during Sable assembly/disassembly for block entities that do not implement the Clearable interface.
The Problem
Sable’s SubLevelAssemblyHelper.moveBlocks() calls Clearable.tryClear() on every block entity during the assembly process. The issue is:
- For block entities that implement Clearable (e.g. chests, hoppers) — works fine, contents are properly cleared
- For block entities that do NOT implement Clearable (e.g. TableCloth, Mechanical Arm, Ejector, etc.) — tryClear() is a no-op, nothing happens
- The block is destroyed and its items drop into the world, but the NBT data containing the item inventory is still there
- When the block is recreated in the sub-level, the NBT items are read back
- Result: the same items exist both on the ground and inside the block — item duplication
Triggering this bug is trivially cheap:
simply toggle the ship between physics mode and block mode (or vice versa) — each transition triggers assembly/disassembly, which duplicates the contents of any non-Clearable block entity on the ship. No expensive resources or complex setup required.
How It Works
A single @Redirect mixin intercepts the Clearable.tryClear() call inside SubLevelAssemblyHelper.moveBlocks() :
- If the block entity implements Clearable → passes through normally, no intervention
- If the block entity does not implement Clearable → calls level.removeBlockEntity(pos) to remove the block entity entirely, preventing it from dropping any contents
Affected Block Entities (Create + Addons)
| Block Entity | Items per dupe |
|—|—|
| TableCloth | up to 4 |
| Mechanical Arm | entire held stack (e.g. 64 items at once) |
Plus any modded BE with inventory that doesn’t implement Clearable.
Note: The Mechanical Arm is especially severe — it duplicates the entire held stack in one operation. If the arm is holding a full stack of 64 items, you get 64 duplicated items per assembly/disassembly cycle.
Any modded block entity with an inventory that doesn’t implement Clearable is also affected.
Configuration
A whitelist system is included. The config file config/sableassemblyfix/whitelist.json is automatically created on first launch.
Add block entity IDs to the whitelist to skip the fix (e.g. if a mod handles Clearable on its own). Requires a game restart to reload.
Dependencies
- NeoForge >=21.1.228
- Sable >=2.0
- Create: Aeronautics >=1.0.2
License
MIT
常见问题
Sable Assembly Fix 支持哪些 Minecraft 版本?
Sable Assembly Fix 支持 Minecraft Java 版 1.21.1,可用的加载器:NeoForge。下载时注意选择和你游戏版本一致的文件。
Sable Assembly Fix 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅服务端。
xiao-ou6630 的其他作品
查看全部 →
Create: Labor Rush
Addon for Create: Villager Labor — whip workers into overdrive, enchant leads & bells with Fire Aspect/Channeling, unleash a Lightning 5-Whip, and earn 19 achievements. Push your workers too hard and they'll rise up in rebellion.
Fluid Shell Extensions
A flexible custom effect system has been implemented for fluid projectiles. Through simple JSON configuration files, users can add rich explosion effects to any fluid without writing any code. Whetherlves placing fluids, generating items, applying potion
评论
登录后评论和评分