zh_cn:tutorial:features
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
zh_cn:tutorial:features [2020/01/08 12:18] – created lightcolour | zh_cn:tutorial:features [2021/07/12 01:17] – [向生物群落添加Feature] solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== 在您的世界中生成Feature | + | ===== 添加地形特征 [1.17] |
- | 岩石,树木,矿石和池塘都是Feature的示例。 它们是对世界的简单补充,它们的生成取决于它们的配置方式。 在本教程中,我们将研究如何在我们的世界中随机生成一个简单的石螺旋Feature。 | + | |
- | ==== 创建Feature类 ==== | + | |
- | 一个简单的Feature如下所示: | + | |
- | <code java [enable_line_numbers=" | + | |
- | public class StoneSpiralFeature extends Feature< | + | |
- | public StoneSpiralFeature(Function< | + | 岩石、树木、矿石、池塘都是地形特征的例子,是对世界的简单补充生成,并根据配置的方式生成。本教程中,我们将研究如何随机生成简单的石头螺旋地形。 |
- | super(config); | + | |
- | } | + | |
- | @Override | + | 往生物群系中添加地形特征需要3个步骤。 |
- | | + | * 创建地形特征 |
- | | + | * 配置地形特征 |
- | | + | * 使用[[https:// |
- | for (int y = 1; y < 16; y++) { | + | 注意生物群系修改API标记为实验性。如果API不起作用,考虑使用[[? |
- | offset = offset.rotateYClockwise(); | + | |
- | world.setBlockState(topPos.up(y).offset(offset), | + | |
- | } | + | |
- | return true; | + | ==== 创建地形特征 ==== |
+ | 一个简单的地形特征如下所示: | ||
+ | <code java> | ||
+ | public class StoneSpiralFeature extends Feature< | ||
+ | public StoneSpiralFeature(Codec< | ||
+ | super(config); | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public boolean generate(StructureWorldAccess world, ChunkGenerator generator, Random random, BlockPos pos, | ||
+ | DefaultFeatureConfig config) { | ||
+ | BlockPos topPos = world.getTopPosition(Heightmap.Type.WORLD_SURFACE, | ||
+ | Direction offset = Direction.NORTH; | ||
+ | |||
+ | for (int y = 1; y <= 15; y++) { | ||
+ | offset = offset.rotateYClockwise(); | ||
+ | world.setBlockState(topPos.up(y).offset(offset), | ||
} | } | ||
+ | |||
+ | return true; | ||
+ | } | ||
} | } | ||
</ | </ | ||
- | 构造函数采用'' | + | '' |
- | 当块决定生成Feature时,将调用``generate``。 如果将功能配置为产生每个块,则也会为正在生成的每个块调用此功能。 在将功能配置为以每个生物群落以一定速率生成的情况下,仅在世界想要生成结构的情况下才调用``generate``。 | + | 区块决定生成地形特征时调用'' |
- | 在我们的实现中,我们将从世界的最高位置开始构建一个简单的16块高的石头螺旋: | + | 在我们的实现中,我们从世界最高位置的方块构建一个简单的15个方块高的岩石螺旋。 |
+ | |||
+ | 地形特征可以像游戏其他内容一样被注册,且你不需要担心没有特定的构建器(builder)和机制(mechanic)。 | ||
<code java> | <code java> | ||
- | @Override | + | public |
- | public | + | |
- | | + | |
- | Direction offset = Direction.NORTH; | + | |
- | + | ||
- | for (int y = 1; y < 16; y++) { | + | |
- | offset | + | |
- | world.setBlockState(topPos.up(y).offset(offset), | + | |
- | } | + | |
- | return true; | + | @Override |
+ | public void onInitialize() { | ||
+ | Registry.register(Registry.FEATURE, | ||
+ | } | ||
} | } | ||
</ | </ | ||
- | ==== 注册一个Feature | + | ==== 配置地形特征 |
- | 可以像注册游戏中的其他大多数内容一样注册Feature,而且您不必担心任何特殊的构建器或机制。 | + | 我们需要为地形特征提供配置。确保注册配置的地形特征和地形特征。 |
<code java> | <code java> | ||
- | private | + | public class ExampleMod implements ModInitializer { |
- | Registry.FEATURE, | + | public |
- | new Identifier(" | + | |
- | new StoneSpiralFeature(DefaultFeatureConfig:: | + | |
- | ); | + | @Override |
+ | public void onInitialize() { | ||
+ | [...] | ||
+ | |||
+ | RegistryKey< | ||
+ | new Identifier(" | ||
+ | | ||
+ | } | ||
+ | } | ||
</ | </ | ||
- | ==== 向生物群落添加Feature | + | Decorator表示世界如何选择放置该特征。要选择正确的Decorator,检查原版的地形特征,你自己的应该要类似。装饰器配置是从这个分支出来的,在'' |
- | 生物群系有一种称为'' | + | |
+ | ==== 向生物群系添加特征地形 | ||
+ | 我们使用生物群系修改API。 | ||
- | 我们可以遍历'' | ||
<code java> | <code java> | ||
- | Registry.BIOME.forEach(biome -> biome.addFeature( | + | public class ExampleMod implements ModInitializer { |
- | | + | [...] |
- | Biome.configureFeature( | + | |
- | LAVA_HOLE, | + | |
- | new DefaultFeatureConfig(), | + | |
- | Decorator.CHANCE_HEIGHTMAP, | + | |
- | new ChanceDecoratorConfig(100) | + | |
- | ) | + | |
- | )); | + | |
- | </ | + | |
- | '' | + | @Override |
+ | public void onInitialize() { | ||
+ | [...] | ||
+ | BiomeModifications.addFeature(BiomeSelectors.all(), | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | '' | + | '' |
- | 装饰器代表世界如何选择放置要素。 '' | + | 第二个参数帮助你确定结构何时生成。对于地上的房子,可以用'' |
=== 结果 === | === 结果 === | ||
{{https:// | {{https:// |
zh_cn/tutorial/features.txt · Last modified: 2022/08/18 03:37 by solidblock