建筑师时光

建筑师时光

一个可配置的日历、季节、时钟HUD,以及适用于NeoForge的季节性作物生长框架。

Architects Time

Architects Time 是一个适用于 NeoForge 上 Minecraft 1.21.1 的可配置日历、季节、时钟和季节性生长框架。

它为玩家提供同步的游戏内日历和时钟,同时为整合包作者和开发者提供一个可复用的、数据驱动的季节机制、进度、作物系统、任务、事件以及其他与时间相关内容的开发基础。

Architects Time 是一个独立框架。它不需要 Architects Core 或其他 Architects 模块。

日历与季节

Architects Time 包含一个可直接使用的标准日历,具有:

  • 春季
  • 夏季
  • 秋季
  • 冬季
  • 每个季节 28 个 Minecraft 天
  • 每个季节四周,每周七天
  • 每年 112 个 Minecraft 天

标准日历还支持季节的早/晚阶段。

这只是附带的默认设置。整合包作者并不局限于四个季节或这种日历结构。

日历定义是数据驱动的,可以自定义:

  • 季节
  • 月份或日历周期
  • 周期长度
  • 周长度
  • 星期名称
  • 季节阶段
  • 显示名称
  • 符号和图标
  • 日历布局

日历与时钟 HUD

Architects Time 包含一个可配置的 HUD,可以直接在游戏中显示日历和时钟信息。

根据所选的布局,HUD 可以显示如下信息:

  • 季节
  • 季节阶段
  • 日历周期
  • 周
  • 星期
  • 季节中的天数
  • 年中的天数
  • 年份
  • Minecraft 时间

支持 12 小时和 24 小时两种时钟格式。

服务器提供活动的日历定义,而玩家可以配置客户端 HUD 选项,例如可见性、位置、缩放和时钟显示方式。

服务器同步时间

日历以服务器为权威,并在连接的玩家之间进行同步。

Architects Time 将日历进程与单纯的 Minecraft 天体时钟读数分开,允许整合包作者围绕稳定的日历构建系统,而不是直接依赖原始世界时间。

正常的进程推进、睡觉以及受支持的时间推进都会反映在日历上。

管理命令和公共 API 也可以显式地检查或修改日历时间。

季节性作物生长

Architects Time 包含一个数据驱动的季节性生长框架,适用于作物和其他支持的生长方块。

生长规则可以将作物分类为:

  • 适宜
  • 耐受
  • 反季
  • 受保护
  • 未配置

附带的推荐行为允许作物在其适宜季节生长更快,在非适宜季节生长更慢,而不会摧毁作物或永久阻止其生长进程。

未配置的作物保留其正常的 Minecraft 行为。

季节性生长规则可以针对单个方块或标签,并可通过数据包进行自定义。

作物保护与兼容性

Architects Time 不实现自己的温室或作物保护结构。

相反,它提供了一个保护 API,其他模组和整合包特定系统可以使用该 API 来告知 Architects Time 何时应将作物视为受保护状态,免受季节惩罚。

这允许温室系统、魔法种植区、机器或其他机制进行集成,而无需 Architects Time 拥有这些系统本身。

Jade 集成

Jade 是可选的。

当安装了 Jade 时,受支持的作物可以显示附加信息,例如:

  • 季节性分类
  • 当前生长倍率
  • 预计成熟时间

生长时间可以使用 Minecraft 日历时间或近似的现实时间参考来显示。

由于正常的 Minecraft 作物生长使用随机刻,成熟信息以估计值形式呈现,而非精确的倒计时。

KubeJS 集成

KubeJS 是可选的。

Architects Time 向 KubeJS 开放日历和时间功能,以便整合包作者可以在脚本和进度系统中使用活动日历。

这可用于以下系统:

  • 季节性活动
  • 任务要求
  • 定时进度
  • 基于时间的解锁
  • 自定义季节机制

Architects Time 的正常功能不需要 KubeJS。

为整合包作者准备

Architects Time 主要构建为可复用的基础设施,而非与特定整合包绑定的日历。

日历定义从以下位置加载:

data/<命名空间>/architectstime/calendars/<名称>.json

季节性生长规则从以下位置加载:

data/<命名空间>/architectstime/seasonal_growth/<名称>.json

附带的日历定义提供了一个完整的工作示例。

日历周期也可以为 HUD 显示使用自定义资源包图标或现有的 Minecraft/模组物品图标。

开发者 API

Architects Time 在以下位置提供了一个受支持的 Java 集成 API:

com.silentvector.architectstime.api

该 API 包含用于以下方面的系统:

  • 日历快照
  • 日历转换
  • 时间推进
  • 时长格式化
  • 季节性生长适配器
  • 生长预估
  • 季节保护提供者
  • 日历事件

公共 API 之外的实现包被视为内部实现,可能会在各版本之间发生变化。

命令

玩家可以使用 Architects Time 的只读命令,而修改日历时间的命令需要管理员权限。

示例包括:

  • /architectstime date
  • /architectstime time
  • /architectstime season
  • /architectstime calendar
  • /architectstime add days <数值>
  • /architectstime add ticks <数值>
  • /architectstime set date <年> <周期> <日>
  • /architectstime set time <时:分>
  • /architectstime set season <季节> [天]

此外还有适用于整合包开发者和服务器管理员的调试命令。

要求与兼容性

  • Minecraft: 1.21.1
  • 模组加载器: NeoForge 21.1 或更新版本
  • Java: 21
  • 环境: 客户端和服务端
  • 可选: Jade 15 或更新版本
  • 可选: KubeJS 2101.7 或更新版本

Architects Time 必须同时安装在服务器和连接的客户端上。

Architects Time 不 需要 Architects Core 或其他 Architects 模块。

关于项目

Architects Time 由 Silent Vector Studios 开发。

该项目是开源的,旨在提供一个可复用的时间和季节框架,供模组开发者和整合包作者在此基础上构建,而不是要求每个整合包都创建自己的日历实现。

随着公共 API 和兼容性范围的不断增长,反馈、Bug 报告、集成想法以及关于异常模组作物或时间系统的示例尤其有用。

Architects

Architects Time 是 Architects 项目系列的一部分,该系列是一组可复用的工具、框架和集成,旨在帮助模组作者和整合包作者连接和扩展 Minecraft 系统,而无需将所有内容强制整合到一个单一的庞大模组中。

许可证

Architects Time 以 GPL-3.0-only 许可证发布。