跳到正文

SleepingOverhaul

作者:CosmicDan

将原版睡觉时“直接跳到白天”的功能替换为酷炫又沉浸的延时睡眠效果(加快时间流逝),并提供其他可配置的睡眠增强功能。

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

SleepingOverhaul

将原版睡觉时“跳到白天”的功能替换为酷炫且沉浸感十足的延时睡眠(加快时间流逝),并提供其他可配置的睡眠增强功能。

延时效果并非模拟实现——世界的实际刻速会加快。这是通过使用 Tickrate Changer 模组实现的,该模组由 Guichaguri 制作(所需版本和下载链接请查看下载页面)。

SleepingOverhaul 还提供一个可选的 CMC(CoreModCompanion)模组,部分功能需要它才能使用。相关选项和功能会在适当位置标注“[CMC]”。

和我制作或将来制作的所有模组一样,本模组需要 CosmicLib。如不确定需要哪个版本的 CosmicLib,请查看下载页面上的更新日志。

完整功能列表:

  • 所有玩家都躺在床上时,将触发延时效果,而不是直接跳到白天——世界速度最高可加快至每秒 1000 刻;
  • 自定义用于判定能否睡觉的“夜晚开始时间”(例如,强制玩家比平时更晚入睡);
  • 可以在一天中的任何时间睡觉,并在白天继续睡觉。此功能显然会覆盖任何自定义的“夜晚开始时间”设置。另请注意,玩家必须手动起床,否则就会一直睡下去(如果有需求,未来可能会加入闹钟功能);
  • [CMC] 解锁在任意维度(例如下界)睡觉的功能。无法保证与模组添加的维度兼容。
  • 自定义水平/垂直安全检查距离(即附近有生物时出现“你现在无法入睡”的检测范围);
  • 睡觉/躺在床上时在屏幕上显示时钟(可配置);
  • 睡眠投票系统:当达到最低比例的玩家躺在床上时,系统会定期向玩家发送友好提醒,并为尚未上床的玩家启动倒计时,结束后执行若干可配置操作之一:

当前可选的睡眠投票操作(投票达标且倒计时结束后执行的操作)包括:

  • 不执行任何操作(仅每隔 x 秒显示一次提醒);
  • 无论如何启用延时效果(仍然醒着的玩家需要承受服务器刻速加快的影响);
  • [CMC] 踢出所有仍然醒着的玩家,然后继续延时效果(警告:如果没有 CMC,使用此操作会在踢出醒着的玩家后错误地跳到白天);
  • 恢复原版行为(跳到白天)

…倒计时以及向玩家显示的消息均可在配置中完全自定义。

本模组目前已被视为稳定且功能完善,但仍可能存在漏洞。如果出现问题,本模组不应造成永久性损坏,也可以安全地从现有世界中移除。发现问题后请务必提交反馈。

已知问题

  • 下界中的时钟只会显示“??:??”。未来我可能会添加一个选项,改为显示主世界的时间。
  • 在专用服务器上,延时效果下提高后的刻速可能会很慢。至少我在开发机器上同时运行服务器和 3 个客户端时就是如此。我不确定该如何改善,也不确定是否能改善。希望有一天能研究一下。
  • 作物生长和其他基于“随机方块刻”的机制,其速度不会像你预期的那样随刻速变化。这不容易“修复”,因为严格来说这并不是漏洞。不过我会看看未来版本能做些什么(也许可以自动调整 randomTickSpeed 游戏规则)。

兼容性

  • Morpheus。在这个模组中,睡眠投票没有意义,不过我们现在已经有自己的系统来处理这件事了。
  • StellarAPI。需要手动禁用 StellarAPI 的所有自定义唤醒设置(在 StellarAPI\MainConfig.cfg 的 wake 项下),否则会导致跳到白天。
  • Extended Days。与各种模组存在兼容性问题,而且根据我的使用体验,即使单独使用也会出现故障。我强烈建议改用 B3M 来调整昼夜时长。

技术细节

由于机制所限,这个模组会完全覆盖原版的睡眠事件。为了尽可能兼容,它会最后运行,让其他模组有机会在玩家睡觉时执行自己的钩子。与睡眠相关、会执行特定操作的其他模组可能会出现兼容性问题:

  • SleepingOverhaul 通过钩入 PlayerSleepInBedEvent 来复现原版睡眠行为,并且总是返回一个值——这意味着原版的 trySleep 方法永远不会运行。修改这段代码的 Coremods 将无法正常工作。如果真有 Coremods 这么做,那就是滥用核心模组机制——这会让 Lex 很生气。
  • 其他会根据条件限制或覆盖睡眠行为的模组可能会产生冲突,尤其是在 SleepingOverhaul 运行之前取消或更改睡眠结果的模组(SleepingOverhaul 以最低优先级运行)。例如,某个模组可能会自行判断“现在太危险,不能睡觉”或“你不能在这里睡觉”。这是有意为之——其他阻止或更改睡眠条件的模组仍应能够正常发挥作用。
  • 其他会监视 WorldServer 中 “allPlayersSleeping” 标记的模组将无法正常工作(不设置此标记正是 SleepingOverhaul 避免“跳到白天”的方法)。我不会修复这个问题——这些模组应该改为订阅 PlayerWakeUpEvent(此模组仍会触发该事件)。
  • 其他订阅了刻事件、并使用玩家 sleepTimer 的模组可能会出现不可预期的行为。不过,我实在想不出模组为什么要这么做。

常见问题

SleepingOverhaul 支持哪些 Minecraft 版本?

SleepingOverhaul 支持 Minecraft Java 版 1.12.2,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

SleepingOverhaul 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

CosmicDan 的其他作品

查看全部 →