Проблема с пакетами

Сообщения
36
Лучшие ответы
0
Реакции
0
Версия Minecraft
1.7.10
Надеюсь кто нибудь поможет. В общем если кратко то реализовывал перемещение райдера на энтити. Работало то хорошо но на сервере для остальных игроков позиция райдера не обновлялась. Если я правильно понял то что бы это было видно всем игрок при перемещении должен отправлять на сервер пакет со своим смещением. Теперь к делу...
Собсна класс с пакетом:
public class PacketRiderMove implements IMessage, IMessageHandler <PacketRiderMove, IMessage>
{
    private int id;
    private float posX, posZ;

    public PacketRiderMove(){}

    public PacketRiderMove(int id, float posX, float posZ)
    {
        this.id = id;
        this.posX = posX;
        this.posZ = posZ;
    }

    @Override
    public void toBytes(ByteBuf buffer)
    {
        buffer.writeInt(this.id);
        buffer.writeFloat(this.posX);
        buffer.writeFloat(this.posZ);
    }

    @Override
    public void fromBytes(ByteBuf buffer)
    {
        this.id = buffer.readInt();
        this.posX = buffer.readFloat();
        this.posZ = buffer.readFloat();
    }

    
    public IMessage onMessage(PacketRiderMove message, MessageContext ctx)
    {
        Entity entity;
        
        if (ctx.side.isServer())
        {
            entity = (ctx.getServerHandler()).playerEntity.worldObj.getEntityByID(message.id);
        }
        else
        {
            entity = (Minecraft.getMinecraft()).theWorld.getEntityByID(message.id);
        }
        
        if(entity instanceof EntityCarRider)
        {
            ((EntityCarRider)entity).setRelX(message.posX);
            ((EntityCarRider)entity).setRelZ(message.posZ);
        }
        
        if(ctx.side.isServer())
        {
            RTM.NETWORK_WRAPPER.sendToAll(message);
        }
        return null;
    }
    
}
Отправка смещений:
RTM.NETWORK_WRAPPER.sendToServer(new PacketRiderMove(this.getEntityId(), relX, relZ));
Регистрация:
NETWORK_WRAPPER.registerMessage(PacketRiderMove.class,        PacketRiderMove.class,    22, Side.SERVER);
        NETWORK_WRAPPER.registerMessage(PacketRiderMove.class,        PacketRiderMove.class,    23, Side.CLIENT);
Может я что то не так делаю? Наблюдается в итоге нормально перемещение до захода 2 игрока. Оно становиться дёрганным. А как только игрок садится на энтити наблюдается в консоли постоянно одна и таже ошибка. Заранее благодарен если чем то поможете.1565330933672.png
 
Сообщения
2,803
Лучшие ответы
172
Реакции
465
Это не ответ, но просто "совет".
Не нужно делать такие пакеты, когда ты отправляешь моба на какой-то pos, ибо это придет к пакет хаку, что ты можешь любого моба/игрока телепортить на любой pos.


Хороший код, ничего не скажешь..

~~~

Посмотри как сделана лодка.
В ней же есть все тоже самое, что тебе и нужно, разве нет?
 
Сообщения
36
Лучшие ответы
0
Реакции
0
На самом деле мысль хорошая, спасибо. А насчёт лодки - пойду поковыряю как сделано там
 
Сообщения
36
Лучшие ответы
0
Реакции
0
Это не ответ, но просто "совет".
Не нужно делать такие пакеты, когда ты отправляешь моба на какой-то pos, ибо это придет к пакет хаку, что ты можешь любого моба/игрока телепортить на любой pos.


Хороший код, ничего не скажешь..

~~~

Посмотри как сделана лодка.
В ней же есть все тоже самое, что тебе и нужно, разве нет?
В лодке это делается вообще без пакетов (что бы не быть голословным кидаю скрин). Но факт остается фактом сейчас у меня при вызове setPosition двигается только у себя но для других он остается просто сидящим в 0 сдвиге от ентити. 1565335932346.png
 
Сообщения
36
Лучшие ответы
0
Реакции
0
Поправка. Позиция райдера обновляется ибо он движется вместе с ентити (для всех) но переменная сдвигов по осям для остальных игроков остаётся 0. Я не знаю как можно реализовать передачу сдвига без пакетов. Какие у кого есть идеи?
 
Сообщения
2,803
Лучшие ответы
172
Реакции
465
Сетать с двух сторон, а не только на сервере?
 

Agravaine :j

Модератор
Сообщения
5,634
Лучшие ответы
291
Реакции
1,314
Это из-за того что ты садишься только у себя, а другие игроки этого не знают. Скорее всего.
Может надо пакет другим отослать что ты сел?
 
Сообщения
2,803
Лучшие ответы
172
Реакции
465
Сверху