Текстура кастомной частицы

Сообщения
39
Лучшие ответы
0
Реакции
2
Версия Minecraft
1.12.2
Доброго времени суток, форумчане! Создал частицу, пытаюсь присвоить ей текстуру:
Java:
this.setParticleTexture(RegistryEventHandler.textureAtlasSprite);
Регистрирую её в эвенте:
Java:
@Mod.EventBusSubscriber
public class RegistryEventHandler
{
    
    public static TextureAtlasSprite textureAtlasSprite;

    @SubscribeEvent
    public void registerParticleMap(TextureStitchEvent.Pre event)
    {
            TextureMap map = event.getMap();
            textureAtlasSprite = map.registerSprite(new ResourceLocation(Reference.MOD_ID + ":textures/particles/anton.png"));
    }
}
Как итог - пикрил, вопрос: что я делаю не так?
 

Вложения

Сообщения
4,612
Лучшие ответы
123
Реакции
733
Покажи как ты ее рисуешь. Скорее всего не забиндил эту текстуру перед рендером полигонов
 
Сообщения
39
Лучшие ответы
0
Реакции
2
Действительно не забиндил текстуру перед рендером, однако после бинда частица стала выглядеть так. Неправильный рендер? Или проблема в текстуре?
Java:
public void renderParticle(BufferBuilder buffer, Entity entityIn, float partialTicks, float rotationX, float rotationZ, float rotationYZ, float rotationXY, float rotationXZ)
{

    Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(Reference.MOD_ID + ":textures/entity/test/test.png"));
    super.renderParticle(buffer, entityIn, partialTicks, rotationX, rotationZ, rotationYZ, rotationXY, rotationXZ);

}
 

Вложения

Сообщения
39
Лучшие ответы
0
Реакции
2
Действительно, использовать текстуру entity для теста было отнюдь не самой удачной идеей. Тем не менее, даже при выборе нормальной 16x16 текстуры, она рендерится как однотонный квадрат, а тут уже дело скорее всего в моих кривых руках.
 

Вложения

Сообщения
39
Лучшие ответы
0
Реакции
2
Посмотрел в код порта DivineRPG. Там при рендере текстура вообще не биндится, при этом присваиваясь не через
Java:
this.setParticleTexture
а через
Java:
this.particleTexture =
При этом текстура сначала регистрируется в эвенте
Java:
@SideOnly(Side.CLIENT)
@Mod.EventBusSubscriber(modid = Reference.MOD_ID, value = Side.CLIENT)
public class CustomTextureStitchHandler {
    @SubscribeEvent
    public static void pre(TextureStitchEvent.Pre event)
    {
        TextureMap map = event.getMap();
        map.registerSprite(new ResourceLocation(Reference.MOD_ID, "particles/anton")); 
    }
}
И только потом, отдельно задаётся
Java:
this.particleTexture = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(new ResourceLocation(Reference.MOD_ID, "particles/anton").toString());
Код рендера:
Java:
    @Override
    public void renderParticle(BufferBuilder buffer, Entity entityIn, float partialTicks, float rotationX, float rotationZ, float rotationYZ, float rotationXY, float rotationXZ)
    {
        super.renderParticle(buffer, entityIn, partialTicks, rotationX, rotationZ, rotationYZ, rotationXY, rotationXZ);
    }
Как результат: всё работает как надо:
 

Вложения

Dysphoria

aka Agravaine
Модератор
Сообщения
5,944
Лучшие ответы
330
Реакции
1,483
Ну это логично.
Надеюсь майн хотя бы сортируется партиклы по текстуре.
 
Сообщения
2,453
Лучшие ответы
75
Реакции
344
Нет. Там просто 4 пасса (типа). Юзер сам выбирает тип партикла, переопределив его в классе, а сама текстура биндится 1 раз перед перед рендером пасса.
 
Сверху