Table of Contents

添加粒子效果

粒子效果是用于特殊事件和附加的视觉特效。它们被用在爆炸效果,火焰效果,滴水效果以及更多上!

添加简单的粒子效果

简单的粒子效果可以只用 Minecraft 原本的粒子工厂来实现。这意味着粒子所有的行为都必须和一个原版中已经存在的粒子相同。作为例子,我们将实现一个被用在火把上的粒子效果 - 火焰粒子效果 的绿色变种。

初始化注册

首先,在你的 ModInitializer 中注册你的粒子:

  1. public class ExampleMod implements ModInitializer {
  2.  
  3. // instance of our particle
  4. public static final DefaultParticleType GREEN_FLAME = FabricParticleTypes.simple();
  5.  
  6. @Override
  7. public void onInitialize() {
  8. Registry.register(Registry.PARTICLE_TYPE, new Identifier("modid", "green_flame"), GREEN_FLAME);
  9. }
  10.  
  11. }

客户端注册

现在我们需要在客户端侧注册它。创建一个实现 ClientModInitializer 的类(如果没有的话):

  1. public class ExampleModClient implements ClientModInitializer {
  2.  
  3. @Override
  4. public void onInitializeClient() {
  5. /* Adds our particle textures to vanilla's Texture Atlas so it can be shown properly.
  6.   * Modify the namespace and particle id accordingly.
  7.   *
  8.   * This is only used if you plan to add your own textures for the particle. Otherwise, remove this.*/
  9. ClientSpriteRegistryCallback.event(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE).register(((atlasTexture, registry) -> {
  10. registry.register(new Identifier("modid", "particle/green_flame"));
  11. }));
  12.  
  13. /* Registers our particle client-side.
  14.   * First argument is our particle's instance, created previously on ExampleMod.
  15.   * Second argument is the particle's factory. The factory controls how the particle behaves.
  16.   * In this example, we'll use FlameParticle's Factory.*/
  17. ParticleFactoryRegistry.getInstance().register(ExampleMod.GREEN_FLAME, FlameParticle.Factory::new);
  18. }
  19.  
  20. }

模型和纹理

我们的粒子现在被正确的实现了… code-wise. 在开始游戏之前,你将需要创建两个文件:粒子的 model 以及 texture.

src/main/resources/assets/modid/particles/green_flame.json
{
  "textures": [
    "modid:green_flame"
  ]
}

这将告诉Minecraft哪些纹理用于我们的粒子。由于我们使用的是 FlameParticle 的工厂,所以我们将只使用一个粒子,就像前者一样。 提示: 你可以使用Minecraft自己的纹理!

现在,将你的粒子纹理添加到下面的路径中:

src/main/resources/assets/modid/textures/particle/

推荐的纹理大小是 16×16 像素。

如果所有操作都正确,你的粒子效果现在应该可以完美地工作!您可以使用命令 /particle modid:green_flame ~ ~ ~ 对其进行测试。

添加复杂粒子效果

未完待续

这个教程的源代码可以在这里找到: ParticleExampleMod