3,258
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
=== 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) ====
|