
ADBlock不断计时
不在时农场仍会继续运作。在未加载的区块中,作物生长、熔炉冶炼、动物成长,均以封闭形式重建,因此一周不在所花费的时间不超过一分钟。仅服务器端。
AD Block Keeps Ticking
Minecraft 只会模拟你周围的世界。离开农场后,它便凝固在生长中途:农作物停止生长,熔炉停止燃烧,羊羔保持幼年。一小时后归来,一切都未曾移动。
这个模组会重建那段时光本应产生的结果。
功能说明
当一个区块停止被模拟时,会被打上时间戳。当你返回时,模组会计算经过的时长并一次性应用:农作物继续生长,熔炉烧尽燃料,甘蔗向上堆叠,树苗长成大树,动物长大成年。
关键在于,这一切都不是通过重放游戏刻来完成的。每个方块的最终状态直接从经过的时间推算得出,因此离开一周的时间成本不会超过其中的一分钟。工作负载还会分散到最多 20 个服务器刻上,所以回到基地时不会造成卡顿。
会被模拟的内容
- 农作物 —— 小麦、胡萝卜、土豆、甜菜根以及模组作物。使用原版自身的生长速度公式,因此耕地湿度、土壤类型和作物密度仍然生效。
- 藤茎作物 —— 南瓜和西瓜。
- 其他植物 —— 下界疣、可可豆、甜浆果、甘蔗、仙人掌。
- 树苗 —— 两个生长阶段以及树木本身,包括 2x2 大型树种。
- 耕地 —— 干燥、在水源或雨水旁重新湿润、在无作物时变回泥土。有作物在上方时绝不会退化。
- 熔炉 —— 熔炉、高炉、烟熏炉以及模组变种。熔炼经验值会被保留。
- 酿造台 —— 完成已经开始的酿造过程。
- 动物 —— 幼崽成长、繁殖冷却结束。
刻意不模拟的内容
以上所有内容都是独立的进度系统:其状态只取决于自身和经过的时间。这正是能够得出精确答案的原因。而耦合的系统 —— 一个方块供给另一个方块、顺序至关重要的系统 —— 没有这样的答案,因此保持原样,而不是进行粗略的近似估算。
- 红石。事件驱动的状态机。要知道一周后的状态意味着要运行数百万次状态转换,而且它会通过活塞和投掷器任意改变世界。原版已经保存了待处理的计划刻,因此延迟中的中继器会自动正确恢复。
- 合成器。并非受时间驱动 —— 合成器每次红石脉冲只触发一次,因此其速率完全由无法模拟的时钟决定。未加载区块中的合成器正确地什么都不产出。
- 漏斗和物品传输。真实的布局会连锁、分叉并跨越区块边界,而相邻区块各自有独立的时间戳,因此在它们之间移动物品要么会重复计算,要么会凭空产生物品。
- 生物生成。没有遗漏任何内容。生成需要玩家在 128 格范围内,而敌对生物超过该范围就会消失,因此你离开期间“生成”的任何东西都不可能存活下来迎接你。生成它们是在发明机制,而不是恢复机制。
- 营火。原版会将烤好的物品掉在地上,而掉落物会在五分钟后消失。模拟它等于白送你一份那时不可能还在的食物。
由于收割不被模拟,自动化农场只会产出一批收成,而不是多批。无论你离开多久,甘蔗最高也只有三格高。误差方向经过设计,总是偏保守的。
睡觉机制
原版不给予睡觉生长加成 —— 它只是拨动时钟,而不推进游戏刻计数。本模组可选择性地补偿这段跳过的时间,并且做得始终如一:跳过的时间按维度存储,因此无论你是否站在农场旁边,睡觉带来的收益都是相同的。可通过 simulateAfterSleeping 选项关闭,以完全匹配原版行为。
与其他模组的兼容
生长过程经由 NeoForge 的 CropGrowEvent 路由,这与原版生长使用的钩子相同。任何通过标准事件控制农业的模组都会同样作用于补算过程,无需知道本模组的存在。
配置选项
timeMode(默认WORLD_TIME) ——WORLD_TIME仅计算世界运行期间的时间。REAL_TIME还会计算离线时间。minInhabitedTicks(默认6000) —— 居住时间低于此值的区块不会被模拟,这保证了探索新地形时的开销很低。lazyTaxPercent(默认0) —— 丢弃经过时间的这一比例,如果全额补算显得过于慷慨的话。maxCatchUpTicks(默认0) —— 单次补算的上限,主要与REAL_TIME搭配使用。设为 0 表示禁用。simulateAfterSleeping(默认true) —— 将跳过的世界时钟时间计入每个区块。disabledSimulations(默认空) —— 按名称关闭单个模拟。debugLogging(默认false) —— 记录每次区块激活及其产生的变化。
安装说明
仅限服务端。 在专用服务器上,只需在服务器端安装 —— 客户端不需要安装,连接时也不受影响。本模组不注册任何方块、物品或网络数据包,其存储的任何内容都不会发送给客户端。
在客户端安装是无害的,而在单人游戏中则与常规模组一样是必需的。唯一面向客户端的特性是“模组”菜单中的配置界面。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。