
应用斩击
AE2存储元件,适用于类型密集型工作负载——数千把独特的SlashBlades,或任何不可堆叠的物品。
Applied Slash — SlashBlade 与不可堆叠存储元件
专为类型密集型负载打造的存储方案。 AE2 自带的存储元件被硬性限制在 63 种类型。但 SlashBlade、附魔装备和带有磨损的工具每一个都是独立的存储键——63 远远不够。Applied Slash 添加了两个 ME 存储元件,配备自定义元件库存,将类型上限提升至数千,并将数据负载迁移到世界侧的碎片化存储中。
两种元件
SlashBlade 存储元件
- 仅接受 SlashBlade——双重检测(物品标签
slashblade:swords+ItemSlashBlade类检查),因此附加模组的刀也能被覆盖 - 默认上限:5000 种类型(可配置 64 – 20000)
- 始终优先询问此元件。 传入的刀会落入此处,不受任何其他存储全局优先级的影响
- 插入时会剥离运行时状态,因此同一把刀无论处于何种战斗状态都算作同一个键——这是降低每 tick 网络开销最有效的方法
不可堆叠物品存储元件
- 仅接受不可堆叠物品(
getMaxStackSize() == 1) - 排除 SlashBlade(它们始终进入刀元件——归属由规则决定,绝不由遍历顺序决定)
- 排除存储元件(不允许元件嵌套)
- 默认上限:2000 种类型(可配置 64 – 20000)
- 不剥离任何内容。 工具的耐久度、附魔和自定义名称就是它的身份——因此每一件磨损不同的工具都会占用一个类型槽位
兼容性
| 组件 | 版本 |
|---|---|
| Minecraft | 1.21.1 |
| NeoForge | 21.1.250+ |
| Applied Energistics 2 | 19.2.17+ (使用元件所必需) |
| SlashBlade: Resharpened | 2.0.7+ (可选——仅刀元件需要) |
| 环境 | 客户端和专用服务器 |
没有 AE2 时不会注册任何内容(会输出一行日志说明)。没有 SlashBlade 时元件仍然存在,但不接受任何物品——工具提示会明确说明这一点,而不是假装元件是空的。
性能(实测,非估算)
真正关键的是每 tick 的网络缓存重建,其开销与整个网络中可见的不同键的数量成正比。在专用服务器上实测,单个元件:
| 类型数量 | 最佳情况每 tick 开销 |
|---|---|
| 200 | 0.011 ms |
| 1000 | 0.090 ms |
| 2000 | 0.292 ms |
| 5000 | 0.959 ms |
其中大部分开销发生在 AE2 自身的 KeyCounter 内部,而非本模组——因此唯一真正可控的杠杆是你在网络中保留了多少个不同的键。这正是类型上限存在的原因,也是它们可配置的原因。
其他实测数据:
- 元件物品的 NBT:恒定 1089 字节,无论存储了多少内容
- 数据负载存放于 16 个世界侧碎片中——单次更改只重写脏的 1/16
- 插入:5000 种类型时每次操作 约 4.1 µs
- 5000 个键同步到客户端约 108 KB
致整合包开发者
| 配置项 | 默认值 | 备注 |
|---|---|---|
maxTypes |
5000 |
刀元件类型上限。请根据你的服务器规模调整 |
unstackableMaxTypes |
2000 |
不可堆叠元件类型上限 |
stripRuntimeState |
true |
保持开启——它会将同一把刀在不同战斗状态下合并 |
acceptBeyondMaxTypes |
false |
保持关闭。开启会移除唯一的性能防线 |
建议: 在繁忙的整合包中,将 maxTypes 设置为 1000–2000(0.09–0.29 ms/tick)。当你的 tick 预算有余量时,5000 也可以。
已知限制(请阅读)
- 元件无法预填充,其数据负载也无法通过复制物品来迁移。 刀的数据存储在世界侧;元件物品只是一个键。将元件复制到另一个存档会得到一个空壳,世界侧会报告“此存档中未找到刀数据”——工具提示中已如实说明。
- 不支持元件工作台分区,也不支持升级卡(模糊 / 反相 / 均分 / 虚空)。这是有意为之:对于一个只接受特定物品的元件,分区毫无意义,而一个不起作用的白名单只会是虚假功能。
- 不包含捆绑依赖——请单独安装 AE2(以及 SlashBlade,如果你需要刀元件)。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。