我的世界一天多久?

谈凌锋谈凌锋最佳答案最佳答案

问你们为什么这么无聊,居然为了一个无聊的问题去查这么多资料。。。 先放结论,在没有任何辅助的情况下(MOD、指令等),单机游戏世界中的一天大约为23.5分钟。有辅助的情况下(mod或命令),具体时长与模组的内容有关,从几秒到几分钟不等,与服务器中的其他玩家无关。

下面开始慢慢推导这个过程。 在游戏中,一天的时间流逝取决于两个变量,分别是游戏时间(gameTime)和太阳高度(sunYaw)。这两个变量的变化是通过调用游戏中的系统时钟来实现的。因此要得到游戏世界中的一天需同时调整这两个变量。

首先,需要模拟从黄昏到午夜的过程。在Forge中,可以通过调用setSkylight函数来实现。具体代码如下: Minecraft中设置昼夜交替的函数是setSkylight,它的第一个参数表示是否使用夜晚滤镜(nightFilter),第二个参数表示是否使用星空(stars),第三个参数表示是否启用亮度(brightness)。 当第一个参数为true时,游戏会进入黑夜模式,此时通过随机数生成夜晚的星星;当第二个参数为true时,游戏会进入晴天或者阴天状态并刷新天空的背景;当第三个参数为true时,会将光照强度改为0.8-1.2之间,根据世界生成的不同会有区别。如果都不改变则为默认值0.9。

上述代码实现的是普通白天到黑夜的转换。那么如何来实现从黎明到正午的过渡呢?这个在Minecraft中是无法直接实现的,需要用到MOD。我使用的MOD叫做AdvancedDaylight,它可以实现更真实的白昼变换过程。在使用该MOD的情况下,需要修改的变量除了上面三个外,还需要添加一个dayNightLength。在Forge的配置文件中可以添加上面的四个变量,每个变量都有固定的范围。例如黑夜滤镜nightFilte的取值为0.0-1.0。 下面需要考虑的是玩家活动和昼夜更替的关系。在普通的游戏进程中,一帧大概为1/20秒,也就是20次循环。每次循环都会判断当前时间是否超过了指定时间,如果是则执行对应的动作。例如是否到了起床的时间等等。

在测试过程中发现,如果仅仅修改了昼夜切换的函数,而没有对玩家的行为做出更改的话,在游戏世界中实际上并没有真正的“天”黑“天”亮。这是因为每一帧循环中,都先检测是否到达特定时间,然后才会判断是不是昼夜更替的时刻,而玩家在这个时刻之前的行为都没有改变。也就是说,除非你设置了特定的起床/就寝时间并且能够成功触发(这很难),不然你在游戏世界中见到的“日出”“日落”只是虚幻。

我来回答
请发表正能量的言论,文明评论!