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

Версия 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"));
    }
}
Как итог - пикрил, вопрос: что я делаю не так?
 

Вложения

  • 2019-07-20_01.39.01.png
    2019-07-20_01.39.01.png
    368.4 KB · Просмотры: 50
7,099
324
1,509
Покажи как ты ее рисуешь. Скорее всего не забиндил эту текстуру перед рендером полигонов
 
Действительно не забиндил текстуру перед рендером, однако после бинда частица стала выглядеть так. Неправильный рендер? Или проблема в текстуре?
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);

}
 

Вложения

  • 2019-07-20_14.58.39.png
    2019-07-20_14.58.39.png
    264.1 KB · Просмотры: 45
Действительно, использовать текстуру entity для теста было отнюдь не самой удачной идеей. Тем не менее, даже при выборе нормальной 16x16 текстуры, она рендерится как однотонный квадрат, а тут уже дело скорее всего в моих кривых руках.
 

Вложения

  • 2019-07-20_15.37.03.png
    2019-07-20_15.37.03.png
    173.6 KB · Просмотры: 50
7,099
324
1,509
Посмотрел в код порта 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);
    }

Как результат: всё работает как надо:
 

Вложения

  • 2019-07-20_19.53.56.png
    2019-07-20_19.53.56.png
    383.7 KB · Просмотры: 49
Сверху