我的世界村庄堆叠原理?
这是一个很伟大的功能。 使Minecraft从单一的地图加载游戏,变成了可以无限构建、无限加载的游戏,在极限条件下甚至可以做到瞬间生成整个地球(当然这并不快)。 而这个功能的实现主要是由Forge加载的,所以如果你使用基岩版(Java版)的话是无法看到的;而如果你使用的是Windows版本的Mincraft,你也可以看到启动界面的变化来了解你的游戏是否是使用的Forge加载的。 那么现在的问题是,这个Forge是如何做到的? 其实这就是一个压缩优化的问题——对于已经加载好地形和生物群的地图,只需要给Forge加载玩家数据和结构数据以及一些预设好的道具数据,就可以让玩家直接开始玩(当然这些内容其实都很大),而为了降低网络载入的压力,还可以将世界进行压缩,使得玩家即使传到很远的地方也能很快载入这个世界。 我这里有一张用命令列表测试过的图,是关于 Forge如何检测版本 的,大家可以注意一下时间戳(如果看不到图片请点击放大): 在2019年3月12日早上7时18分40秒的时候,我的服务器客户端向服务器发送了客户端的版本号,而在六秒之后,服务端返回了一个版本号给客户端(注意这里不是指游戏版本号mc-x.x.x,而是Forge版本号),仅仅过了短短的6秒,Forge就已经可以完成对世界的加载并且传递回给客户端。
同时,在加载了Forge之后,如果玩家把世界传输给未加载Forge的客户端,也可以正常播放动画,说明Forge此时已经开始工作了,只不过没有完成世界加载而已。 也就是说,在这个时刻,Forge已经可以获取到客户端的版本信息,并且开始进行相应版本的下载,而在客户端收到服务器传回来的数据后,也会更新自己的世界名称和数据,这时,如果玩家再进入这个加载了Forge的地图,就会发现自己之前放置在地图上的物品全都在了地上或者水中,这是因为此时的Forge已经可以完成世界的加载并传递回给客户端了。 如果不想让Forge干预自己的建造,可以在创建世界的时候加入 --noforge 参数。