Проблема с регистрацией частиц

Версия Minecraft
1.20.1
API
Forge
95
4
6
Во всех туториалах, вопросах на forge форуме, которые я нашёл, используется такая конструкция:
Java:
    @SubscribeEvent
    public static void regParticles(RegisterParticleProvidersEvent event) {
        event.registerSpecial(ModParticles.BEZIER_CRYSTALS_ATTACK_PARTICLES.get(), BezierCrystalsAttackParticle.Provider::new);
    }

Но у меня IDE жалуется на то что я сую не тот тип в event.registerSpecial, он хочет объект BezierCrystalsAttackParticle.Provider, а не ссылку на метод, но мне неоткуда взять SpriteSet, чтобы создать объект провайдера
 
Решение
Занимательно.
Если коротко, то registerSpecial просто вызывает ParticleEngine#register, и судя по другим модам, можно просто напрямую регистрировать в ParticleEngine в этом эвенте:
Minecraft.getInstance().particleEngine.register(ParticleTypes.ASH, AshParticle.Provider::new);

Не уверен, чем вызвана ошибка, но скорее всего из-за использования ParticleProvider<?> вместо <T extends ParticleOptions> ParticleProvider<T> внутри ParticleEngine, хотя в эвенте юзается последний вариант.
Конструктор также идентичен туториалам

Класс провайдера:
    @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 BezierCrystalsAttackParticle(level, x, y, z, this.sprites, dx, dy, dz);
        }
    }
 
Занимательно.
Если коротко, то registerSpecial просто вызывает ParticleEngine#register, и судя по другим модам, можно просто напрямую регистрировать в ParticleEngine в этом эвенте:
Minecraft.getInstance().particleEngine.register(ParticleTypes.ASH, AshParticle.Provider::new);

Не уверен, чем вызвана ошибка, но скорее всего из-за использования ParticleProvider<?> вместо <T extends ParticleOptions> ParticleProvider<T> внутри ParticleEngine, хотя в эвенте юзается последний вариант.
 
Назад
Сверху