А теперь про пакеты...

Сообщения
38
Лучшие ответы
0
Реакции
2
Версия Minecraft
1.12.2
Есть значение, которое хранится исключительно на сервере, требуется отсылать его на клиент для рендера текста на экране.
Посмотрел туториал, но там пакет отсылается именно игрокам. Соотственно вопрос, что делать?
 
Сообщения
329
Лучшие ответы
32
Реакции
122
Отправлять в измерение? SimpleNetworkWrapper#sendToDimension()
 

tox1cozZ

aka Agravaine
Модератор
Сообщения
6,430
Лучшие ответы
368
Реакции
1,695
Если надо всем игрокам - sendToAll.
Конкретному игроку - sendTo.
В чем проблема?
 
Сообщения
900
Лучшие ответы
33
Реакции
168
Ну так отсылай игрокам, у них же на экране должно рендериться...
 
Сообщения
38
Лучшие ответы
0
Реакции
2
Просто не совсем понимаю, что конкретно нужно с этим делать... Вот есть у меня пакет, вот есть у меня эвент рендера. И как их соединить воедино?
 

tox1cozZ

aka Agravaine
Модератор
Сообщения
6,430
Лучшие ответы
368
Реакции
1,695
Отправляешь игроку пакет с значение, где-то сеттаешь это значение и в рендере выводишь.
 
Сообщения
38
Лучшие ответы
0
Реакции
2
Собственно, в этом и вопрос, как сеттать значение из пакета?
 

tox1cozZ

aka Agravaine
Модератор
Сообщения
6,430
Лучшие ответы
368
Реакции
1,695
Ты вообще туториалы читал? Есть обработчик пакетов, в нем и сеттать.
 
Сообщения
38
Лучшие ответы
0
Реакции
2
50 раз перечитал документацию Форжа. Вроде разобрался, теперь другая проблема: Создаю пакет с листом лонгов, при отправке пакета записываю в него определённый лист, проверил через sysout: Лист перед отправкой с пакетом исправен, лист в самом пакете тоже, но по какой-то причине, при получении в MessageHandler'е он пустой. При этом с простым интом, как в документации, всё нормально.
 
Сообщения
126
Лучшие ответы
6
Реакции
27
Покажи код, где записываешь и читаешь
 
Сообщения
38
Лучшие ответы
0
Реакции
2
Java:
public class MyMessage implements IMessage
{
    public MyMessage(){}

    public List<Long> list = new ArrayList<Long>();
    private int listSize;
    
    public MyMessage(List<Long> list)
    {
        this.list = list;
        this.listSize = list.size();
    }

    @Override
    public void toBytes(ByteBuf buf)
    {       
        for(Long i : this.list)
        {
            buf.writeLong(i);
        }
    }

    @Override
    public void fromBytes(ByteBuf buf)
    {
        for(Long i : this.list)
        {
            list.add(buf.readLong());
        }
    }
}
 

tox1cozZ

aka Agravaine
Модератор
Сообщения
6,430
Лучшие ответы
368
Реакции
1,695
Дядь, ты что делаешь то?
Лист или массив нужно записывать так: записываешь вначале количество элементов, а потом сами элементы в цикле. Читаешь сначала количество элементов, а потом в fori читаешь сами элементы и добавляешь в лист.
 
Сверху