3,258
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
(→注册维度) |
|||
<code>IChunkGenerator createChunkGenerator()</code>这个方法虽然在WorldProvider类中不是抽象方法,但它也必须被覆写!因为它提供的是该维度的区块生成类——它决定了这个维度的世界生成。如果你不覆写该方法,那么等你进入维度后,你会发现这个维度的地面在Y = 255处,且天空的光照分布十分不正常,TPS会非常非常低。
=== WorldType ===
那么可能这个时候就会有人问了:我看过了主世界的WorldProvider,没看到它里面有指定主世界的ChunkGenerator啊?原因是:主世界有两个不同的ChunkGenerator:ChunkGeneratorOverworld和ChunkGeneratorFlat,后者用于生成超平坦主世界,前者用于生成正常的主世界。到底选择哪个ChunkGenerator生成主世界,取决于玩家在创建世界时所选的世界类型(WorldType),这些逻辑是被写在了其他地方的。由此也可以看出,虽然在很多时候,MC中一个World实例就可以近似代表一个维度,但WorldType和DimensionType是不一样的。
如果你真想给自己的新维度创建一个全新的WorldType,也不是很难,只需覆写若干非常简单的方法即可,这里就不展开论述了。
=== WorldProvider中的一些细节 ===
回到正题上来:在你自己的WorldProvider类中,你也可以自定义很多数据,如“该维度是否为露天世界”“该维度的虚空迷雾的颜色”等等,只需覆写若干方法即可。但要注意:你在你的WorldProvider类中提供的这些数据仅仅是给MC原版的一些机制或者其他模组传递了一些信息而已,它并不会体现在具体的世界生成中。比如笔者把主世界的“是否为露天世界”从true改为false,难道主世界顶部就会自动生成遮天蔽日的方块?MC可没这么智能。实际上这些数据仅仅是你手动暴露给MC原版的一些机制和其他模组的、关于你的新维度的一些信息而已。比如小地图模组可能会根据这一参数来决定生成的小地图的每一个像素点到底要不要取该像素点对应的(x, z)坐标的最高非空气方块的颜色。如果你填的这一参数和实际的世界生成情况不符,那小地图就会出错,就这么简单。新维度的绝大部分的世界生成特性都只体现在你的ChunkGenerator类中。
|