Синхронизация меж мирами

Версия Minecraft
1.7.10
1,976
68
220
Доброго времени суток о/

Какое-то время назад я задавал вопрос по атрибутам, связанный с сохранением их после смерти...
Однако недавно заметил, что после смены измерения на клиенте они отображают значением по-умолчанию.
И пускай на сервере всё нормально, на клиенте из-за этого не отрисовываются нужные элементы оверлея, дезориентируя игрока.
Вот и вопрос - как их синхронить?
Мне советовали PlayerChangedDimensionEvent и EntityJoinWorldEvent, но ни там, ни там "старого" и "нового" игрока (сущности) нет.
Заранее спасибо :D
 
Решение
Почему бы и не да...

Java:
@SubscribeEvent
public void onPlayerChangeDimension(PlayerChangedDimensionEvent e) {
    AlfheimCore.network.sendTo(new AttributeMessage(1, e.player.getEntityAttribute(AlfheimRegistry.FLIGHT).getAttributeValue()), (EntityPlayerMP) e.player);
}
Java:
public class AttributeMessage implements IMessage {

public int id;
public double value;
   
public AttributeMessage() {
    id = 0;
    value = 0;
}
   
public AttributeMessage(int i, double v) {
    id = i;
    value = v;
}
   
@Override
public void fromBytes(ByteBuf buf) {
    value = buf.readDouble();
    id = buf.readInt();
}

@Override
public void toBytes(ByteBuf buf) {
    buf.writeDouble(value);
    buf.writeInt(id);
}
   
public static class Handler...
1,976
68
220
Почему бы и не да...

Java:
@SubscribeEvent
public void onPlayerChangeDimension(PlayerChangedDimensionEvent e) {
    AlfheimCore.network.sendTo(new AttributeMessage(1, e.player.getEntityAttribute(AlfheimRegistry.FLIGHT).getAttributeValue()), (EntityPlayerMP) e.player);
}
Java:
public class AttributeMessage implements IMessage {

public int id;
public double value;
   
public AttributeMessage() {
    id = 0;
    value = 0;
}
   
public AttributeMessage(int i, double v) {
    id = i;
    value = v;
}
   
@Override
public void fromBytes(ByteBuf buf) {
    value = buf.readDouble();
    id = buf.readInt();
}

@Override
public void toBytes(ByteBuf buf) {
    buf.writeDouble(value);
    buf.writeInt(id);
}
   
public static class Handler implements IMessageHandler<AttributeMessage, IMessage> {

    @Override
    public IMessage onMessage(AttributeMessage packet, MessageContext message) {
        switch (packet.id) {
            case 1: Minecraft.getMinecraft().thePlayer.getAttributeMap().getAttributeInstance(AlfheimRegistry.FLIGHT).setBaseValue(packet.value); break;
        }
        return null;
    }
}
 
Сверху