zh_cn:tutorial:structures
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
zh_cn:tutorial:structures [2020/02/04 10:59] – [Registering Features] lightcolour | zh_cn:tutorial:structures [2021/07/24 16:27] – [创建地物] solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
+ | 现在,往世界中注册并放置一些结构。 | ||
- | ===== 特征 ===== | + | 入药查看原版结构的实例,可以从简单的'' |
- | 本教程中使用的所有代码都可以在此处获得: [[https:// | + | 对于大多数基本的结构,你需要地物(feature)和生成器(generator)。地物处理注册结构并在生成世界时加载的过程。生成器处理方块的放置,或者在结构文件中加载(如果选择这样做)。 |
- | ==== 介绍 ==== | + | 注意本教程依赖标记为实验性的[[https:// |
- | 我们将研究如何在您的世界中注册和放置结构。 | + | ===== 创建地物 ===== |
+ | 要创建基本的地物(feature),我们推荐创建扩展'' | ||
- | 要查看实际使用的1.14原版结构的示例,IglooGenerator和IglooFeature是一个良好的开端。 | + | 你需要覆写'' |
- | 对于最基本的结构,您将需要一个功能部件和生成器。 该功能处理在生成世界时注册结构并将其加载的过程-回答诸如“我应该在这里生成吗?”和‘我叫什么名字?’之类的问题,生成器处理块的放置或加载 结构文件(如果您选择这样做)。 | + | <code java> |
- | ==== 创建特征 ==== | + | public class MyFeature extends StructureFeature< |
+ | public MyFeature(Codec< | ||
+ | super(codec); | ||
+ | } | ||
- | 要创建基本功能,我们建议创建一个扩展AbstractTempleFeature | + | @Override |
+ | public StructureFeature.StructureStartFactory< | ||
+ | return Start:: | ||
+ | } | ||
- | * shouldStartAt:出于测试目的,返回true。 | + | public static class Start extends StructureStart< |
- | * getName:您的结构的名称 | + | public Start(StructureFeature< |
- | * getRadius:结构的半径,用于放置 | + | long seed) { |
- | * getSeeedModifier | + | |
+ | } | ||
- | 您可以将DefaultFeatureConfig :: deserialize传递给构造函数进行测试。 | + | // 世界尝试在新的结构中生成时调用,同时也是地物和结构之间的“空隙(gap)”。 |
- | + | public | |
- | 对于getStructureStartFactory,大多数原始结构会创建一个在其Feature类中扩展StructureStart的类: | + | |
- | + | int x = chunkX * 16; | |
- | <code java [enable_line_numbers=" | + | int z = chunkZ * 16; |
- | public static class MyStructureStart extends StructureStart { | + | int y = chunkGenerator.getHeight(x, |
- | public | + | |
- | super(structureFeature_1, | + | |
- | } | + | MyGenerator.addPieces(manager, pos, rotation, this.children); |
- | @Override | + | this.setBoundingBoxFromChildren(); |
- | public void initialize(ChunkGenerator<?> | + | |
- | | + | |
- | | + | |
- | int z = chunkZ * 16; | + | |
- | BlockPos | + | |
- | | + | |
- | MyGenerator.addParts(structureManager, startingPos, rotation, this.children, this.random, | + | |
- | this.setBoundingBoxFromChildren(); | + | |
} | } | ||
+ | } | ||
} | } | ||
</ | </ | ||
- | | ||
- | 当世界尝试以新结构生成时,这称为“要素”和“生成器”之间的差距。 在您的主类中对该变量的引用尚不存在,但我们将在最后创建它。 您也可以将配置设置为等于新的DefaultFeatureConfig。 您可以在getStructureStartFactory中使用返回MyStructureStart :: new返回此函数。 | ||
- | 这是结构文件和直接从generate方法生成的部分方式。 有两种解决方法: | ||
- | |||
- | | ||
- | | ||
==== 创建一个生成器 ==== | ==== 创建一个生成器 ==== |