Posted May 20, 20214 yr Hi I have a little problem. Im trying to replace potion particles with my custom. So I looked on how to do this. I have the Particle class: package me.gleep.oreganized.particles; import net.minecraft.client.particle.*; import net.minecraft.client.world.ClientWorld; import net.minecraft.particles.BasicParticleType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Random; public class DawnShineParticle extends SpriteTexturedParticle { private static final Random RANDOM = new Random(); private final IAnimatedSprite spriteWithAge; protected DawnShineParticle(ClientWorld world, double x, double y, double z, double motionX, double motionY, double motionZ, IAnimatedSprite spriteWithAge) { super(world, x, y, z, 0.5D - RANDOM.nextDouble(), motionY, 0.5D - RANDOM.nextDouble()); this.spriteWithAge = spriteWithAge; this.motionY *= (double)0.2F; if (motionX == 0.0D && motionZ == 0.0D) { this.motionX *= (double)0.1F; this.motionZ *= (double)0.1F; } this.particleScale *= 0.75F; this.maxAge = (int)(10.0D / (Math.random() * 0.8D + 0.2D)); this.canCollide = false; this.selectSpriteWithAge(spriteWithAge); } @NotNull @Override public IParticleRenderType getRenderType() { return IParticleRenderType.PARTICLE_SHEET_LIT; } public static class Factory implements IParticleFactory<BasicParticleType> { private final IAnimatedSprite spriteSet; public Factory(IAnimatedSprite spriteSet) { this.spriteSet = spriteSet; } @Nullable @Override public Particle makeParticle(BasicParticleType typeIn, ClientWorld worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { return new DawnShineParticle(worldIn, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); } } } I have registered it: (I have other registrations in one class so I dont want to copy the whole class. If you want me to I can post it later) public static final RegistryObject<ParticleType<BasicParticleType>> DAWN_SHINE_PARTICLE = PARTICLES.register("dawn_shine", () -> new BasicParticleType(false)); and another registration which I dont clearly understand: private void doClientStuff(final FMLClientSetupEvent event) { Minecraft.getInstance().particles.registerFactory(RegistryHandler.DAWN_SHINE_PARTICLE.get(), DawnShineParticle.Factory::new); } Then I made inside assets/<modid>/particles dawn_shine.json: { "textures": [ "oreganized:dawn_shine_0", "oreganized:dawn_shine_1", "oreganized:dawn_shine_2", "oreganized:dawn_shine_3", "oreganized:dawn_shine_4", "oreganized:dawn_shine_5", "oreganized:dawn_shine_6", "oreganized:dawn_shine_7", "oreganized:dawn_shine_8", "oreganized:dawn_shine_9" ] } and place the textures in assets/<modid>/textures/particle : and got this error: [10:24:15] [Render thread/FATAL] [minecraft/Minecraft]: Reported exception thrown! net.minecraft.crash.ReportedException: Rendering overlay at net.minecraft.client.renderer.GameRenderer.updateCameraAndRender(GameRenderer.java:499) ~[forge-1.16.4-35.1.5_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1002) ~[forge-1.16.4-35.1.5_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:612) ~[forge-1.16.4-35.1.5_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.4-35.1.5_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_162] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_162] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_162] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_162] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.4-35.1.5_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.6.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.6.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.6.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.6.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.6.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105) [forge-1.16.4-35.1.5_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {} Caused by: java.lang.IllegalStateException: Redundant texture list for particle oreganized:dawn_shine at net.minecraft.client.particle.ParticleManager.loadTextureLists(ParticleManager.java:217) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.particle.ParticleManager.lambda$null$0(ParticleManager.java:169) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at java.util.concurrent.CompletableFuture$AsyncRun.run$$$capture(CompletableFuture.java:1626) ~[?:1.8.0_162] {} at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java) ~[?:1.8.0_162] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1618) ~[?:1.8.0_162] {} at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_162] {} at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_162] {} at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[?:1.8.0_162] {} at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_162] {} Anyone know what happend? I really dont know Edited May 20, 20214 yr by <Gl33p_0r4nge>
May 20, 20214 yr This needs to be registered in ParticleFactoryRegisterEvent. FMLClientSetupEvent is too late.
May 21, 20214 yr Author yes thanks now it works. But I have another problem it spawns but its not animated. it always spawns the first particle in the list EDIT: nevermind I solved it i just had to do it manualy in the tick. again thanks for help Edited May 21, 20214 yr by <Gl33p_0r4nge>
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.