CBC-Navigators

CBC-Navigators

为《Create:Big Cannons》添加三个级别的火控方块。输入目标坐标后,导航器会自动计算并设置您的火炮瞄准。

CBC 导航员

用于机械动力:大炮的火控计算机。无需再手动估算仰角和水平转角,输入目标坐标,让导航员方块为你计算并设定火炮的瞄准角度——其性能受机械计算时间、射程以及(在打孔卡等级上)资源消耗的制约,因此它是一个需要建造和供能的真实机器,而非一键胜利的按钮。

这是为机械动力:大炮制作的非官方第三方扩展,与其作者无关联,也未获其认可。


CBC 导航员增加了一系列以动能驱动的“计算机”方块,它们可以与火炮基座连接并为你进行瞄准。输入 X/Y/Z 目标坐标,为方块提供旋转速度以驱动其计算,一旦计算完成,它便会将正确的偏航角和俯仰角直接写入基座。无需再手动进行三角运算。

共有三个等级,每个等级都代表着真正的权衡取舍,而非单纯的升级路径:

  • 一级 — 机械台式计算机。便宜、简单,可在原版工作台合成。自带 GUI,无需消耗品。射程很远,但求解较为粗糙,属于“视线”级别的解算,附带严重的随机散布且无高度补偿——适合作为粗放的炮组,而非狙击手。
  • 二级 — 气动导航员。在机械动力动力合成器上制作。使用一次性的打孔卡:在装填站将目标、火药装药量、炮管长度、推进剂和炮弹参数打在卡上,然后将卡送入导航员。它会运行真实的抛物线弹道模拟(重力 + 阻力)并补偿高度差,精度高得多——代价是每次射击消耗一张卡,且需要手动选择装药量。
  • 三级 — 动力火控。顶级等级。连接到可自由旋转的火炮基座而非固定基座,因此不受 ±45° 水平转角范围限制。可设定全精度浮点瞄准(无整度取整),零散布,并且不仅仅解算角度——它会搜索每种已配置的炮弹 × 每种火药装药量,并推荐能够实际命中目标的最便宜组合。

所有三个等级都需要建造:面向正确类型的基座放置,接入旋转动力源,并且(对于二/三级)输入正确的弹药数据。计算本身需要消耗实际时间,且时间随 RPM 变化,因此更大的齿轮箱是提升火控速度的合理途径,而非仅仅作为装饰。

所有平衡数值(射程、散布、计算速度、阻力/重力常数、最大火药装药量、每种炮弹的阻力系数)都在服务器配置中公开,整合包/服务器管理员无需修改代码即可重新调整整个模组。

需求: NeoForge,Minecraft 1.21.1,机械动力 6.0.7–6.1.0,以及机械动力:大炮 5.11.0+。


工作原理

共同理念

每个导航员都是一个小的动力方块实体:它需要传入的旋转(一个传动轴,与任何机械动力机器相同)才能实际执行计算。没有动力,就没有结果——它将永远停留在“等待目标”状态。更高的 RPM = 更快的计算速度,但存在一个下限,因此即使使用荒谬的齿轮比也无法使其瞬间完成。

一旦它有了目标并且动力充足,它会随时间累积“计算刻”,完成后计算出偏航角/俯仰角并将其推送到它所连接的任何一个火炮基座上。

连接到基座

一级和二级连接到固定火炮基座。将导航员直接放置在基座面旁——方块会自动面向你放置时所点击的方向。固定基座自身的调整范围硬性限制在其放置朝向的 ±45° 内(这是机械动力:大炮自身的限制),这也使得这两个等级更像是防御性炮组而非自由炮塔。

三级连接到火炮基座(可自由旋转的那一种),方式相同——放置时面向基座方块。它不受 ±45° 限制;可以在该火炮建造时拥有的完整真实范围内进行水平和垂直旋转。

如果导航员没有面向有效的基座,或者基座尚未组装完成(火炮基座需要在其组装输入端口接收红石信号,机械动力:大炮才会构建实际的动态结构),导航员将报告该状态并拒绝解算。

一级 — 机械台式计算机

MTC - 合成

  • 合成:原版工作台,安山合金 + 红石 + 指南针。
  • 使用:右键点击打开坐标 GUI(X/Y/Z),输入目标,点击计算。窗口保持打开并显示实时状态。
  • 行为:默认射程大(400 格),但随机横向散布大(目标距离处 10–25 格,可在配置中调整),并且——默认情况下——不补偿目标高于或低于基座的情况。这是一种“大致指向那个方向并祈祷”的求解器,适合作为新手炮组。
  • 无消耗品。除了旋转动力和目标之外,无需输入任何东西。

二级 — 气动导航员

气动导航员 - 合成

  • 合成:机械动力的动力合成器,黄铜板 + 电子管 + 精密构件。

打孔卡 - 合成

  • 打孔卡是完整的交互界面。合成一张卡(纸 + 黄铜板,同样在动力合成器上),然后在远离火炮的地方:
    • 右键点击方块使用卡 → 将该方块的坐标打孔为目标。
    • 右键点击空气 → 循环切换存储在卡上的炮管长度(0–你配置的最大炮管长度)。
    • Shift + 右键点击火炮基座 → 将炮管长度重置为 0。
    • Shift + 右键点击空气 → 循环切换火药装药数 1–10。
    • Shift + 右键点击推进剂方块 → 将该推进剂的真实装药威力打在卡上,以便解算结果与你实际将要装填的内容相匹配。
    • Shift + 右键点击任何其他方块 → 将其打孔为炮弹类型(用于弹道解算中的阻力系数)。
    • 在物品栏中悬停查看卡片的实时提示:当前目标、装药量、炮弹、推进剂、炮管长度、该卡的预估工作射程以及其真实预期精度——这样你可以在开火之前判断设置是否真的能到达目标。
  • 装载:右键点击导航员插入一张打过孔的卡(空手右键点击可取出未使用的卡)。一旦导航员有足够的旋转动力,它就会进行解算、应用瞄准,并消耗掉这张卡。
  • 行为:使用卡片自身的装药量 × 推进剂强度来计算初速,运行真实的抛物线模拟(重力 + 阻力,均可配置),并且确实会补偿高度差。散布比一级更小(默认 2–5 格),但依然真实存在。

三级 — 动力火控

KFC(动力火控) - 合成

  • 合成:机械动力的动力合成器 — 8 个下界合金块环绕中心的复位弹簧。
  • 使用:右键点击直接打开其自身 GUI(开火无需卡片)— 输入 X/Y/Z 并点击计算,与一级相同。窗口会持续轮询并实时更新:当无法解算时,它会显示“连接火炮”/“未组装”的提示;工作时显示“计算中…”;完成后,会显示一个建议区域,包含它计算出的火药装药量和炮弹,以及预测的脱靶距离。
  • 如果你想让它知道装填了什么,你仍然需要告诉它:
    • Shift + 右键点击导航员上的推进剂方块 → 记录真实的推进剂强度。
    • Shift + 右键点击导航员上的炮弹方块 → 将其记录为“当前已装填”,以便建议搜索在已装填的炮弹同样能完成任务时,优先不提议更换。
    • Shift + 空手右键点击 → 以与二级卡片相同的方式循环切换炮管长度。正确设置这一点非常重要:炮管长度为 0 时将从基座方块本身瞄准,而非真实炮口,任何带有实际炮管的火炮都会因此导致弹道偏低。
    • 在此处,打孔卡仍然可用,仅作为便利功能:Shift + 右键点击将一张卡放入导航员,可复制卡上在装填站打好的推进剂/炮弹数据;或者用一张已打孔目标的卡直接右键点击,即可直接输入该目标。三级不会消耗卡片,并且忽略其装药量——它会自行计算。
  • 建议搜索:并非由你选择一个装药量然后寄希望于运气,三级会尝试每一种已配置的炮弹 × 每一种装药量(1 到可配置的最大值),并选择使用最少装药量即可命中的组合,在平局时优先考虑你当前已装填的炮弹。这也是唯一一个设定精确、未取整的浮点俯仰角/偏航角的等级——另外两个等级会因机械动力:大炮自身固定基座的限制而被修剪为整度数——也是唯一一个无内置散布的等级,因为该等级的全部意义在于“在模拟允许的范围内尽可能精确”。

快速设置清单

  1. 建造(或找到)一个固定火炮基座(一/二级)或一个火炮基座(三级),并按照机械动力:大炮的常规方式在其上组装一门火炮。
  2. 将匹配的导航员等级方块直接面向该基座放置。
  3. 为导航员提供旋转动力源 — 一个传动轴就足够了,但更高的 RPM 意味着更快的解算速度。
  4. 一级 / 三级:右键点击导航员,输入目标坐标,点击计算。二级:在远离火炮的地方准备一张打孔卡(目标 + 装药量 + 炮管长度 + 推进剂 + 炮弹),然后右键点击导航员以装载它。
  5. 等待计算完成(进度由 RPM 驱动 — 更大的齿轮箱可加速此过程)。基座的瞄准会自动更新。
  6. 像平常一样自行装填并发射火炮——导航员只负责瞄准,不负责装填或发射。

配置

所有平衡数值(最大射程、散布、计算速度、重力/阻力常数、默认推进剂强度、三级将尝试的最大火药装药量、每种炮弹的阻力系数以及三级的解算刻预算)都位于模组的服务器配置文件中,每个等级一个分区,可在不修改任何代码的情况下,根据整合包/服务器需求自由调整。