- 95
- 1
- 2
Нужна помощь с синхронизацией анимации. При определенных действиях отправляю пакет всем игрокам вокруг, которые принимают данный пакет, после чего у всех получателей, отправитель начинает свою анимацию. При этом всем у меня какой-то очень странный баг
Первые 3 анимации активируются на всех, независимо от того делают ли те что-то или нет. И только после этого все более менее стабильно работает. Так же происходит с игроками, которых отправитель видит впервые. И не понятно в чем проблема
Пакет который отправляется:
Пакет, который получают игроки вокруг:
Первые 3 анимации активируются на всех, независимо от того делают ли те что-то или нет. И только после этого все более менее стабильно работает. Так же происходит с игроками, которых отправитель видит впервые. И не понятно в чем проблема
Пакет который отправляется:
Java:
public static class Handler implements IMessageHandler<AnimPacket, IMessage>{
@Override
public IMessage onMessage(AnimPacket message, MessageContext ctx) {
if(!message.messageValid && ctx.side != Side.SERVER)
return null;
FMLCommonHandler.instance().getWorldThread(ctx.netHandler).addScheduledTask(() -> processMessage(message, ctx));
return null;
}
void processMessage(AnimPacket message, MessageContext ctx) {
String pln = ctx.getServerHandler().playerEntity.getName();
EntityPlayer pl = ctx.getServerHandler().playerEntity;
TargetPoint point = new TargetPoint(pl.dimension, pl.posX, pl.posY, pl.posZ, 50);
ModCore.instance.getPacketManager().sendToAllAround(new ReturnAnimPacket(message.anim, pln), point);
}
}
Пакет, который получают игроки вокруг:
Код:
@SideOnly(Side.CLIENT)
public static class Handler implements IMessageHandler<ReturnAnimPacket, IMessage>{
@Override
public IMessage onMessage(ReturnAnimPacket message, MessageContext ctx) {
AbstractClientPlayer pl = (AbstractClientPlayer) Minecraft.getMinecraft().theWorld.getPlayerEntityByName(message.plname);
EntityPlayer pl1 = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(message.plname);
if(!message.messageValid && ctx.side != Side.CLIENT && !pl1.getName().equals(message.plname))
return null;
AnimationHandlerModelPlayer animHandler = ((CustomPlayerRender)Minecraft.getMinecraft().getRenderManager().getEntityRenderObject(pl)).getAnimationHandler(pl1);
animHandler.activateAnimation(message.anim, 0);
return null;
}
}