pokmon987 Posted May 24, 2020 Posted May 24, 2020 Trying to add a new particle, and it does retrieve the texture, though when I try to add the particle it does not render. Particle Spoiler public class LightParticle extends SpriteTexturedParticle { private IAnimatedSprite spriteOther; protected LightParticle(World worldIn, double x, double y, double z, IAnimatedSprite sprite) { super(worldIn, y, x, z, 0, 0, 0); this.spriteOther = sprite; this.particleScale *= 2.0F; this.maxAge = 100; this.setSprite(sprite.get(0, 1)); } @Override public IParticleRenderType getRenderType() { return IParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; } @Override public void tick() { if (this.age++ > this.maxAge) { this.setExpired(); } else { // this.particleAngle += this.age; } } public static class Factory implements IParticleFactory<BasicParticleType> { private final IAnimatedSprite sprite; public Factory(IAnimatedSprite sprite) { this.sprite = sprite; } @Override public Particle makeParticle(BasicParticleType typeIn, World worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { return new LightParticle(worldIn, x, y, z, this.sprite); } } } Registry Spoiler @Mod(RadiantMagic.MODID) public class RadiantMagic { ... @EventBusSubscriber(modid=MODID, bus=Bus.MOD) public static class RegistryEvents { ... public static final BasicParticleType lightParticle = new BasicParticleType(false); ... @SubscribeEvent public static void onRegisterParticles(final RegistryEvent.Register<ParticleType<?>> event) { lightParticle.setRegistryName(new ResourceLocation(MODID, "light_particle")); event.getRegistry().register(lightParticle); } @SubscribeEvent public static void onRegisterParticleFactory(final ParticleFactoryRegisterEvent event) { Minecraft.getInstance().particles.registerFactory(lightParticle, sprite -> new LightParticle.Factory(sprite)); } } } LightSourceBlock Spoiler @OnlyIn(Dist.CLIENT) @Override public void animateTick(BlockState stateIn, World worldIn, BlockPos pos, Random rand) { if (holdingItem()) { worldIn.addParticle(RadiantMagic.RegistryEvents.lightParticle, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 0, 0, 0); } super.animateTick(stateIn, worldIn, pos, rand); } Quote
TheGreyGhost Posted May 24, 2020 Posted May 24, 2020 Hi What are the symptoms, specifically? YOu might find this tutorial project useful, it has a working example of Particles (vanilla and custom) https://github.com/TheGreyGhost/MinecraftByExample/tree/master/src/main/java/minecraftbyexample/mbe50_particle -TGG Quote
pokmon987 Posted May 24, 2020 Author Posted May 24, 2020 10 hours ago, TheGreyGhost said: Hi What are the symptoms, specifically? YOu might find this tutorial project useful, it has a working example of Particles (vanilla and custom) https://github.com/TheGreyGhost/MinecraftByExample/tree/master/src/main/java/minecraftbyexample/mbe50_particle -TGG I'm not really sure what the "symptoms" are, there aren't any errors, and looking at the particle sprite data, it does seem to find the correct texture file. Putting a print statement in the tick method of the particle shows that it does run, though nothing appears in-game. Perhaps the uv coordinates are incorrect, I'm not sure. Here's the sprite data: TextureAtlasSprite{name='radiantmagic:particle/light_particle', frameCount=1, x=224, y=96, height=16, width=16, u0=0.875, u1=0.9375, v0=0.375, v1=0.4375} Quote
TheGreyGhost Posted May 26, 2020 Posted May 26, 2020 Rendering is difficult to debug because there are many different ways it can go wrong without any specific symptoms. Taking baby steps is the best way to troubleshoot it, in my experience. If you post your code on GitHub I can take a look if you like. -TGG 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.