移动速度
基本信息
| 属性 | 值 |
|---|---|
| 所属配置类 | MovementConfig(config/MovementConfig.java) |
| 字段 | public static float speed |
| 类型 | float |
| 默认值 | 1.0f(@Config.DefaultFloat(1.0f)) |
| 取值范围 | @Config.RangeFloat(min = 0.2f, max = 10.0f) |
| 服务端同步 | ❌ 无 @Config.Sync |
| 配置分类 | @Config(modid = "freecam-gtnh", category = "movement") |
| 配置注释 | Freecam default movement speed |
这是全 mod 唯一带范围约束的配置项,也是唯一注册在 movement 分类下的两项之一。
门控的行为
FreecamController.tick()(FreecamController.java:284):
double speed = MovementConfig.speed * speedMultiplier;
if (sprint) speed *= SPRINT_MULTIPLIER; // 1.5
if (MovementConfig.movementMode == MovementMode.CREATIVE) {
tickCreativeMovement(…, speed * CREATIVE_SPEED_SCALE); // × 2.0
} else {
tickDefaultMovement(…, speed * DEFAULT_SPEED_SCALE); // × 0.5
}
它是基值,最终每 tick 位移还要叠加三层系数:
| 层 | 系数 | 来源 |
|---|---|---|
| 配置基值 | MovementConfig.speed |
本条目,范围 0.2 ~ 10.0 |
| 滚轮倍率 | speedMultiplier,默认 1.0F,范围 0.1 ~ 10.0 |
运行时变量,不持久化 |
| 疾跑 | SPRINT_MULTIPLIER = 1.5 |
按住原版疾跑键 |
| 模式系数 | CREATIVE × 2.0 / STATIC × 0.5 |
由 移动模式 决定 |
DIAGONAL_FACTOR = sin(45°) 在前进与平移同时进行时对水平分量做归一化,与本配置无关。
滚轮倍率是独立的运行态变量
speedMultiplier 是 FreecamController 的实例字段,不是配置项,源码里没有任何持久化:
| 属性 | 值 |
|---|---|
| 字段初值 | 1.0F |
| 调整步进 | SPEED_SCROLL_STEP = 0.1F |
| 下限 / 上限 | SPEED_MULTIPLIER_MIN = 0.1F / SPEED_MULTIPLIER_MAX = 10.0F |
| 取整 | Math.round(speedMultiplier * 10.0F) / 10.0F(保留一位小数) |
| 触发 | adjustSpeed(int scrollDelta),由 MouseEvent.dwheel 驱动 |
| HUD | 输出 msg.freecam.speed,格式 Speed: %.1fx |
adjustSpeed 仅在自由相机已激活时被调用(onMouseEvent 中先判 isActive()),
且当 Angelica 已加载且其 Zoom 键按下时会 return 让出滚轮(见 兼容模组)。
FreecamController.reset() 会换掉整个单例,因此连上服务器后倍率回到 1.0×。
其它配置项
MovementConfig 共 2 项:
| 字段 | 类型 | 默认值 | 服务端同步 |
|---|---|---|---|
speed |
float(0.2 ~ 10.0) |
1.0f |
❌ |
| movementMode | MovementMode |
CREATIVE |
❌ |