Получение motion игрока на сервере

Версия Minecraft
1.7.10
250
12
24
Толи лыжи не едут, толи я ...
Не получается получить(лол) motion игрока на сервере.
На клиенте логично все работает как нужно.
Пытаюсь получить в эвенте LivingEvent.LivingUpdateEvent
Java:
    @SubscribeEvent
    public void onPlayerLive(LivingEvent.LivingUpdateEvent ev)
    {
        if(ev.entity instanceof EntityPlayer)
        {
            EntityPlayer p = (EntityPlayer)ev.entity;
            if(!p.worldObj.isRemote)
            {
                System.out.println(p.motionX);
                System.out.println(p.motionY);
                System.out.println(p.motionZ);
            }
        }
    }

Собственно не канает. Кстати говоря, это только про X и Z координаты.
Y работает прекрасно.

Если что мне это нужно для того что-бы узнать движется игрок или нет, если есть другие способы(которые я конечно не знаю) подскажите.
Пробовал отнимать posX от prevPosX выдает 0, потому что они всегда равны.
 
250
12
24
Веееелосипеееед. Есть же онвалкед?
На какой прости версии?

Kotlin:
@SubscribeEvent
fun player(e: TickEvent.PlayerTickEvent)
{
    val mp = e.player as EntityPlayerMP
    println("Motion, x: ${mp.motionX}; y: ${mp.motionY}; z: ${mp.motionZ}")
}
?
Ок, попытка дубль много

Java:
    @SubscribeEvent
    public void onTick(TickEvent.PlayerTickEvent p)
    {
        if(p.player instanceof EntityPlayerMP)
        {
            System.out.println(p.player.motionX);
            System.out.println(p.player.motionY);
            System.out.println(p.player.motionZ);
        }
    }

Результат такой-же, по Y работает, по X и Z - нули.
 
250
12
24
Последнему я не могу ответить почему-то, но все же.
Мне как раз и нужно на сервере проверить. В этом весь смысл. Потому что на клиента все работает как нужно
 
1,990
18
105
У игрока на сервере совсем иначе обрабатывается движение, оно полностью читается с клиента, емнип.

Можешь попробовать достать EntityPlayerMP#playerNetServerHandler, там внутри есть lastPosX/Y/Z, с ними сравнивай текущую позицию.
Да и собственно внутри уже есть готовая переменная hasMoved, хранящая стейт для последнего тика.
 
Сверху