暂停昼夜循环

暂停昼夜循环

当没有人在线或所有玩家都离开键盘时暂停游戏内时间。修复小型SMP服务器上的本地难度问题。

暂停昼夜循环

要启用挂机检测功能,必须安装 Detect AFK Players

当 Minecraft 服务器上没有人时,游戏内时间仍然会继续流逝。这意味着你无法统计实际游玩的轮数,本地难度也会随之增加。对于几乎一直有玩家在线的服务器来说这不成问题,但对于中小型服务器而言,这是一个麻烦。

这是一个非常轻量的数据包,用于在没有人在线或所有在线玩家都被标记为 afk 时阻止游戏时间流逝,无需暂停服务器本身,因此自动化农场可以继续运转。

查看实际效果

玩家挂机时昼夜暂停

玩家挂机时时间暂停。玩家坐下动作由 AFK Sit 实现。

为什么还要做另一个

市面上已有一些模组和数据包能实现相同功能,但它们都不完全符合我的需求:

  1. 它与 Detect AFK Players 集成,让挂机玩家也不会让游戏时间飙升。
  2. 它能轻松与其他数据包集成,避免暂停/恢复机制发生冲突。

即便引入了服务器的 pause-when-empty-seconds 属性,挂机玩家增长游戏时间的问题仍然未解决,而且暂停期间出生点区块不会进行 tick,你可能希望如此,也可能不希望。

详细信息

当没有人在线或所有在线玩家都被标记为 afk(参见 Detect AFK Players)时,以下游戏规则将被设置为 false:

  • doDaylightCycle
  • doWeatherCycle

doMobSpawning 不会被修改,因为即使没有人存在,它也允许出生点区块或手动加载区块中的自动化农场正常运行。

注意: 如果某个游戏规则在时间未暂停时已经设置为 false,该游戏规则将不会被更改——本数据包会尊重你的设置!

扩展它

本数据包提供了两个函数标签:pause_day_cycle:pausepause_day_cycle:resume。当昼夜循环暂停和恢复时,它们会被调用。以下是一个极其简单的附加数据包示例,它使用这些标签在昼夜循环暂停时向服务器发送日志。

announce/data/pause_day_cycle/tags/functions/pause.json
{ "values": ["announce:pause"] }
announce/data/announce/functions/pause.mcfunction
say Day cycle has been paused