@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);
}
}
player.worldObj.spawnParticle("enchantmenttable", player.posX + x, player.posY, player.posZ + z, 0.0D, 0.0D, 0.0D);
Это если от игрока. От блока еще проще, если тебе надо от блока, то напиши, покажу пример от блока.
п.с. в коде...
player.worldObj.spawnParticle("enchantmenttable", player.posX + x, player.posY, player.posZ + z, 0.0D, 0.0D, 0.0D);
spawnparticle в гл класс?player.worldObj.spawnParticle("enchantmenttable", player.posX + x, player.posY, player.posZ + z, 0.0D, 0.0D, 0.0D);
Это если от игрока. От блока еще проще, если тебе надо от блока, то напиши, покажу пример от блока.
п.с. в коде:
(Название частицы, x, y, z, скорость по x, скорость по y. скорость по z)
=====
Список всех партиклов: Частицы
@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);
}
}
player.worldObj.spawnParticle("enchantmenttable", player.posX + x, player.posY, player.posZ + z, 0.0D, 0.0D, 0.0D);
Это если от игрока. От блока еще проще, если тебе надо от блока, то напиши, покажу пример от блока.
п.с. в коде:
(Название частицы, x, y, z, скорость по x, скорость по y. скорость по z)
=====
Список всех партиклов: Частицы
Так мне не спавн нужен...Нет. Смотри пример:
Если поставить это в классе блока, то он в рандомный момент будет спавнить рядом с собой огненный партикл. Так и по клику по нему можно и т.п. Вот что получим:Код:@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
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, ....));
ааа всё понял, спасибо. ща попробую своими кривыми руками это воссоздатьНе правильно понял.
Но я свой партикл так мутил:
И спавнил я его так:Код: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