DouglasRafael Posted February 10, 2023 Posted February 10, 2023 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: Reveal hidden contents @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: Reveal hidden contents 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: Reveal hidden contents 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 Reveal hidden contents 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 . Quote
ChampionAsh5357 Posted February 10, 2023 Posted February 10, 2023 On 2/10/2023 at 2:59 AM, DouglasRafael said: Apparently, the problem is in RegisterParticleProvidersEvent registration which is Deprecated. Does anyone know an alternative way to register particles? Expand 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? Quote
DouglasRafael Posted February 10, 2023 Author Posted February 10, 2023 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. Quote
Recommended Posts
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.