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

第46行: 第46行:


== WorldProvider ==
== WorldProvider ==
要实现一个新维度,必须要为该维度提供对应的WorldProvider。所有维度的WorldProvider类都是抽象类net.minecraft.world.WorldProvider的子类。
要实现一个新维度,必须要为该维度提供对应的WorldProvider。所有维度的WorldProvider类都是抽象类<code>net.minecraft.world.WorldProvider</code>的子类。


原版提供了三种WorldProvider:WorldProviderSurface、WorldProviderHell以及WorldProviderEnd。如果你只是想做个换皮维度的话,倒是可以考虑继承这三种WorldProvider的其中之一<ref>事实上,MCreator就是这么干的——用MCreator创建新维度的时候,你只有这三种WorldProvider可以选。因为自定义世界生成牵扯到复杂的算法,这东西是没法给出一个通用的程式的。</ref>。
原版提供了三种WorldProvider:WorldProviderSurface、WorldProviderHell以及WorldProviderEnd。如果你只是想做个换皮维度的话,倒是可以考虑继承这三种WorldProvider的其中之一<ref>事实上,MCreator就是这么干的——用MCreator创建新维度的时候,你只有这三种WorldProvider可以选。因为自定义世界生成牵扯到复杂的算法,这东西是没法给出一个通用的程式的。</ref>。
第52行: 第52行:
当然,我们最好还是自己写一个WorldProvider。首先新建一个类,让其继承WorldProvider类。
当然,我们最好还是自己写一个WorldProvider。首先新建一个类,让其继承WorldProvider类。


<code>
  public class MyDimWorldProvider extends WorldProvider
  public class MyDimWorldProvider extends WorldProvider
  {
  {
第67行: 第66行:
     }
     }
  }
  }
</code>


首先,WorldProvider虽然为一个抽象类,但它其实只有一个抽象方法待子类实现:<code>DimensionType getDimensionType()</code>。这里我们只需要返回我们之前新建的DimensionType对象即可。
首先,WorldProvider虽然为一个抽象类,但它其实只有一个抽象方法待子类实现:<code>DimensionType getDimensionType()</code>。这里我们只需要返回我们之前新建的DimensionType对象即可。
行政员、​优秀编辑者、​界面管理员、​监督员、​管理员、​小部件编辑者
3,417

个编辑