Эффект "нитка" между двумя игроками

Версия Minecraft
1.6.4
Приветствую. Решил создать эффект-нитку между двумя игроками на основе EntityPortalFX.
Выглядеть должно как набор портальных энтитей, летящих от одного игрока к другому.
В пакет хэндлере все сделал - судя по выводу в клиентские консоли, сервер правильно передает на клиенты имена двух игроков, между которыми будут летать энтити.

Вот так выглядит конструктор:

Код:
  public YarnFx(EntityLivingBase playerStart, EntityLivingBase playerEnd, double d, double d1, double d2, double f1, double f2,
                             double f3, float[] color, double speed) {
        super(playerStart.worldObj, playerStart.posX, playerStart.posY + 1, playerStart.posZ, f1, f2, f3);

        this.player1 = playerStart;
        this.player2 = playerEnd;

        this.x = d;
        this.y = d1;
        this.z = d2;
        this.speed = speed;

        super.particleRed = color[0] / 255.0F;
        super.particleGreen = color[1] / 255.0F;
        super.particleBlue = color[2] / 255.0F;
        this.particleScale = 2.8F;
        super.particleMaxAge = (int) (16.0D / (Math.random() * 0.1D + 0.1D));
        super.noClip = true;
    }


вот так выглядит onUpdate
Код:
 public void onUpdate() {
        if (this.player1.isDead || this.player2.isDead) {
            this.setDead();
        } else {
            super.prevPosX = super.posX;
            super.prevPosY = super.posY;
            super.prevPosZ = super.posZ;

            float k = super.particleAge/super.particleMaxAge;

            super.posX = player1.posX + (player2.posX - player1.posX) * k;
            super.posY = player1.posY + (player2.posY - player1.posY) * k;
            super.posZ = player1.posZ + (player2.posZ - player1.posZ) * k;

            if (super.particleAge++ >= super.particleMaxAge) {
                this.setDead();
            }
        }
    }

Но пока что получается невразумительно. у одного игрока энтити спавнятся перед носом и никуда не летят, у второго их вообще не видно. Консоли, напоминаю, в курсе о том что на стороне клиента заспаунились энтити и корректно выводят все их параметры, передаваемые в конструктор. Так что, как мне кажется, я жутко накосячил в onUpdate, но где конкретно - хз. Буду рад любой помощи.
 
7,099
324
1,510
Для начала, не храни сущности(например, игроков) в виде их экземпляров. Игроков лучше хранить в виде ника. И чтобы они летели юзай метод из этой темы:
http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-%D0%A2%D0%BE%D0%BB%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5-%D1%8D%D0%BD%D1%82%D0%B8%D1%82%D0%B8-%D0%B8%D0%B3%D1%80%D0%BE%D0%BA-%D0%BC%D0%BE%D0%B1
В коде, который ты показал частица просто стоит на месте
 
2,505
81
397
У тебя k всегда 0
Код:
float k = super.particleAge / (float) super.particleMaxAge;
Также this.player1 может быть равен null


hohserg написал(а):
Для начала, не храни сущности(например, игроков) в виде их экземпляров. Игроков лучше хранить в виде ника.
Это ты к чему вообще? :) Да и какая разница что хранить 8 байт или 8 байт (если x64). Ссылочные типы жи.
 
hohserg написал(а):
Для начала, не храни сущности(например, игроков) в виде их экземпляров. Игроков лучше хранить в виде ника. И чтобы они летели юзай метод из этой темы:
http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-%D0%A2%D0%BE%D0%BB%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5-%D1%8D%D0%BD%D1%82%D0%B8%D1%82%D0%B8-%D0%B8%D0%B3%D1%80%D0%BE%D0%BA-%D0%BC%D0%BE%D0%B1
В коде, который ты показал частица просто стоит на месте

В моей версии форджа Vector3 нету. Так что делаю по-своему.


Dahaka написал(а):
У тебя k всегда 0
Код:
float k = super.particleAge / (float) super.particleMaxAge;
Также this.player1 может быть равен null


hohserg написал(а):
Для начала, не храни сущности(например, игроков) в виде их экземпляров. Игроков лучше хранить в виде ника.
Это ты к чему вообще? :) Да и какая разница что хранить 8 байт или 8 байт (если x64). Ссылочные типы жи.



Огромное спасибо, теперь работает.  никому не говорите что я так зафейлился.
 
7,099
324
1,510
Dahaka написал(а):
Это ты к чему вообще? :) Да и какая разница что хранить 8 байт или 8 байт (если x64). Ссылочные типы жи.
Если игрок перезайдет на сервер или зайдет в другое измерение, его объект EntityPlayer будет новый, старая ссылка будет бесполезна
 
Сверху