航空运输任务

航空运输任务

为你的服务器添加程序化的运输合同。玩家可以接受任务,前往偏远的村庄获取实体货物,并驾驶他们定制的飞艇将这些重型刚体运送到目的地村庄以获得丰厚奖励。

🗺️ TNM 航空任务

为机械动力:航空与 Sable 打造的高风险贸易扩展

TNM 航空任务(原名航空运输任务)是一款轻量级、高性能的 NeoForge 1.21.1 模组,可为你的服务器添加程序生成的运输合约。玩家可以接取任务,前往偏远地点获取实体货物,并驾驶自己打造的飞艇将这些重型刚体运送到目的地定居点,以获取丰厚奖励。

TNM 航空任务必须在客户端和服务器端同时安装(单人游戏仅需客户端),以处理自定义界面渲染、方块资源和数据包同步。


🚀 主要特性

  • 📦 动态与自定义任务:玩家可通过运输任务台方块(管理员可使用 /adq 命令)浏览可接取的合约,任务分为轻型、中型和重型三个重量等级,并配有动态计算的路线和量身定制的奖励。创作者可以在 custom_quests.json 中使用自定义 NBT 模板设计自定义任务条目!
  • ⚖️ Sable 物理集成:动态加载原理图模板(如板条箱、托盘和安全集装箱),并在固定后将其编译为Sable 动态物理刚体。
  • 🧭 虚拟校准指南针:发放原版任务指南针,可动态指向货物取货点或目的地位置。丢失了指南针?可通过任务台菜单中的 GUI 控制面板立即获取替代品。
  • 🔒 损坏惩罚与防护:可配置的无敌模式(enableCargoInvulnerability)。关闭时(默认),货物方块可被破坏,任何缺失的质量都会按比例减少你的奖励!开启时,货物将完全免受破坏、爆炸和生物破坏。无论哪种模式,货物方块永远不会掉落物品——运输合约不会提供免费战利品。
  • 🧩 分裂追踪与碎片清理:如果货物装置分裂为多个物理体,任务将继续以主体为追踪目标(分裂部分损失的方块计为缺失质量),分离的碎片继承完整的方块保护,当任务完成、失败或取消时,所有碎片与货物一同被清理。
  • 👻 无缝货物生成:实体货物会在接近的飞行员仍处于渲染距离之外时预先生成(cargoSpawnDistance,默认 250 格),因此玩家抵达时货物已经就位——不会有可见的弹出。固定操作仍在取货点进行。
  • ⏳ 任务板过期与玩家冷却:任务板上未接取的合约会在 60 分钟后轮换。1 小时的玩家冷却时间可防止任务刷取(管理员/操作员自动豁免)。

🔍 常见疑问解答(FAQ)

💻 需要客户端安装吗?

是的。由于该模组引入了实体运输任务台方块、自定义剪贴板菜单、客户端屏幕界面渲染和网络同步数据包,因此必须在服务器和客户端同时安装(单人游戏仅需客户端)。

📉 生成过程中会导致卡顿或 TPS 骤降吗?

不会。为了防止经典的结构查找卡顿,所有村庄搜索和寻路计算均在完全异步的后台线程(ForkJoinPool)中运行。只有最终的方块放置被调度到主线程上执行,确保你的服务器稳定运行在 20 TPS。

🛡️ 这会阻止玩家改装自己的飞艇吗?

不会。方块保护具有高度针对性:它只拦截活跃运输任务货物(包括从其分裂出的任何碎片)精确物理体边界内的破坏行为,以及其主世界取货覆盖区域。无敌防护仅在配置中启用 enableCargoInvulnerability 时生效。普通飞艇、方块和结构保持 100% 可破坏。无论设置如何,始终适用一条规则:货物方块永远不会掉落物品,因此合约无法被挖掘以获取免费战利品。

🌀 如果货物生成在世界边界外、地下、水下或建筑物内部怎么办?

  • 视野外预生成:货物会在接近的飞行员仍处于渲染距离之外时实体化(cargoSpawnDistance,默认 250 格),因此不会有人看到它弹出。
  • 安全空气柱生成:模组会扫描起始坐标周围水平 $33\times33$ 的区域,寻找坚固平坦的落脚点。它会检查整个生成空间(及其下方的空气方块)是否 100% 为空空气,货物将生成在 3 格空中,使其在重力作用下干净地落下,不会卡入方块或被破坏。
  • 垂直安全回退:如果附近未找到平坦地形,模组会将货物安全生成在原始目标坐标最高实心方块上方 4 格处,确保其绝不会嵌入地面结构或房屋内。
  • 水域与虚空安全:在海洋和湖泊上方,货物会降落在水面上而不是沉入海底。在浮空岛/虚空世界类型中,生成系统会检测空列并重试其他地方,而不会将货物丢入虚空。
  • 边界缓冲:引擎强制执行严格的150 格安全缓冲距离,远离世界边界。如果潜在生成点过于靠近或超出边界,任务将被立即中止。

💾 服务器重启后状态会保留吗?

是的。所有进行中的任务、已接取状态、货物位置和玩家冷却时间都会持久化存储在服务器世界存档文件夹中的 GSON JSON 注册表(adq_quests.json 和 adq_cooldowns.json)中。过期的指南针也会在玩家登录时自动清除,以处理离线期间的任务过期。


🛠️ 命令参考

[!NOTE] 所有 /adq 命令都需要操作员权限(2 级以上)。普通玩家必须使用实体运输任务台方块来打开任务板、取消合约或重新发放指南针。

  • /adq — [管理员] 打开虚拟任务板与命令控制面板。
  • /adq cancel — [管理员] 放弃当前合约(召回实体货物并清除指南针)。
  • /adq compass — [管理员] 重新发放任务运输指南针(仅当处于进行中的任务且尚未拥有指南针时可用)。
  • /adq generate — [管理员] 强制触发后台程序化任务生成。
  • /adq complete — [管理员] 强制完成当前运输合约。
  • /adq delete <index> — [管理员] 干净地强制删除指定索引的任务板任务。
  • /adq deleteall — [管理员] 清空任务板上的所有任务。
  • /adq reload — [管理员] 从磁盘重新加载任务、玩家冷却时间和自定义任务模板。