移动速度

基本信息

属性 值
所属配置类 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 ❌

相关条目