MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

用户:MashKJo/1.12.2模组开发笔记/实现新维度:修订间差异

跳到导航 跳到搜索
=== IChunkGenerator接口中的抽象方法 ===
==== Chunk generateChunk(int x, int z) ====
这是IChunkGenerator接口中最核心的一个方法。其作用顾名思义,就是生成维度中的区块。
 
区块是一个16×256×16大小的长方体,因此它没有Y坐标这一说,只有X坐标和Z坐标(它们被称为区块坐标)。这个方法的两个形参就是代表区块坐标。另外,还有“区块内方块的局部坐标”这一概念,那么,显然有:区块坐标×16 + 方块的局部坐标 = 方块的绝对坐标。方块局部坐标的取值范围,应该是[0, 15]∩'''Z'''。
 
这个方法要求你返回一个Chunk实例,让我们来看看Chunk类的构造器:<code>public Chunk(World worldIn, int x, int z)</code>和<code>public Chunk(World worldIn, ChunkPrimer primer, int x, int z)</code>。按照惯例来说,我们应该选择后者来构造一个Chunk实例,为何?因为区块内的方块状态信息就是封装在ChunkPrimer对象中的,传入一个ChunkPrimer对象来构造Chunk对象的话,自然也就把那些方块状态信息传入到Chunk对象中了。第一个构造器,笔者暂时还不知道它有什么作用,但据笔者的推测,可能它是用于从存档文件中读取已经加载过的区块。
 
ChunkPrimer,意思为“区块底漆”<ref>如果neta生物学的术语的话,似乎也可以叫做“区块原”“区块前体”。</ref>。ChunkPrimer类使用系统提供的默认的零参构造器。那我们怎么把区块内的方块状态信息传入进去呢?答案是使用<code>void setBlockState(int x, int y, int z, IBlockState state)</code>这一方法。这里的x、y和z是指区块内方块的局部坐标。
 
往ChunkPrimer对象中写入数据后,就可以构造Chunk对象了——区块底漆也就“升格”为了真正的区块。
 
==== void populate(int x, int z) ====
行政员、​优秀编辑者、​界面管理员、​监督员、​管理员、​小部件编辑者
3,258

个编辑

我们提供服务需要使用Cookie。您使用我们的服务,即表示您同意我们使用Cookie。

导航菜单