Skip to content

🐑 生物停滞与农场生物学自然老化

📌 代码仓库源码声明:本 Wiki 中的文档反映了代码仓库当前的最新源码状态,可能包含尚未在 CurseForge 和 Modrinth 上发布的开发中功能或最新提交。


🛡️ 生物停滞(AI 冻结)机制

在超高速时间曲速推进期间,快速移动的敌对生物(僵尸、骷髅、苦力怕等)可能会在玩家来不及反应的情况下淹没基地或袭击正在就寝的玩家。

True Sleep 引入了 生物停滞 (Mob Stasis) 机制: 当启用 truesleep:freeze_mobs(默认:ON)时,所有生物的寻路 AI、移动与攻击目标均会在睡眠期间被优雅暂停。

工作类生物免冻结豁免

村民 (Villager) 与悦灵 (Allay) 被统一归类于 #truesleep:worker_mobs 标签之下。 默认情况下,truesleep:freeze_workers 设为 OFFfalse),允许村民在黄昏与入夜时顺畅走回床铺或工作站点。


🌾 农场生物学生理时钟演进

即使生物的移动与寻路 AI 处于停滞状态,其体内的生物学生理时钟仍会通过 BiologicalStasisHelper 持续运转

1. 幼年动物生长与繁殖冷却推进

幼年牛、羊、猪、鸡及狼在睡眠期间正常生长发育:

java
if (mob instanceof AgeableMob ageable) {
    int currentAge = ageable.getAge();
    if (ageable.canAgeUp()) {
        ageable.setAge(Math.min(0, currentAge + strideTicks));
    } else if (currentAge > 0) {
        ageable.setAge(Math.max(0, currentAge - strideTicks));
    }
}

2. 鸡下蛋计时器递减

鸡的下蛋计时器会随 strideTicks 准确扣减,确保自动化收集鸡蛋农场整夜无缝产出: $$\text{eggTime} = \max(1, \text{eggTime} - \text{strideTicks})$$


3. 羊毛自然生长(吃草生理模拟)

被剪毛的绵羊通常需要执行吃草动画才能重新长出羊毛。在停滞状态下,True Sleep 通过数学概率模拟其吃草行为:

$$\text{grazeChance} = \min\left(1.0, \frac{\text{strideTicks}}{1000.0}\right)$$

如果被剪毛的绵羊脚下踩着 minecraft:grass_block(草方块),每个跨步均有 $\text{grazeChance}$ 的概率将该草方块转化为 minecraft:dirt(泥土),并立即恢复其羊毛外衣(sheep.setSheared(false))。


🧪 状态效果与药水时间流逝

所有活体生物身上生效的药水效果在睡眠期间均会精准推进:

  • 增益效果(力量、生命恢复)与减益效果(中毒、凋零)的持续时间均会按 strideTicks 同步扣减。
  • True Sleep 运用鸭子类型扩展接口 (MobEffectInstanceExtensions),确保级联隐藏效果(如升级版药水效果)能够平滑过期,杜绝死循环或逻辑故障。

🎛️ 控制游戏规则 (GameRules)

  • truesleep:freeze_mobs(默认:true):暂停敌对生物与环境生物的移动。
  • truesleep:freeze_workers(默认:false):暂停村民与悦灵。
  • truesleep:biological_aging(默认:true):启用幼年动物生长、下蛋计时与羊毛再生。
  • truesleep:unfreeze_<namespace>_<path>:为任意特定实体类型提供独立的单独解冻开关。

Official documentation & web portal for Dasik Igaijinn mods.