====== Adding Particles ====== Particles are textures used for special events and additional VFX. They are used on explosions, torches, dripping water and more! ===== Adding Simple Particles ===== Simple Particles might only use Minecraft's own particle Factories. This means all behavior must be equal to an already-existing particle in vanilla. For this example, we'll do a green-variant of ''FlameParticle'' - the particle used for the top of torches. ==== Initial register ==== First, register your particle in your ''ModInitializer'': public class ExampleMod implements ModInitializer { // instance of our particle public static final DefaultParticleType GREEN_FLAME = FabricParticleTypes.simple(); @Override public void onInitialize() { Registry.register(Registry.PARTICLE_TYPE, new Identifier("modid", "green_flame"), GREEN_FLAME); } } ==== Client-side register ==== Now, we need to register it client-side. Create a class that implements ''ClientModInitializer'' (if one does not exist already): 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); } } ==== Model & Texture ==== Our particle is now properly implemented... //code-wise//. Before starting the game, you'll need to create two files: the particle's **model** and **texture**. { "textures": [ "modid:green_flame" ] } This will tell Minecraft which textures are used for our particle. Since we're using FlameParticle's Factory, we'll use only one particle, just as the former. **TIP:** you can use Minecraft's own textures! Now, add your particle's textures to the following path: src/main/resources/assets/modid/textures/particle/ Recommended texture size is **16x16** pixels. If you did everything correctly, your particle should now work flawlessly! You might test it using the command ''/particle modid:green_flame ~ ~ ~''. ===== Adding Complex Particles ===== WIP The sourcecode for this tutorial is available here: [[https://github.com/Luligabi1/ParticleExampleMod|ParticleExampleMod]]