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

Сообщения
35
Лучшие ответы
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,392
Лучшие ответы
114
Реакции
648
Покажи как ты ее рисуешь. Скорее всего не забиндил эту текстуру перед рендером полигонов
 
Сообщения
35
Лучшие ответы
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);

}
 

Вложения

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

Вложения

Сообщения
35
Лучшие ответы
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);
    }
Как результат: всё работает как надо:
 

Вложения

Agravaine :j

Модератор
Сообщения
5,436
Лучшие ответы
265
Реакции
1,155
Ну это логично.
Надеюсь майн хотя бы сортируется партиклы по текстуре.
 
Сообщения
2,447
Лучшие ответы
75
Реакции
337
Нет. Там просто 4 пасса (типа). Юзер сам выбирает тип партикла, переопределив его в классе, а сама текстура биндится 1 раз перед перед рендером пасса.
 
Сверху