частицы

Версия Minecraft
1.7.10
459
13
34
Всем привет. Как можно отрисовать частицы (любые) вокруг брони?
Заранее спасибо.
 
Решение
onArmorTick вызывается на стороне клиента. Точнее, так написано в комментарии к его единственному использующему методу.
Попробуй тогда событие WorldTickEvent, выполняй только на сервере и юзай тот метод, чтобы спаунить частицы вокруг каждого игрока с броней.
Оформил его Спавн частиц на сервере
~~~
В 1.7.10 в серверном мире все же есть этот метод, но имя и аргументы у него обфусцированы
7,099
324
1,509
Список имен частиц для 1.7.10
 
459
13
34
я делал обычным методом в классе
брони
Java:
        @Override
        public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack)
        {
            for (int count = 0; count < 2; count++){
                double X = player.posX;
                double Y = player.posY;
                double Z = player.posZ;
                Random random = player.worldObj.rand;
                for (int i = 0; i < 10; ++i)
                {
                    int j1 = MathHelper.getRandomIntegerInRange(random, 0, 3);
                    if(j1 == 0){
                        player.worldObj.spawnParticle("reddust", (double)((float)X + random.nextFloat()), (double)Y - 1.5, (double)((float)Z + random.nextFloat()), 0, 0, 0);
                    }
                    if(j1 == 1){
                        player.worldObj.spawnParticle("reddust", (double)((float)X - random.nextFloat()), (double)Y - 1.5, (double)((float)Z + random.nextFloat()), 0, 0, 0);
                    }
                    if(j1 == 2){
                        player.worldObj.spawnParticle("reddust", (double)((float)X + random.nextFloat()), (double)Y - 1.5, (double)((float)Z - random.nextFloat()), 0, 0, 0);
                    }
                    if(j1 == 3){
                        player.worldObj.spawnParticle("reddust", (double)((float)X - random.nextFloat()), (double)Y - 1.5, (double)((float)Z - random.nextFloat()), 0, 0, 0);
                    }
                }  
            }
        }
 
7,099
324
1,509
459
13
34
ещё пытался в эвенте отрендерить, но там вообще не
Java:
    @SubscribeEvent
    public void playerTickEvent(PlayerTickEvent event) {
        if(event.player.getCurrentArmor(3) != null){
            ItemStack helmet = event.player.getCurrentArmor(3);
            if(helmet.getItem() == itemreg.items){

                for (int count = 0; count < 2; count++){
                    double X = event.player.posX;
                    double Y = event.player.posY;
                    double Z = event.player.posZ;
                    Random random = event.player.getEntityWorld().rand;
                    for (int i = 0; i < 10; ++i)
                    {
                        int j1 = MathHelper.getRandomIntegerInRange(random, 0, 3);
                        if(j1 == 0){
                            event.player.getEntityWorld().spawnParticle("reddust", (double)((float)X + random.nextFloat()), (double)Y - 1.5, (double)((float)Z + random.nextFloat()), 0, 0.74901960784, 0.89803921568);
                        }
                        if(j1 == 1){
                            event.player.getEntityWorld().spawnParticle("reddust", (double)((float)X - random.nextFloat()), (double)Y - 1.5, (double)((float)Z + random.nextFloat()), 0, 0.74901960784, 0.89803921568);
                        }
                        if(j1 == 2){
                            event.player.getEntityWorld().spawnParticle("reddust", (double)((float)X + random.nextFloat()), (double)Y - 1.5, (double)((float)Z - random.nextFloat()), 0, 0.74901960784, 0.89803921568);
                        }
                        if(j1 == 3){
                            event.player.getEntityWorld().spawnParticle("reddust", (double)((float)X - random.nextFloat()), (double)Y - 1.5, (double)((float)Z - random.nextFloat()), 0, 0.74901960784, 0.89803921568);
                    }  
                }
             }
          }
       }
   }
}
видел их.
 
7,099
324
1,509
Тогда сделай проверку !isRemote и вместо спавна частиц отправляй на клиент пакет SPacketParticles

В 1.7.10 нету, но в 1.12.2 в серверном мире такая реализация
Java:
public void spawnParticle(EnumParticleTypes particleType, boolean longDistance, double xCoord, double yCoord, double zCoord, int numberOfParticles, double xOffset, double yOffset, double zOffset, double particleSpeed, int... particleArguments)
{
    SPacketParticles spacketparticles = new SPacketParticles(particleType, longDistance, (float)xCoord, (float)yCoord, (float)zCoord, (float)xOffset, (float)yOffset, (float)zOffset, (float)particleSpeed, numberOfParticles, particleArguments);

    for (int i = 0; i < this.playerEntities.size(); ++i)
    {
        EntityPlayerMP entityplayermp = (EntityPlayerMP)this.playerEntities.get(i);
        this.sendPacketWithinDistance(entityplayermp, longDistance, xCoord, yCoord, zCoord, spacketparticles);
    }
}
Можно скопипастить и юзать. this в этом коде - это World
 
7,099
324
1,509
А что не так с пакетами? Это готовый ванильный пакет, просто берешь и юзаешь. На счет захламленности сети не парься, ванилла все равно больше отправляет, например, о движении игрока(когда игрок дико машет башкой, у тя ведь не лагает)
 
7,099
324
1,509
Сверху