Что нужно для создания частицы?

Сообщения
754
Лучшие ответы
12
Реакции
63
Версия Minecraft
1.7.10
У меня встал вопрос какие классы нужны для создания частицы подобной EntityFlameFX?
Я взял сам EntityFlameFX, и EntityFX. Но что ещё нужно? Я не нашёл в них записи про текстуру частицы...
 
Сообщения
1,297
Лучшие ответы
38
Реакции
216
player.worldObj.spawnParticle("enchantmenttable", player.posX + x, player.posY, player.posZ + z, 0.0D, 0.0D, 0.0D);
Это если от игрока. От блока еще проще, если тебе надо от блока, то напиши, покажу пример от блока.
п.с. в коде:
(Название частицы, x, y, z, скорость по x, скорость по y. скорость по z)
=====
Список всех партиклов: Частицы
 
Сообщения
754
Лучшие ответы
12
Реакции
63
player.worldObj.spawnParticle("enchantmenttable", player.posX + x, player.posY, player.posZ + z, 0.0D, 0.0D, 0.0D);
Это если от игрока. От блока еще проще, если тебе надо от блока, то напиши, покажу пример от блока.
п.с. в коде:
(Название частицы, x, y, z, скорость по x, скорость по y. скорость по z)
=====
Список всех партиклов: Частицы
spawnparticle в гл класс?
 
Сообщения
1,297
Лучшие ответы
38
Реакции
216
Нет. Смотри пример:
Код:
    @Override
    public void randomDisplayTick(World world, int x, int y, int z, Random random) {
            if (world.isBlockIndirectlyGettingPowered(x, y, z))
                world.spawnParticle("flame", (double)(x1 +1), (double)(y1+1), (double)(z1 + f1+1), 0.0D, 0.0D, 0.0D);
            }
        }
Если поставить это в классе блока, то он в рандомный момент будет спавнить рядом с собой огненный партикл. Так и по клику по нему можно и т.п. Вот что получим:

2017-07-16_16.23.43.png

player.worldObj.spawnParticle("enchantmenttable", player.posX + x, player.posY, player.posZ + z, 0.0D, 0.0D, 0.0D);
Это если от игрока. От блока еще проще, если тебе надо от блока, то напиши, покажу пример от блока.
п.с. в коде:
(Название частицы, x, y, z, скорость по x, скорость по y. скорость по z)
=====
Список всех партиклов: Частицы

А код выше я ставил у предметов, что бы при пкм спавнились партиклы.
Например:
2017-07-16_22.45.38.png
 
Сообщения
754
Лучшие ответы
12
Реакции
63
Нет. Смотри пример:
Код:
    @Override
    public void randomDisplayTick(World world, int x, int y, int z, Random random) {
            if (world.isBlockIndirectlyGettingPowered(x, y, z))
                world.spawnParticle("flame", (double)(x1 +1), (double)(y1+1), (double)(z1 + f1+1), 0.0D, 0.0D, 0.0D);
            }
        }
Если поставить это в классе блока, то он в рандомный момент будет спавнить рядом с собой огненный партикл. Так и по клику по нему можно и т.п. Вот что получим:

Посмотреть вложение 897




А код выше я ставил у предметов, что бы при пкм спавнились партиклы.
Например:
Посмотреть вложение 896
Так мне не спавн нужен...
А как сделать свою частицу... я спавн знаю я уже делал на блок частицы...
У меня проблемы где её назвать и как настроить текстуру
 
Сообщения
1,297
Лучшие ответы
38
Реакции
216
Не правильно понял.
Но я свой партикл так мутил:
Код:
public class HealFX extends CustomEntityParticle{
public HealFX(World World, double x, double y, double z) {
super(World, x, y, z);
this.setMaxAge(60);
this.setGravity(-0.2);
}
public static ResourceLocation tex = new ResourceLocation(Socrafice.modID, "textures/particles/test.png");
protected ResourceLocation getIconLoc() {
return tex;
}
}
Код:
@SideOnly(Side.CLIENT)
public abstract class CustomEntityParticle extends EntityFX {
  public CustomEntityParticle(World World, double x, double y, double z){
      super(World, x, y, z);
  }
  public CustomEntityParticle(World p_i1219_1_, double p_i1219_2_, double p_i1219_4_, double p_i1219_6_, double p_i1219_8_, double p_i1219_10_, double p_i1219_12_) {
      super(p_i1219_1_, p_i1219_2_, p_i1219_4_, p_i1219_6_, p_i1219_8_, p_i1219_10_, p_i1219_12_);
  }
  @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);
      GL11.glDisable(GL11.GL_CULL_FACE);
      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.glEnable(GL11.GL_CULL_FACE);
      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;
  }
  public CustomEntityParticle setMaxAge(int maxAge){
      particleMaxAge = (int) (maxAge-(Math.random()*(maxAge-1)));
      return this;
  }
  public CustomEntityParticle setGravity(double gravity){
      particleGravity = (float)gravity;
      return this;
  }
  public CustomEntityParticle setScale(double scale){
      particleScale = (float)scale;
      return this;
  }
}
И спавнил я его так:
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityPoisonFX(world, ....));
Итого: //На форуму не смотри. Дело было вечером, делать было нечего)
2017-07-16_16.23.48.png
 
Сообщения
754
Лучшие ответы
12
Реакции
63
Не правильно понял.
Но я свой партикл так мутил:
Код:
public class HealFX extends CustomEntityParticle{
public HealFX(World World, double x, double y, double z) {
super(World, x, y, z);
this.setMaxAge(60);
this.setGravity(-0.2);
}
public static ResourceLocation tex = new ResourceLocation(Socrafice.modID, "textures/particles/test.png");
protected ResourceLocation getIconLoc() {
return tex;
}
}
Код:
@SideOnly(Side.CLIENT)
public abstract class CustomEntityParticle extends EntityFX {
  public CustomEntityParticle(World World, double x, double y, double z){
      super(World, x, y, z);
  }
  public CustomEntityParticle(World p_i1219_1_, double p_i1219_2_, double p_i1219_4_, double p_i1219_6_, double p_i1219_8_, double p_i1219_10_, double p_i1219_12_) {
      super(p_i1219_1_, p_i1219_2_, p_i1219_4_, p_i1219_6_, p_i1219_8_, p_i1219_10_, p_i1219_12_);
  }
  @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);
      GL11.glDisable(GL11.GL_CULL_FACE);
      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.glEnable(GL11.GL_CULL_FACE);
      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;
  }
  public CustomEntityParticle setMaxAge(int maxAge){
      particleMaxAge = (int) (maxAge-(Math.random()*(maxAge-1)));
      return this;
  }
  public CustomEntityParticle setGravity(double gravity){
      particleGravity = (float)gravity;
      return this;
  }
  public CustomEntityParticle setScale(double scale){
      particleScale = (float)scale;
      return this;
  }
}
И спавнил я его так:
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityPoisonFX(world, ....));
Итого: //На форуму не смотри. Дело было вечером, делать было нечего)
Посмотреть вложение 898
ааа всё понял, спасибо. ща попробую своими кривыми руками это воссоздать
 
Сверху