Приветствую. Решил создать эффект-нитку между двумя игроками на основе EntityPortalFX.
Выглядеть должно как набор портальных энтитей, летящих от одного игрока к другому.
В пакет хэндлере все сделал - судя по выводу в клиентские консоли, сервер правильно передает на клиенты имена двух игроков, между которыми будут летать энтити.
Вот так выглядит конструктор:
вот так выглядит onUpdate
Но пока что получается невразумительно. у одного игрока энтити спавнятся перед носом и никуда не летят, у второго их вообще не видно. Консоли, напоминаю, в курсе о том что на стороне клиента заспаунились энтити и корректно выводят все их параметры, передаваемые в конструктор. Так что, как мне кажется, я жутко накосячил в onUpdate, но где конкретно - хз. Буду рад любой помощи.
Выглядеть должно как набор портальных энтитей, летящих от одного игрока к другому.
В пакет хэндлере все сделал - судя по выводу в клиентские консоли, сервер правильно передает на клиенты имена двух игроков, между которыми будут летать энтити.
Вот так выглядит конструктор:
Код:
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, но где конкретно - хз. Буду рад любой помощи.