Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Minecraft 1.19.2 - Problems in Particle registration: Registration not recognized.

Featured Replies

Posted

It's the first time I try to manufacture custom particles. First, I tried tutorials on the internet, then I started copying known mods, but none worked, all with the same problem:

"Caused by: java.lang.IllegalStateException: Failed to load description for particle modcraft:ice_particles"

Apparently, the problem is in RegisterParticleProvidersEvent registration which is Deprecated. Does anyone know an alternative way to register particles?

here is my classes:

 

Main Class:

Spoiler
@Mod("modcraft")
@Mod.EventBusSubscriber(
        modid = "modcraft"
)
public class ModCraft
{
    public static final String MOD_ID = "modcraft";
    //public static final Logger LOGGER = LogUtils.getLogger();
    public static final Logger LOGGER = LogManager.getLogger();

    public ModCraft()
    {
        IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();

        //modEventBus.addListener(this::setupClient);

        ModItems.ITEMS.register(modEventBus);
        ModEntityTypes.ENTITY_TYPES.register(modEventBus);
        ModEnchantments.ENCHANTMENT.register(modEventBus);
        ModParticles.PARTICLE_TYPES.register(modEventBus);


        modEventBus.addListener(this::commonSetup);
        MinecraftForge.EVENT_BUS.register(this);
    }

   (.... ) 

Class to register all new particles:

Spoiler

public class ModParticles {
    public static final DeferredRegister<ParticleType<?>> PARTICLE_TYPES =
            DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, ModCraft.MOD_ID);

    public static final RegistryObject<SimpleParticleType> ICE_PARTICLES =
            PARTICLE_TYPES.register("ice_particles", () -> new SimpleParticleType(false));


}

 

Customized Particle Class:

Spoiler

public class IceParticle extends TextureSheetParticle {
    protected IceParticle(ClientLevel level, double xCoord, double yCoord, double zCoord,
                          SpriteSet spriteSet, double xd, double yd, double zd) {
        super(level, xCoord, yCoord, zCoord, xd, yd, zd);

        this.friction = 0.8F;
        this.xd = xd;
        this.yd = yd;
        this.zd = zd;
        this.quadSize *= 0.85F;
        this.lifetime = 20;
        this.setSpriteFromAge(spriteSet);

        this.rCol = 1f;
        this.gCol = 1f;
        this.bCol = 1f;
    }

    @Override
    public void tick() {
        super.tick();
        fadeOut();
    }

    private void fadeOut() {
        this.alpha = (-(1/(float)lifetime) * age + 1);
    }

    @Override
    public ParticleRenderType getRenderType() {
        return ParticleRenderType.TERRAIN_SHEET;
    }

    //@OnlyIn(Dist.CLIENT)
    public static class Provider implements ParticleProvider<SimpleParticleType> {
        private final SpriteSet sprites;

        public Provider(SpriteSet spriteSet) {
            this.sprites = spriteSet;
        }

        public Particle createParticle(SimpleParticleType particleType, ClientLevel level,
                                       double x, double y, double z,
                                       double dx, double dy, double dz) {
            return new IceParticle(level, x, y, z, this.sprites, dx, dy, dz);
        }
    }
}

 

 Register Event Class

Spoiler

public class ClientEvents {


    @Mod.EventBusSubscriber(modid = ModCraft.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
    public static class ClientModBusEvents {

		@SubscribeEvent
        public static void registerParticleFactories(RegisterParticleProvidersEvent event) {
            //Minecraft.getInstance().particleEngine.register(ModParticles.PIERCE_PARTICLES.get(), PierceParticle.Provider::new);
            event.register((ParticleType) ModParticles.ICE_PARTICLES.get(), IceParticle.Provider::new);
        }

	}
}

 

 

Could you tell me where the error is?
Minecraft 1.19.2 .

11 hours ago, DouglasRafael said:

Apparently, the problem is in RegisterParticleProvidersEvent registration which is Deprecated. Does anyone know an alternative way to register particles?

It isn't if you're using the event register method, which you are. The failed to load description means it couldn't open the particle json or an error occurred while reading it. Do you have a particle json with the textures in the correct location and you are currently not viewing the file in a text editor of some sort?

  • Author

Thank you, it really worked!

My goodness what a silly mistake. But I thought that an error like this wouldn't prevent it from booting. I've messed up json names before, but this has never happened.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.