Jump to content

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


DouglasRafael

Recommended Posts

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 .

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

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