public abstract class EntityParticle extends EntityFX{
public EntityParticle(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 abstract ResourceLocation getIconLoc();
@Override
public int getFXLayer(){
return 3;//Корень зла, если это - 3, то при рендере он без твоего согласия не вызывает заранее tess.startDrawingQuads(); и tess.draw(); , что позволяет иметь свою текстуру.
}
//Те три метода, что ниже, для удобства
public EntityParticle setMaxAge(int maxAge){
particleMaxAge = maxAge;
return this;
}
public EntityParticle setGravity(double gravity){
particleGravity = (float)gravity;
return this;
}
public EntityParticle setScale(double scale){
particleScale = (float)scale;
return this;
}
}