Пакет

Версия Minecraft
1.7.10
372
0
Есть GUI, при нажатие на кнопку отправляю пакет на сервер с изменением одной характеристики игрока (своя). Потом нужно это синхронизировать обратно с клиентом (вроде). Пытался отправит пакет при обработки первого пакета (бред, не?) и не получается, как мне сделать?
 
24
2
13
RaDiC написал(а):
Есть GUI, при нажатие на кнопку отправляю пакет на сервер с изменением одной характеристики игрока (своя). Потом нужно это синхронизировать обратно с клиентом (вроде). Пытался отправит пакет при обработки первого пакета (бред, не?) и не получается, как мне сделать?

Я отправляю пакет клиенту в методе изменения значения характеристики.
Этот метод определяет серверная сторона или нет.
Код:
public boolean isServerSide() {
    return this.player != null && this.player.worldObj != null && !this.player.worldObj.isRemote;
 }
Дальше проверяю, серверная ли сторона и отправляю пакет игроку, который содержит значение этой характеристики и в моем случае ид характеристики.
Код:
    Packets.network.sendTo(new SyncProperties(1, this.blabla), (EntityPlayerMP) this.player);
Дальше получаю хар-ки клиентского игрока и присваиваю значение, которое мы отправили.
Примерно так, думаю переделаешь под себя.
Код:
@Override
@SideOnly(Side.CLIENT)
public IMessage onMessage(SyncProperties packet,
 MessageContext message) {

 ExtendedPlayer props = ExtendedPlayer.get(Minecraft.getMinecraft().thePlayer);
    if(packet.modifierid == 1)
    {
     props.setCurrentModifier("blabla", packet.modifier);
    }

 return null;
}
Так же нужно синхронизировать при входе игрока.
 
372
0
Хм.. ты меня немного не понял. Впрочем, я делаю так же, но из за того что обработка GUI идет на клиенте, при нажатие кнопки повышается моя характеристика, то бишь, я посылаю пакет на сервер о изменения моего значения, все работает. Но на клиенте значение старое, и мне нужно теперь сервер синхронизировать с клиентом, ибо у меня сейчас синхронизация только при входе.
 
24
2
13
RaDiC написал(а):
Хм.. ты меня немного не понял. Впрочем, я делаю так же, но из за того что обработка GUI идет на клиенте, при нажатие кнопки повышается моя характеристика, то бишь, я посылаю пакет на сервер о изменения моего значения, все работает. Но на клиенте значение старое, и мне нужно теперь сервер синхронизировать с клиентом, ибо у меня сейчас синхронизация только при входе.

Так, то что я тебе дал и меняет значение на клиенте, у меня была точно такая же проблема и я ее решил так.
 

Eifel

Модератор
1,623
78
608
Зачем из клиента посылать пакет на сервер а потом с сервера опять на клиент если можно сделать все что надо на клиенте а потом отправить на сервер лишь пакет для синхронизации характеристики
 
24
2
13
Thunder написал(а):
Зачем из клиента посылать пакет на сервер а потом с сервера опять на клиент если можно сделать все что надо на клиенте а потом отправить на сервер лишь пакет для синхронизации характеристики
В данном случае ты прав, но когда он будет делать изменение хар-ки сначала на сервере, придется синхронизировать с клиентом и мой вариант подойдет.
 
2,505
81
397
Thunder написал(а):
Зачем из клиента посылать пакет на сервер а потом с сервера опять на клиент если можно сделать все что надо на клиенте а потом отправить на сервер лишь пакет для синхронизации характеристики

Ты серьезно сейчас? Тогда клиенты смогу легко изменить эту характеристику на овер много, и сервер им поверит.
 
Сверху