Синхронизация

Версия Minecraft
1.10.2
95
1
2
Нужна помощь с синхронизацией анимации. При определенных действиях отправляю пакет всем игрокам вокруг, которые принимают данный пакет, после чего у всех получателей, отправитель начинает свою анимацию. При этом всем у меня какой-то очень странный баг

Первые 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;
        }
    }
 

Вложения

  • 2018-04-30_19.09.46.png
    2018-04-30_19.09.46.png
    95.9 KB · Просмотры: 22
  • 2018-04-30_19.10.01.png
    2018-04-30_19.10.01.png
    262 KB · Просмотры: 22
  • 2018-04-30_19.10.07.png
    2018-04-30_19.10.07.png
    471.6 KB · Просмотры: 20
Назад
Сверху