- 279
- 0
Разобрался немного. Хотелось бы получить информации по функциям, кого не затруднит.
Что есть что и что за что отвечает? Как допустим сделать так, что бы частица жила долго и "пульсировала" (расширялась и сжималась текстура)?
Как сделать так, что бы частицы имели гравитацию и падали на землю? Как сделать так, что бы частицы (если их спавнится много) медленно вращались вокруг своей оси?
Код:
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;
}
}
Как сделать так, что бы частицы имели гравитацию и падали на землю? Как сделать так, что бы частицы (если их спавнится много) медленно вращались вокруг своей оси?