沙漏

沙漏

床铺会平滑地加速时间流逝,直至白天。自定义昼夜时长。

工具

沙漏标志

   

Hourglass 是一个 Minecraft Forge 模组,让你能够掌控时间的流逝。它允许你自定义昼夜循环的长度,并通过加速时间流速来改变 Minecraft 的睡眠机制。

功能特性

该模组(可选地)用平滑且自然的早晨过渡取代了原版的睡眠功能,通过在你躺在床上时加速时间流逝来实现这一点。在多人游戏中,时间的流逝速度将根据当前正在睡觉的玩家比例而加快。这消除了对任何睡眠投票系统或玩家数量门槛的需求,因为任意数量的玩家都能对夜晚的持续时间产生影响。

 

Hourglass 允许自定义昼夜循环的时长,并且可以独立控制白天和夜晚的速度。不同于原版的 20 分钟时长,你可以放慢时间,让 Minecraft 中的一天与现实生活中的一天一样长,或者加速夜晚的流逝以获得更轻松的体验。

 

Hourglass 还提供了多种时间效果,可以加速 Minecraft 中各种元素的进程,以适应当前的时间速度。一些例子包括作物生长、草丛生长、天气、药水效果、熔炉、漏斗等。大多数这些时间效果默认是禁用的,但可以通过设置其相关的 配置选项 来启用。

兼容性

Hourglass 与以下模组兼容:

睡眠投票模组

Hourglass 与启用睡眠投票或具有睡眠百分比系统的模组(如 Quark 和 Morpheus)兼容,但它们与此模组的睡眠功能存在冲突。这些功能应在其对应的模组中禁用,或者应禁用 Hourglass 中的睡眠功能。可以通过命令或文件修改 enableSleepFeature 选项来禁用睡眠功能。

其他兼容性说明

主世界目前是唯一受支持的维度。然而,Minecraft 中的大多数维度(包括自定义维度)都从主世界获取时间信息,因此它们会以相同的速率流逝时间。

命令

/hourglass config <配置键> [<值>]

修改或显示指定配置选项的当前值。

 

如果省略 <值> 参数,此命令将显示配置选项的当前值。

 

某些配置无法通过此命令使用,需要通过配置文件访问。

/hourglass query timeSpeed

显示时间当前流逝的速度。

/hourglass query sleeperCount

显示当前维度中正在睡觉的玩家比例。

配置

所有配置值都可以在运行时更改,无需重新加载游戏。

 

虽然许多配置选项可以通过 配置命令 访问,但有些只能通过访问模组的配置文件来获取。大多数选项位于模组的 服务器配置文件 中,无论是在单人世界还是在多人服务器中。少数客户端特定选项也存在于 客户端配置文件 中。

 

整合包开发者可以通过先在测试世界中调整服务器设置,然后将文件移动到其整合包的 ./defaultconfigs 文件夹中,来自定义他们整合包中的 Hourglass 服务器设置。Forge 会将 defaultconfigs 文件夹中的所有文件移动到所有新创建世界的 serverconfig 文件夹中。

 

在自定义 Hourglass 时,时间速度 通过倍率控制。值为 1 等同于原版速度(一个完整的昼夜循环为 20 分钟)。将 daySpeed 和 nightSpeed 设置为 0.5 将时间速度减半,使一整天时长加倍至 40 分钟。同样,将配置的速度加倍至 2.0 将导致缩短的一天,从一个早晨到下一个早晨仅需 10 分钟。

警告: 将 daySpeed 和 nightSpeed 设置为高于 3600 的值可能对光敏性癫痫患者不安全。

默认服务器配置

相对于 Minecraft 文件夹的位置:

  • 单人世界:./saves/<存档>/serverconfig/hourglass-server.toml
  • 多人服务器:./world/serverconfig/hourglass-server.toml
[time]
	#白天时间流逝的速度。
	#白天定义为从 23500(黎明中段)到次日 12500(黄昏中段)之间的任何时间。
	#原版速度:1.0
	#范围:0.0 ~ 24000.0
	daySpeed = 1.0

	#夜晚时间流逝的速度。
	#夜晚定义为从 12500(黄昏中段)到 23500(黎明中段)之间的任何时间。
	#原版速度:1.0
	#范围:0.0 ~ 24000.0
	nightSpeed = 1.0

	[time.effects]
		#应用后,此效果会将天气的进程与当前时间速度同步。
		#即,随着时间加速,雨会更快停止。晴朗天气不受影响。
		#设置为 SLEEPING 时,此效果仅在至少有一名玩家在维度中睡觉时应用。
		#注意:如果游戏规则 doWeatherCycle 为 false,则此设置不适用。
		#允许值:NEVER, ALWAYS, SLEEPING
		weatherEffect = "SLEEPING"

		#应用后,此效果会将随机刻速度与当前时间速度同步,迫使作物、树木和草丛的生长速度变为 baseRandomTickSpeed 乘以当前时间速度。
		#设置为 SLEEPING 时,除非至少有一名玩家在维度中睡觉,否则 randomTickSpeed 将设置为 baseRandomTickSpeed。
		#更多关于随机刻速度影响的信息可以在这里找到:https://minecraft.fandom.com/wiki/Tick#Random_tick
		#警告:此设置会覆盖 randomTickSpeed 游戏规则。要修改基础随机刻速度,
		#请使用 baseRandomTickSpeed 设置,而不是直接更改游戏规则。
		#允许值:NEVER, ALWAYS, SLEEPING
		randomTickEffect = "NEVER"

		#randomTickEffect 时间效果使用的基础随机刻速度。
		#范围:> 0
		baseRandomTickSpeed = 3

		#应用后,此效果会使药水效果的进程适应当前时间速度。
		#如果时间速度为 1.0 或更低,则此效果不适用。
		#这可能会对拥有大量玩家的服务器性能产生负面影响。
		#设置为 ALWAYS 时,此效果适用于维度中的所有玩家,无论白天还是夜晚。
		#设置为 SLEEPING 时,此效果仅适用于正在睡觉的玩家。
		#允许值:NEVER, ALWAYS, SLEEPING
		potionEffect = "NEVER"

		#应用后,此效果会使玩家饥饿效果的进程适应当前时间速度。
		#这会导致当食物条满时恢复更快,当食物条过低时受到伤害更快。
		#如果时间速度为 1.0 或更低,则此效果不适用。
		#设置为 ALWAYS 时,此效果适用于维度中的所有玩家,无论白天还是夜晚。不建议在更高难度设置下使用。
		#设置为 SLEEPING 时,此效果仅适用于正在睡觉的玩家。
		#允许值:NEVER, ALWAYS, SLEEPING
		hungerEffect = "NEVER"

		#应用后,此效果会使方块实体(如熔炉、漏斗和刷怪笼)的进程适应当前时间速度。
		#警告:此时间效果对性能有显著影响。
		#如果时间速度为 1.0 或更低,则此效果不适用。
		#设置为 SLEEPING 时,此效果仅在至少有一名玩家在维度中睡觉时应用。
		#允许值:NEVER, ALWAYS, SLEEPING
		blockEntityEffect = "NEVER"

[sleep]
	#启用或禁用此模组的睡眠功能。启用此设置将修改原版睡眠功能
	#并可能与其他睡眠模组冲突。如果禁用,睡眠部分中的所有设置将不适用。
	enableSleepFeature = true

	### 此设置定义单人游戏中的睡眠时间速度 ###
	#当所有玩家都在睡觉时,时间流逝的最大速度。
	#110 的值几乎等同于原版中睡觉所需的时间。
	#范围:0.0 ~ 24000.0
	sleepSpeedMax = 120.0

	#当满员服务器中只有 1 名玩家睡觉时,时间流逝的最小速度。
	#范围:0.0 ~ 24000.0
	sleepSpeedMin = 1.0

	#当所有玩家都在睡觉时,时间流逝的速度。
	#设置为 -1 可禁用此功能(当所有玩家都睡觉时,将使用 sleepSpeedMax)。
	#范围:-1.0 ~ 24000.0
	sleepSpeedAll = -1.0

	#此参数定义了将睡觉玩家百分比转换为时间速度的插值函数的曲率。
	#使用的函数是归一化可调 S 型函数。
	#0.5 的值表示线性关系。
	#较小的值使曲线向 X 轴弯曲,而较大的值使其向 Y 轴弯曲。
	#此图形可用作调整曲线的参考:https://www.desmos.com/calculator/w8gntxzfow
	#感谢 Dino Dini 提供的函数:https://dinodini.wordpress.com/2010/04/05/normalized-tunable-sigmoid-functions/
	#感谢 SmoothSleep 提供的想法:https://www.spigotmc.org/resources/smoothsleep.32043/
	#范围:0.0 ~ 1.0
	sleepSpeedCurve = 0.3

	#设置为 'true' 时,当玩家在早晨醒来时天气将放晴,如同原版一样。
	#设置为 'false' 时,强制天气自然变化。当 accelerateWeather 启用时,增加真实感。
	#注意:如果游戏规则 doWeatherCycle 为 false,则忽略此设置。
	clearWeatherOnWake = true

	#当为 true 时,床界面将显示一个时钟。
	#玩家可以通过 hideBedClock 配置设置禁用此时钟。
	allowBedClock = true

	#此部分定义通知消息的设置。
	#所有消息都支持 Minecraft 格式代码 (https://minecraft.fandom.com/wiki/Formatting_codes)。
	#所有消息都有可以使用以下格式插入的变量:${variableName}
	#type 选项控制消息出现的位置:
	#	SYSTEM: 作为聊天中的消息出现。(例如,"重生点已设置")
	#	GAME_INFO: 显示在快捷栏上方的游戏信息 (例如,"你现在不能休息,床离得太远")。
	#target 选项控制消息发送给谁:
	#	ALL: 向服务器上的所有玩家发送消息。
	#	DIMENSION: 向当前维度中的所有玩家发送消息。
	#	SLEEPING: 向当前维度中所有正在睡觉的玩家发送消息。
	#	AWAKE: 向当前维度中所有醒着的玩家发送消息。
	[sleep.messages]

		#此消息在睡眠周期完成后发送。
		[sleep.messages.morning]
			#可用变量:
			#sleepingPlayers -> 当前维度中正在睡觉的玩家数量。
			#totalPlayers -> 当前维度中的玩家总数(不计算旁观者)。
			#sleepingPercentage -> 当前维度中正在睡觉的玩家百分比(不包括 % 符号)。
			message = "§e§oTempus fugit!"
			#设置此消息出现的位置。
			#允许值:SYSTEM, GAME_INFO
			type = "GAME_INFO"
			#设置此消息发送给谁。
			#target 为 'SLEEPING' 将把消息发送给所有刚刚醒来的玩家。
			#允许值:ALL, DIMENSION, SLEEPING, AWAKE
			target = "DIMENSION"

		#此消息在玩家进入其床时发送。
		[sleep.messages.enterBed]
			#可用变量:
			#player -> 开始睡觉的玩家。
			#sleepingPlayers -> 当前维度中正在睡觉的玩家数量。
			#totalPlayers -> 当前维度中的玩家总数(不计算旁观者)。
			#sleepingPercentage -> 当前维度中正在睡觉的玩家百分比(不包括 % 符号)。
			message = "${player} 正在睡觉。 [${sleepingPlayers}/${totalPlayers}]"
			#设置此消息出现的位置。
			#允许值:SYSTEM, GAME_INFO
			type = "GAME_INFO"
			#设置此消息发送给谁。
			#允许值:ALL, DIMENSION, SLEEPING, AWAKE
			target = "DIMENSION"

		#此消息在玩家离开其床时发送(未被早晨自然唤醒)。
		[sleep.messages.leaveBed]
			#可用变量:
			#player -> 离开床的玩家。
			#sleepingPlayers -> 当前维度中正在睡觉的玩家数量。
			#totalPlayers -> 当前维度中的玩家总数(不计算旁观者)。
			#sleepingPercentage -> 当前维度中正在睡觉的玩家百分比(不包括 % 符号)。
			message = "${player} 已经离开了他们的床。 [${sleepingPlayers}/${totalPlayers}]"
			#设置此消息出现的位置。
			#允许值:SYSTEM, GAME_INFO
			type = "GAME_INFO"
			#设置此消息发送给谁。
			#允许值:ALL, DIMENSION, SLEEPING, AWAKE
			target = "DIMENSION"

默认客户端配置

相对于 Minecraft 文件夹的位置:./config/hourglass-client.toml

[gui]
	#当为 false 时,如果服务器设置允许,床界面会显示一个时钟。
	#当为 true 时,时钟被隐藏。
	hideBedClock = false

	#设置床时钟的屏幕对齐方式。
	#允许值:TOP_LEFT, TOP_CENTER, TOP_RIGHT, CENTER_LEFT, CENTER_CENTER, CENTER_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT
	clockAlignment = "TOP_RIGHT"

	#此设置通过每刻更新时钟位置来防止上床时时钟晃动。
	#副作用是,时钟在首次查看时不会像原版那样晃动。如果 displayBedClock 为 false,则此设置
	#未被使用。
	preventClockWobble = true

	#设置时钟与屏幕边缘之间的距离。
	#如果 clockAlignment 为 CENTER_CENTER,则未使用。
	#范围:> 0
	clockMargin = 16

	#设置床时钟的缩放比例。
	#范围:> 1
	clockScale = 64