截图
介绍
Compacting/Extra Large Lattice Storage (C.E.L.L.S.)
常见问题
为什么我的压缩存储元件在重新打开 ME 箱子的界面之前不会刷新?
这是 ME 箱子实现方式的限制:它不会监听网络上的变化,只会监听玩家手动放入的物品,而这与压缩存储元件中的虚拟物品配合得并不好。此问题仅影响显示,关闭界面并重新打开后就会恢复正常。
我有 9.2 百亿亿多个物品,但终端显示的数量却少得多
这可能是因为你的 AE2 版本无法处理 Long 溢出(目前 AE2-UEL 0.56.7 就无法处理),导致计数回绕并显示错误数值。这只是显示问题,你的物品仍安全地存放在存储元件中。存储元件终端应能显示正确数量,因为它会分别显示每个存储元件,而不是累加多个存储元件的内容。
如何轻松地将一个存储元件中的内容转移到另一个存储元件?
C.E.L.L.S. 支持哪些模组?
此模组需要 AE2-UEL。它还支持:
- MixinBooter:使 C.E.L.L.S. 的存储元件最多可堆叠至 64 个。若没有它,允许存储元件堆叠会导致 ME 箱子出现物品复制漏洞。它还会为 JEI 存储元件预览显示物品数量。
- JEI:导入接口的拖放和快速添加功能、创造模式存储元件的拖放功能,以及 JEI 存储元件预览功能
- Thaumic Energistics:可配置存储元件组件、创造模式存储元件、导出/导入接口
- Mekanism Energistics:可配置存储元件组件、创造模式存储元件、导出/导入接口
- ProjectEX:EMC 存储元件
为什么 Essentia 导入接口需要拉取卡?
因为 Thaumcraft 的本质运输系统采用拉取机制:导入端需要主动拉取,导出端则是被动的。管道每隔几个游戏刻就会拉取一次,罐子也会以同样的方式从管道拉取。本质上,这与使用拉取卡没有区别,但会造成更多卡顿或更低的吞吐量。拉取卡可以让接口以更优化、可控的方式进行拉取。
为什么增加类型数量时会有这么多警告?
这是因为 Minecraft 和 AE2 存在限制:
- 我们以默认的数据包大小 2MB 为例。除非使用模组提高上限,否则你只能使用这个大小。一件附魔盔甲可能占用数百到数千字节的 NBT 数据,一个普通存储元件可以存储 10 个单元,因此 2MB / 1000B / 10 个单元 = 仅仅 200 种不同物品就会达到上限。这真的不多!
- 如果一个区块中(所有机器/容器合计)包含的数据超过这个上限,区块就会加载失败,并踢出所有尝试加载它的玩家。这是原版 Minecraft 的限制。因此,你应该把 NBT 占用较大的内容分散到不同的区块和网络中,避免把自己困在无法加载的区块里。如果被困在这种区块中,游戏会陷入崩溃循环,直到你手动使用 NBT 编辑器把玩家移动到其他区块,或移除导致问题的机器。虽然有办法避免这个问题,但会牺牲性能,而且无法解决下文的问题;后者是 AE2 设计本身固有的限制。
- 如果网络存储的 NBT 总大小超过这个上限,AE2 就会把你踢出网络。这指的是同一网络中所有存储元件的 NBT 大小总和。当然,另建一个网络可以缓解这个问题,但无法解决根本原因。就 NBT 大小而言,超高密度存储元件并不比普通存储元件大多少,因为额外的容量与物品本身的 NBT 数据大小相比微不足道。
- 简而言之:重要的不是物品数量,而是你存储的内容。
功能
导入接口(物品、流体、气体、源质)
一种方块,可作为经过筛选的接口,将内容导入 ME 网络。需要配置允许导入的特定内容;它可用于从不一定具备筛选导出功能的机器(Woot、Ultimate Mob Farm 等)向网络导入物品/流体。它不具备提取、导出/补货或合成能力,只能作为导入接口使用。
每个槽位的上半部分用于设置过滤器,下半部分用于实际导入。可以在 GUI 中配置槽位大小,以便在导出目标已满时,让接口保留更多/更少数量的各类物品/流体(最高可达 max long;Minecraft 将外部 I/O 上限限制为 max int)。也可以配置轮询速率,让内容按照固定间隔(以刻为单位)导入,而不是采用 AE2 的自适应速率。
导入接口最适合搭配不会尝试合并物品堆叠的机器使用,因为插入槽位不会影响物品的去向。只有过滤器中的内容以及对应专用槽位的剩余空间会产生影响。
这些接口有 36 个槽位,使用容量卡最多可扩展至 5 倍。
导出接口(物品、流体、气体、源质)
与导入接口相对应,可将内容从 ME 网络导出到任何外部管道。槽位大小和轮询速率的设置方式与导入接口相同。
未定义
- 无循环保证:代理网络会自动检测并阻止循环,因此像
A → B → A这样的循环拓扑不会导致幽灵物品或强制更新。 - 无多跳保证:代理只让主网络获得对子网本地存储的 1 跳可见性,不会通过子网上的其他代理进行链式传递。这意味着,对于
B → A → C → D,C 能看到 A 和 B,但 D 不会通过 A 看到 B 的内容。这可以防止事件在复杂的子网拓扑中呈指数级膨胀,使性能影响保持在可控范围内。 - 最多 25 * 63 个过滤槽位:过滤器是分页的,并且可以通过容量卡扩展(配置下最多 24 个升级槽位),允许你在需要时共享子网的很大一部分。
- 单向或双向操作:默认情况下,代理是只读的(主网络可以看到并从子网拉取,但不能推回)。这个设计是有意为之,以避免网络让每一个被插入的物品都去检查每一个子网代理的过滤器,即使它们只是打算单向暴露内容。不过,你可以给子网代理添加一张插入卡来暴露内容,使其变为双向,允许主网络也通过代理将物品推回子网(当然,仍然遵守过滤器)。
- 通用资源支持:同一个子网代理适用于物品、流体、气体和源质。使用过滤器 GUI 中的资源类型循环按钮,可以在物品/流体/气体/源质的“编码”模式之间切换过滤槽位。编码模式不影响代理能从子网暴露什么,它只在真正向过滤器添加内容时使用。要控制代理暴露哪些类型的资源,你可以使用侧边按钮来启用/禁用通道(默认全部禁用,以选择性地暴露特定通道)。
- 过滤事件转发:代理只转发与过滤器匹配的更改,因此网络只会看到你希望它看到的内容。这也意味着,如果主网络中发生了某些变化但不匹配任何过滤器,任何子网都不会看到它,因此不会在子网侧触发不必要的更新。
- 子网代理(背面):位于你想要共享内容的网络线缆上。这是你的“源”侧。
- 子网代理(正面):位于应该看到内容的网络线缆上。这是你的“目标”侧,也是拥有 GUI 的一侧。
两半都放置好后,正面部分开始将背面网络的过滤视图发布到主网络中,就像驱动器上的额外存储元件一样。
- 在不合并网络的情况下共享存储。你可以让两个网络使用各自独立的频道额度,同时仍允许主网络读取(并可选择写入)子网中的部分内容。
- 将机器或系统封装起来。你可以把机器放在子网后面,只向主网络开放相关物品/流体/气体/精华,而不让它看到子网的内部运作。你可以采用循环设计(例如
A → B → A),让子网也能看到主网络的内容,同时不合并两个网络。子网只知道A → B连接,而主网络只知道B → A连接,因此两者在逻辑上保持分离、彼此独立。如果
- 合成子网代理物品,然后放置背面部分,再放置正面部分,让它们隔着一个方块边界彼此相对,就像朝向 ME 接口的存储总线一样。放置顺序不限,但两部分必须彼此相对。代理会自动检测连接并开始工作,无需配置即可将子网内容共享给主网络。
- 右键点击任意一个部分以打开过滤器 GUI。过滤器的工作方式与存储总线过滤器相同:
- 将物品、流体、气体或精华拖入过滤槽,将其加入白名单。可以从物品栏/JEI 拖入,也可以使用快速添加快捷键;JEI 中的“+”按钮也会将配方所需的输入添加到过滤器中。该
- 使用过滤模式按钮(右上角),切换过滤槽内容要转换为的类型:物品 / 流体 / 气体 / 精华。
- 添加容量卡以解锁更多过滤槽页面;使用页面箭头切换页面。
- 添加模糊卡以启用模糊匹配(容忍耐久度 / NBT 差异)。
- 添加反转卡以反转过滤器(除列出的物品以外的所有物品都会通过)。
- 点击过滤器 GUI 左上角的扳手按钮,打开 AE2 标准优先级界面。代理会像驱动器一样,在两个方向上遵循优先级:
- 优先级越高,当多个来源都有所需物品时,主网络越倾向于先从此代理提取。
- 优先级越高,主网络越倾向于优先向此代理插入物品(需安装插入卡)。
- (可选)添加插入卡以启用双向桥接。未安装插入卡时,代理为只读(前端网络可以查看并从后端网络提取内容,但不能向后端网络写入)。安装后,前端网络中符合相同过滤条件的物品可以通过代理路由回后端网络。
行为说明与注意事项
- 仅单跳。代理会让主网络单跳访问子网中的本地存储(驱动器、ME箱子、连接原版物品栏的存储总线)。它不会继续穿过子网上的其他直通存储总线,因此像
A → B → C → D这样的链路每次最多只会暴露一跳,也不会在复杂拓扑中让事件数量呈指数级膨胀。 - 不会形成写入循环。在同一次操作中,物品插入最多只能穿过一个子网代理。即使你在
A → B和B → A两条链路上都装有插入卡,第二个代理也会检测到当前调用已经处于插入过程中并拒绝转发,因此不会意外造成复制循环或堆栈溢出循环。 - 列表与提取保持一致。主网络终端中显示的物品都可以提取,而未列出的物品不会被悄悄提取。列表显示和提取使用完全相同的来源集合,因此终端显示的内容与实际可提取的内容一致。
- 网络保持独立。代理的两侧不会合并网格:通道预算、P2P隧道、安全终端和合成CPU仍各自属于对应网络。只有经过筛选的存储视图会跨越边界。
压缩配方暴露器
一种方块,可将压缩/解压配方作为处理样板提供给ME网络,功能类似压缩元件(上行1次、下行1次)。当你需要把物品存放在其他地方,同时又想方便地自动压缩/解压时,它可以替代压缩元件。只有在GUI中定义的配方会提供给网络,以免网络过于臃肿或产生冲突配方。由于AE2无法处理两个配方产出相同物品的情况,GUI会阻止你添加冲突配方。默认情况下,每次CPU操作只会执行1次压缩/解压(例如,1个方块 → 9个锭;协处理器会增加执行次数),但你可以更改槽位上的倍数,将配方设为更大规模的转换(例如,100个方块 → 900个锭),以节省CPU时间,代价是灵活性降低。
创造模式元件(物品、流体、气体、源质)
一种只能在创造模式下设置的元件,可为每种已设置的物品提供460京个(每个元件最多可设置63种不同物品)。它相当于带有贩卖升级的抽屉。
压缩存储元件
可自动向ME网络提供物品的压缩形态和解压形态,类似于储物抽屉的压缩抽屉。
工作原理
- 必须设置分区:压缩元件必须先设置分区,才能接收物品。
- 压缩链:按某种物品(例如铁锭)设置分区后,元件会自动识别压缩链:
- 更高阶:铁块(压缩形态)
- 主阶:铁锭(分区所用物品)
- 更低阶:铁粒(解压形态)
- 虚拟转换:物品存储在一个统一的池中,可以按任意压缩阶级提取:
- 放入 81 个铁粒 → 取出 81 个铁粒、9 个铁锭或 1 个铁块
- 放入 1 个铁块 → 取出 9 个铁锭、81 个铁粒或 1 个铁块
- 所有转换均无损且即时完成
- 受容量限制,最低阶物品的最大容量约为 9.2 百亿亿个。这主要会影响使用高压缩链(使用压缩/解压卡)的情况
- 单一物品类型:每个压缩存储元件只能存储一种物品类型(及其压缩变体)。
- 存储容量计数:存储容量以主阶(分区物品)单位计量,因此查看容量时无需担心换算比例。
可用阶级
- 1k – 2G 压缩存储元件(常规容量)
- 1k – 1G 超高密度压缩存储元件(每字节约有 21 亿倍倍率)
分区保护
- 压缩存储元件内含有物品时,无法更改分区。
- 更改存储的物品类型前,请先清空元件。
超高密度存储元件
每个显示字节内部倍率约为 21 亿倍的存储元件:
- 1k – 1G 超高密度存储元件(每个“字节”可存储约 172 亿个物品)
超高密度流体存储元件
采用相同超大倍率的流体存储元件:
- 1k – 1G 超高密度流体存储元件(每个“字节”可存储约 172 亿桶流体)
未定义
超高密度压缩存储元件
将超高密度存储与压缩功能结合:
- 1k – 1G 超高密度压缩存储元件(每个“字节”可存储约 172 亿个物品,并支持压缩)
可配置存储元件
通用存储元件,可通过装入 ME 存储组件来设定容量和存储类型:
- 将组件放入元件的 GUI 中,即可配置其容量和存储类型。
- 内置均分容量:容量由所有类型均分(可配置类型上限,默认为 63)。系统会预先考虑字节开销,因此元件总字节容量中只有 50% 可用于存储,另外 50% 留作开销。
- 单类型容量上限:可通过 GUI 文本框设置每种类型的最大物品数/mB。
- 按住 Shift 并右键点击即可拆解(返还元件、组件和升级)。
- 可使用组件合成该元件,以便自动装入组件。配方已为 configurable_components.cfg 中所有现有组件注册,包括自定义组件。
- 元件内有内容时无法移除组件。若新组件有足够容量容纳现有数据,则允许更换为相同类型的其他组件(物品↔物品、流体↔流体等)。
组件白名单
可接受的存储组件列表定义在 configurable_components.cfg 中。要添加或移除支持的组件,请将此文件的副本放入你的 Forge 配置目录(config/configurable_components.cfg)。配置覆盖优先于内置文件。
每个条目的格式为:
registry_name@metadata = bytes,storage_type,tier_name
registry_name@metadata:物品的注册名和损伤值(例如appliedenergistics2:material@35)bytes:组件的总字节容量(例如1024表示 1K)- storage_type:
item、fluid、gas、essentia tier_name:用于纹理选择和名称(例如1k、64k、1g)
使用场景:
- 拥有容量非常有限的元件(昂贵的自动化)。
- 提供简单的升级路径,而无需清空元件。
- 使用 ContentTweaker 创建新组件(通过 configurable_components.cfg)。
EMC 元件
一种类似于 ProjectEX 中个人 EMC 链接的元件,允许你将物品转换为 EMC 并转换回来。它严格等同于在 EMC 链接上配置的存储总线,只允许过滤器中白名单的物品进入,但不进行严格匹配。匹配规则与其他 ProjectEx 方块相同。为了节省性能,累积的 EMC 每秒才会刷新到玩家的网络一次(可配置)。
升级
虚空溢出卡
安装在元件的升级槽中,可在满时销毁多余的物品。适用于需要销毁溢出的自动化系统。
兼容于:压缩元件、高密度元件、高密度压缩元件、可配置存储元件、输入接口
销毁未选中卡
安装在输入接口中,可销毁不匹配任何过滤器的物品。这对于防止机器被剩余物品堵塞很有用,尤其是在与不具备过滤能力的导出机器一起使用时。
兼容于:输入接口
拉取卡
安装在输入接口中,可从相邻的容器中拉取内容。这对于需要从外部来源导入内容的自动化系统很有用。可以设置时间间隔、每次操作的数量以及相邻容器中要保留的数量。数量按接口的过滤器计算。
兼容于:输入接口
推送卡
等同于拉取卡,用于向相邻容器推送内容。
兼容于:输出接口
均分卡
限制单个存储元件可存储的物品类型数量,并将容量平均分配给这些类型。共有 7 种变体:
1x:1 种类型(全部容量分配给一种物品)
2x:2 种类型(每种各占一半容量)
4x:4 种类型(每种各占四分之一容量)
8x:8 种类型
16x:16 种类型
32x:32 种类型
63x:63 种类型(默认上限)
无上限:继承存储元件的类型上限(见配置)
适用场景:
- 让存储元件只存储一种物品,并提供最大容量(1x)
- 防止某种物品占满存储元件的空间
- 确保多种已存储物品之间公平分配存储容量
兼容对象:Hyper-Density Storage Cells
矿物词典卡
将其安装在压缩存储元件的升级槽中,即可启用矿物词典支持,用于压缩和解压缩。启用后,存储元件会将同一矿物词典组中的物品视为等价物。例如,如果模组 A 和模组 B 的铜锭属于同一矿物词典组,存储元件就会接受两者,并将它们转换为分区物品,从而统一存储。这相当于 Storage Drawers 的“转换升级”,但适用于压缩存储元件。
兼容对象:压缩存储元件
压缩/解压缩卡
将其安装在压缩存储元件的升级槽中,可增加压缩或解压缩时可用的层级数量。请注意,每次只能沿一个方向操作(压缩或解压缩),具体取决于使用的卡片。
- 3x 卡:最多可压缩/解压缩 3 个层级(例如,金粒 → 金锭 → 金块 → 双倍金块)
- 6x 卡:最多可压缩/解压缩 6 个层级
- 9x 卡:最多可压缩/解压缩 9 个层级
- 12x 卡:最多可压缩/解压缩 12 个层级
- 15x 卡:最多可压缩/解压缩 15 个层级
兼容对象:压缩存储元件
插入卡
安装在子网代理中,使代理除了能被拉取外,还能接收它所暴露的网络中的内容。这使代理变为双向,允许你通过代理将物品从主网络推入子网(当然仍会遵守过滤器)。没有它,代理是只读的,只允许主网络从子网拉取。
兼容:子网代理
精炼/压缩 EMC 卡
安装在 EMC 元件中,以增加元件可容纳的分区槽位数量,方式与个人/精炼/压缩 EMC 链接相同。每张卡的槽位数量可在配置中配置,你甚至可以通过在配置文件中添加自定义条目来添加更多具有可能无限槽位的卡,但你需要自己为它们提供纹理和本地化。配置条目中的第一个值是没有卡时的默认槽位数量。
- 精炼 EMC 卡:默认 9 个槽位
- 压缩 EMC 卡:默认 54 个槽位
兼容:EMC 元件
配置
该模组包含一个服务端配置文件,并带有游戏内 GUI 编辑器:
最大类型数
配置每个元件允许的最大类型数量:
- 超密度存储元件
- 超密度流体存储元件
- 可配置存储元件
空闲耗电
配置每种元件每 tick 的耗电量:
- 压缩元件
- 超密度元件
- 超密度压缩元件
- 超密度流体元件
- 可配置元件
升级槽位
更改每种元件可用的升级槽位数量(额外槽位中的升级将会丢失):
- 压缩元件
- 超密度元件
- 超密度压缩元件
- 超密度流体元件
- 可配置元件
元件开关
启用或禁用整个元件类别:
- 压缩元件
- 超密度元件
- 超密度压缩元件
- 超密度流体元件
- 可配置元件
导入/导出接口
你可以设置 GUI 中可设置的最大槽位大小和最小轮询速率。
NBT 调试
为所有元件启用或禁用 NBT 大小提示。此提示显示元件内容 NBT 大小的上限估计,帮助你意识到何时应将 NBT 繁重的内容移到别处,以避免区块封禁或 AE2 的网络踢出。如果你的元件中有大量 NBT 数据的物品不断进出,此设置可能会损失一些性能,但这在实践中应该很少见,对大多数用例来说通常不是问题。
命令
/fillcell
用指定数量的物品或流体填充存储元件,用于测试目的。
- 用法:
/fillCell <item id>|<fluid id>|<essentia id>|<gas id> <count> - 支持数量后缀:k(千)、m(百万)、b(十亿)、t(万亿)、q(千万亿)、qq(百亿亿)。
- 存储元件必须拿在主手中。
- 示例:
/fillCell minecraft:iron_ingot 10k用 10,000 个铁锭填充手持的元件。
/inspectSlots
显示玩家正在注视的方块中可用的槽位。
- 用法:
/inspectSlots [--handler] [arg1] [arg2] ... - 玩家必须正在注视一个带有槽位的方块(例如箱子或储罐)。
--handler可用于绕过 IItemRepository 并显示 IItemHandler 槽位。- 可以传入额外参数来模拟对这些槽位的插入操作。这些参数提供自动补全。
鸣谢
- 中文翻译:@ZHAY10086
- 俄文翻译:@MrKoteo
- 高密度物品/流体元件及其元件组件的纹理:@ArchEzekiel
- EMC元件、压紧样板展示器和插入卡的纹理:@NerdySpider
常见问题
C.E.L.L.S 支持哪些 Minecraft 版本?
C.E.L.L.S 支持 Minecraft Java 版 1.12.2,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
C.E.L.L.S 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
Aedial 的其他作品
查看全部 →Spellcaster’s Archives
Electrobob's Wizardry 附属模组,为你的所有法术增添一座取之不尽的典藏库,再也不用把它们扔进垃圾桶了!
AE2 PowerTools
一组实用工具,助你管理和调试应用能源2网络
Cell Terminal
一个 AE2 附属模组,提供集中式终端,可直接管理存储单元和存储总线。
Super Mob Tracker
一款适用于 Minecraft 1.12.2 的客户端模组,可选择生物查看其生成条件并实时追踪,无需任何道具。
评论
登录后评论和评分