粒子效果是用于特殊事件和附加的视觉特效。它们被用在爆炸效果,火焰效果,滴水效果以及更多上!
简单的粒子效果可以只用 Minecraft 原本的粒子工厂来实现。这意味着粒子所有的行为都必须和一个原版中已经存在的粒子相同。作为例子,我们将实现一个被用在火把上的粒子效果 - 火焰粒子效果
的绿色变种。
首先,在你的 ModInitializer
中注册你的粒子:
public class ExampleMod implements ModInitializer { // instance of our particle public static final DefaultParticleType GREEN_FLAME = FabricParticleTypes.simple(); @Override public void onInitialize() { } }
现在我们需要在客户端侧注册它。创建一个实现 ClientModInitializer
的类(如果没有的话):
public class ExampleModClient implements ClientModInitializer { @Override public void onInitializeClient() { /* Adds our particle textures to vanilla's Texture Atlas so it can be shown properly. * Modify the namespace and particle id accordingly. * * This is only used if you plan to add your own textures for the particle. Otherwise, remove this.*/ ClientSpriteRegistryCallback.event(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE).register(((atlasTexture, registry) -> { registry.register(new Identifier("modid", "particle/green_flame")); })); /* Registers our particle client-side. * First argument is our particle's instance, created previously on ExampleMod. * Second argument is the particle's factory. The factory controls how the particle behaves. * In this example, we'll use FlameParticle's Factory.*/ ParticleFactoryRegistry.getInstance().register(ExampleMod.GREEN_FLAME, FlameParticle.Factory::new); } }
我们的粒子现在被正确的实现了… code-wise. 在开始游戏之前,你将需要创建两个文件:粒子的 model 以及 texture.
{ "textures": [ "modid:green_flame" ] }
这将告诉Minecraft哪些纹理用于我们的粒子。由于我们使用的是 FlameParticle 的工厂,所以我们将只使用一个粒子,就像前者一样。 提示: 你可以使用Minecraft自己的纹理!
现在,将你的粒子纹理添加到下面的路径中:
src/main/resources/assets/modid/textures/particle/
推荐的纹理大小是 16×16 像素。
如果所有操作都正确,你的粒子效果现在应该可以完美地工作!您可以使用命令 /particle modid:green_flame ~ ~ ~
对其进行测试。
未完待续
这个教程的源代码可以在这里找到: ParticleExampleMod