超越维度

超越维度

超越维度是一个提供存储解决方案的模组。它引入了一个可在原版游戏后期获得的虚拟存储系统。

Beyond Dimensions

Beyond Dimensions 是一个专注于存储和实用功能的模组。它引入了一个“维度网络” —— 一个支持物品、流体、FE 能量、经验值、Mekanism 的化学物质、Ars Nouveau 的源质、Botania 的魔力以及 Industrial Foregoing 的魂灵的通用存储系统。它兼具卓越的存储容量和性能,以及友好的用户界面,能轻松满足大多数场景下的存储需求。

入门指南

你需要击败凋灵,或通过其他任何方式获取一个下界之星。将其合成为不稳定的时空碎片。将该碎片保留在物品栏中一个小时,它会转变为稳定的时空碎片。使用它来合成一个维度网络生成器并激活,以创建你的维度网络。然后,只需按下快捷键(默认:'O')即可打开存储界面。

存储系统

  • 容量: 默认存储容量即为最大值。它可以存储 21 亿种不同的物品或资源类型,每种类型最多可容纳 2^63^-1 个单位(Java long 类型的最大值)。可存储的最大类型数量、每种类型的容量上限以及扩展存储的方法,都可以通过 KubeJS 进行自定义。
  • 性能: 存储系统经过了广泛优化。无论是在连接 AE2 还是仅使用本模组的情况下,性能测试结果都非常出色。具体测试结果请参见性能测试部分。
  • 多人游戏: 存储系统使用玩家权限绑定网络。单个网络可以与多个玩家共享。另外,也可以通过物品形式的终端来实现共享。

UI 界面

直观的存储界面: 该模组提供了一个遵循与 AE2 和 RS 等流行存储模组一致交互逻辑的界面。

  • 内置合成方格。
  • 多种搜索模式:直接文本输入可搜索名称、提示文本或模组 ID。前缀使用 # 可严格匹配提示文本。前缀使用 @ 可严格匹配模组 ID。
  • 可自定义显示物品行数。
  • 多种排序选项:按存入时间、按数量、按名称、按模组 ID。

通用槽位系统: 模组内任何 GUI 中的任何槽位都可以存储所有支持的资源类型,并支持快速交互机制。

快速容器操作:手持对应容器右击一个槽位,可快速从容器存入/取出资源。例如:手持潜影盒、精制背包或任何容器右击一个槽位,可将物品快速存入容器;右击空槽位,则从容器中快速取出物品放入该槽位。此操作支持流体、Mekanism 的化学物质,甚至 FE 能量。

自动化支持与实用工具

该模组提供了用于自动化的方块和实用工具物品。这些方块需要绑定到网络,并且大多支持红石控制,从而能够通过存储与其他模组进行交互。

  • 维度网络通路: 暴露维度网络的全部存储内容。允许通过管道、漏斗、AE2/RS 存储总线以及精制背包卸载升级进行输入/输出。
  • 维度网络能量通路: 功能与网络通路几乎完全相同,但专用于 FE 能量传输。其 UI 会显示当前 FE 能量通量。支持“弹出模式”,以 21 亿 FE/刻的速度向相邻方块输出 FE。
  • 网络接口: 类似于 ME 接口。拥有“样板槽”和“存储槽”。尝试将存入的资源放入网络,并从网络中取出在样板槽中标记的资源。支持弹出模式。
  • 网络泵: 主动从相邻的容器中抽取资源,并将其存入维度网络。拥有支持黑名单/白名单模式的过滤槽。
  • 网络漏斗: 吸收附近的物品实体甚至流动的流体,将其直接存入网络。其工作范围可调节(从 2 格范围到整个区块)。范围越大,工作间隔越长。拥有支持黑名单/白名单的过滤槽。
  • 网络熔炉: 允许标记配方(输入和燃料)。自动从网络中提取标记的资源进行烧炼。支持 FE 或熔岩作为燃料。成品可以弹出到相邻容器或存回网络。
  • 网络喂食器: 当玩家的饥饿值低于其配置的阈值时,它会从网络中喂给玩家标记的食物。不会消耗“无尽”食物,如无尽培根或永恒牛排。可装备在 Curios 的护符槽中。
  • 网络磁铁: 类似于网络漏斗,但可随身携带。吸收物品实体的频率高于漏斗。有快捷键切换。可装备在 Curios 的护符槽中。
  • 主手物品快速转移: 中键点击一个方块,可立即从网络中提取一组手持类型的物品。潜行 + 中键点击可将手持物品存回网络。此按键可配置。

模组集成与支持

  • 支持在 JEI/EMI 中拖拽标记虚拟材料以及快速配方转移。
  • JEI/EMI 虚拟材料标记可以识别存储在 AE2 泛型堆栈中的物品。
  • 添加了一个 AE2 维度 ME 存储元件,用于读取已绑定网络的内容。与使用存储总线相比,性能提升超过 10 倍。
  • 支持存储 Mekanism 的化学物质。
  • 合成方格支持 Polymorph 模组。
  • 便携网络终端 可装备在 Curios 的护符槽中。安装了 Beyond Dimensions 与 Curios 会额外增加一个护符槽。
  • KubeJS 支持: 暴露了部分类,允许自定义网络创建逻辑、初始容量、扩展方法以及对存储的直接操作。
  • 由于 UI 修改巨大,与 Inventory Profiles Next (IPN) 模组不兼容,因此在其 GUI 内禁用了 IPN。请使用 Mouse Tweaks 进行快速转移。

附属开发与 KubeJS 自定义帮助

附属开发

通过代码添加新的可存储资源类型非常简单。实现以下接口,并注册资源类型及对应的处理器:

  1. IStackType - 使模组能够识别并存储此资源类型。
  2. IStackHandlerWrapper - 使模组能够以编程方式与持有此资源的容器/模组方块进行交互。
  3. CapabilityHelper.BlockCapabilityMap - 允许通过其他模组的管道/存储总线从方块访问此资源类型。
  4. CapabilityHelper.ItemCapabilityMap - 为持有此资源的物品启用快速容器槽交互(中键点击)。
  5. UnifiedStorage.typedHandlerMap - 允许维度网络核心存储操作此资源。
  6. StackTypedHandler.typedHandlerMap - 允许外围方块(如网络接口)在其内部槽位中操作此资源。

即使跳过与 AE2 的特殊兼容性,也不会阻止使用存储总线进行读取:

  1. AEHelper.ISTACK_TO_AEKEY_MAP - 将 Beyond Dimensions 的资源对象映射到 AE2 键(用于读取维度 ME 存储元件)。
  2. AEHelper.AEKEY_TO_STACK_TYPE_MAP - 将 AE2 键映射回 Beyond Dimensions 的资源类型(用于维度 ME 存储元件操作)。

实现示例请参考模组的主注册文件。注意:注册细节在未来版本中可能发生变化。

KubeJS 自定义帮助

自定义网络容量:

  1. 禁用默认的维度网络生成器配方。
  2. 使用提供的 KubeJS 暴露的类/方法来实现你自己的网络创建和扩展逻辑。
类名 方法签名 返回类型 静态 用途
DimensionsNet createNewNetForPlayer(Player player, long defaultSlotCapability, int defaultSlotMaxSize) DimensionsNet 是 为指定玩家创建一个维度网络。defaultSlotCapability:每种资源类型的最大单位数。defaultSlotMaxSize:最大资源类型数量。
getNetFromId(int id, MinecraftServer dataProvider) DimensionsNet 是 通过数值 ID 获取一个 DimensionsNet 对象。
getNetFromPlayer(Player player) DimensionsNet 是 获取绑定到指定玩家的 DimensionsNet。
getUnifiedStorage() UnifiedStorage 否 获取代表此网络存储内容的 UnifiedStorage 对象。
UnifiedStorage setSlotCapacity(long capacity) void 否 为此网络中每种资源类型设置最大存储容量(单位数)。
setSlotMaxSize(int maxSize) void 否 设置此网络可以存储的不同资源类型的最大数量。

此外,该模组还向 KubeJS 公开了一些其他类。详情请见。

UnifiedStorage 类还包含大量其他方法,允许你直接修改玩家的存储内容。

该模组的 API 带有完整的中文注释。请。

其他信息

性能测试

测试涵盖了同一台机器上相同背景条件下的三种场景,使用了 Spark 模组。所有测试均使用了 1319 个随机生成的独特物品。

  1. 独立 Beyond Dimensions: 通过 Beyond Dimensions 存储/修改物品。通过 Mekanism 管道输入/输出。
  2. 通过 AE2 存储元件的 Beyond Dimensions: 网络通过维度 ME 存储元件连接到 AE2。通过 Mekanism 管道输入/输出。
  3. 原生 AE2 存储: 物品存储在标准 AE2 驱动器(21 x 64k 存储元件)中。通过 Mekanism 管道输入/输出。

注:场景 1 使用 Beyond Dimensions 的方块(维度网络通路、网络接口),反映了模组的核心性能。场景 2 和 3 使用相同的 AE2 设置(导出总线、ME 接口、无限频道),仅存储来源不同,可直接进行比较。

结果:

测试环境 TPS MSPT(中位数) MSPT(第 95 百分位) 已加载区块 实体数量
独立 Beyond Dimensions 20 3.67 4.86 2601 13
AE2 + 维度 ME 存储元件 20 2.97 3.37 2601 13
AE2 原生存储 20 2.70 3.08 2601 13

详细的 Spark 性能分析报告和测试设置信息。

开发路线图(即将推出的功能)

  • 将原版物品/流体存储最大容量更改为 64 位整数(已完成)。
  • 经验值(XP)存储及实用工具。
  • Ars Nouveau 源质存储及实用工具。
  • 专门用于精致存储(RS)的存储组件。
  • 添加进程机制(初始提供有限存储,需要扩展)。
  • 更多自动化实用工具和功能。
  • 更多实用物品和装备。

支持版本

MC 版本 加载器 模组版本 状态
1.21.1 Neoforge 0.3.0+ 积极更新中
1.20.1 Forge / Neoforge 0.3.0+ 积极更新中
1.12.2 Forge 0.1.7.4 仅维护(仅关键错误)

在支持版本路线图基本完成之前,没有计划支持其他 Minecraft 版本。