Партиклы и их вызов.

У меня есть класс extends EntityFX.
Код:
package ru.steevenrichard.lastdays.common.blocks;

import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;

public abstract class BlockParticleTest extends EntityFX{
    
    private static ResourceLocation particles = new ResourceLocation("lastdays:particles/particles.png");

    public BlockParticleTest(World wrd, double x, double y, double z){
        super(wrd, x, y, z);
    }
        //Этот метод скопипастен полностью, кроме того, что помечено.
    @Override
    public void renderParticle(Tessellator tess, float partialTicks, float par3, float par4, float par5, float par6, float par7){
        Minecraft.getMinecraft().renderEngine.bindTexture(getIconLoc());//МЕТКА
        GL11.glDepthMask(false);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F);//МЕТКА
        tess.startDrawingQuads();//МЕТКА
        tess.setBrightness(getBrightnessForRender(partialTicks));//МЕТКА
        float scale = 0.1F * particleScale;
        float x = (float)(prevPosX + (posX - prevPosX) * partialTicks - interpPosX);
        float y = (float)(prevPosY + (posY - prevPosY) * partialTicks - interpPosY);
        float z = (float)(prevPosZ + (posZ - prevPosZ) * partialTicks - interpPosZ);
        tess.addVertexWithUV(x - par3 * scale - par6 * scale, y - par4 * scale, z - par5 * scale - par7 * scale, /*НАЧАЛО_МЕТКИ*/0.0, 0.0/*КОНЕЦ_МЕТКИ*/);
        tess.addVertexWithUV(x - par3 * scale + par6 * scale, y + par4 * scale, z - par5 * scale + par7 * scale, /*НАЧАЛО_МЕТКИ*/1.0, 0.0/*КОНЕЦ_МЕТКИ*/);
        tess.addVertexWithUV(x + par3 * scale + par6 * scale, y + par4 * scale, z + par5 * scale + par7 * scale, /*НАЧАЛО_МЕТКИ*/1.0, 1.0/*КОНЕЦ_МЕТКИ*/);
        tess.addVertexWithUV(x + par3 * scale - par6 * scale, y - par4 * scale, z + par5 * scale - par7 * scale, /*НАЧАЛО_МЕТКИ*/0.0, 1.0/*КОНЕЦ_МЕТКИ*/);
        tess.draw();//МЕТКА
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glDepthMask(true);
        GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);//МЕТКА
    }

    protected ResourceLocation getIconLoc() {
        return particles;
    }
    
    @Override
    public int getFXLayer(){
        return 3;//Корень зла, если это - 3, то при рендере он без твоего согласия не вызывает заранее tess.startDrawingQuads(); и tess.draw(); , что позволяет иметь свою текстуру.
    }
        //Те три метода, что ниже, для удобства
    public BlockParticleTest setMaxAge(int maxAge){
        particleMaxAge = maxAge;
        return this;
    }

    public BlockParticleTest setGravity(double gravity){
        particleGravity = (float)gravity;
        return this;
    }
}
По пути текстуры лежит стандартный файл с партиклами из майнкарфта.

Как вызвать партикл в блоке?
Где нужно регистрировать партиклы?
Поправьте если где то что то сделал не так. Просто не могу разобраться с этой дрянью.
 
Cannot instantiate the type BlockParticleTest
Такая ошибка над 
Код:
Minecraft.getMinecraft().effectRenderer.addEffect(new BlockParticleTest(p_149734_1_, particleX, particleY, particleZ));

Код:
BlockParticleTest
 
[font=Verdana, Helvetica, Arial, sans-serif]наследуй его и новый класс спавнь[/font]
янихуянепонял  чегооо?
[merge_posts_bbcode]Добавлено: 17.05.2015 21:19:55[/merge_posts_bbcode]

Окей. Разобрался немного. Теперь хотелось бы получить информации по функциям, кого не затруднит.
Код:
public class BlockParticleTest extends EntityFX{
    
    private static ResourceLocation particles = new ResourceLocation("lastdays:particles/particleTest.png");

    public BlockParticleTest(World wrd, double x, double y, double z){
        super(wrd, x, y, z);
    }
        //Этот метод скопипастен полностью, кроме того, что помечено.
    @Override
    public void renderParticle(Tessellator tess, float partialTicks, float par3, float par4, float par5, float par6, float par7){
        Minecraft.getMinecraft().renderEngine.bindTexture(getIconLoc());//МЕТКА
        GL11.glDepthMask(false);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F);//МЕТКА
        tess.startDrawingQuads();//МЕТКА
        tess.setBrightness(getBrightnessForRender(partialTicks));//МЕТКА
        float scale = 0.1F * particleScale;
        float x = (float)(prevPosX + (posX - prevPosX) * partialTicks - interpPosX);
        float y = (float)(prevPosY + (posY - prevPosY) * partialTicks - interpPosY);
        float z = (float)(prevPosZ + (posZ - prevPosZ) * partialTicks - interpPosZ);
        tess.addVertexWithUV(x - par3 * scale - par6 * scale, y - par4 * scale, z - par5 * scale - par7 * scale, /*НАЧАЛО_МЕТКИ*/0.0, 0.0/*КОНЕЦ_МЕТКИ*/);
        tess.addVertexWithUV(x - par3 * scale + par6 * scale, y + par4 * scale, z - par5 * scale + par7 * scale, /*НАЧАЛО_МЕТКИ*/1.0, 0.0/*КОНЕЦ_МЕТКИ*/);
        tess.addVertexWithUV(x + par3 * scale + par6 * scale, y + par4 * scale, z + par5 * scale + par7 * scale, /*НАЧАЛО_МЕТКИ*/1.0, 1.0/*КОНЕЦ_МЕТКИ*/);
        tess.addVertexWithUV(x + par3 * scale - par6 * scale, y - par4 * scale, z + par5 * scale - par7 * scale, /*НАЧАЛО_МЕТКИ*/0.0, 1.0/*КОНЕЦ_МЕТКИ*/);
        tess.draw();//МЕТКА
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glDepthMask(true);
        GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);//МЕТКА
    }

    protected ResourceLocation getIconLoc() {
        return particles;
    }
    
    @Override
    public int getFXLayer(){
        return 3;//Корень зла, если это - 3, то при рендере он без твоего согласия не вызывает заранее tess.startDrawingQuads(); и tess.draw(); , что позволяет иметь свою текстуру.
    }
        //Те три метода, что ниже, для удобства
    public BlockParticleTest setMaxAge(int maxAge){
        particleMaxAge = maxAge;
        return this;
    }

    public BlockParticleTest setGravity(double gravity){
        particleGravity = (float)gravity;
        return this;
    }
}
Что есть что и что за что отвечает? Как допустим сделать так, что бы частица жила долго и "пульсировала" (расширялась и сжималась текстура)?
 
Сверху