List и способы его использования

Версия Minecraft
1.7.10
106
8
19
Решил сделать радар и не на клиентском loadedEntityList,а на серверном.Написал пакеты,вроде как всё должно работать,но есть одно но.Так как я не нашел способа передачи листа в пакете я решил создать свой объект(класс) энтити и использовать это как List<myentityclass> = new ArrayList<myentityclass>(); * Мой класс myentityclass принимает 4 параметра(x,y,z,id) * и на каждый пакет я просто добавляю в лист энтити.но и тут всё не так просто,если сделать это,то при каждом пакете сохраняются энтити на радаре.решил на каждом пакете сначала list.clear() и только после этого add ,но при этом радар начинает моргать и это не очень такой выход.решил
Java:
            for(int i = 0; i < list.size(); i++)
            {
                if(list.get(i).uid == uid)
                {
                    list.get(i).x = x;
                    list.get(i).y = y;
                    list.get(i).z = z;
                    return;
                }
            }
но сейчас тоже есть проблемы.если энтити умирает то объект остается в листе.
Есть ли решения этой проблемы?Может как то можно отсеить те ID которые были и которых не стало в некст пакете?
 
Решение
Java:
    private List<RadarEntry> entries;
    public SPacketEntityList() {}
    public SPacketEntityList(List<RadarEntry> entries) {
        this.entries = entries;
    }

    @Override
    public void toBytes(ByteBuf buf) {
        buf.writeInt(entries.size());
        for(RadarEntry entry : entries){
            buf.writeDouble(entry.posX);
            buf.writeDouble(entry.posY);
            buf.writeDouble(entry.posZ);
        }
    }

    @Override
    public void fromBytes(ByteBuf buf) {
        int count = buf.readInt();
        entries = Lists.newArrayListWithCapacity(count);
        for(int i = 0; i < count; i++){
            entries.add(new RadarEntry(buf.readDouble(), buf.readDouble(), buf.readDouble()));
        }
    }...
7,099
324
1,510
Обязательно попробую.
UPD: мог бы показать пример?а то я сам что то не очень понял.
Вместо листа храни энтити в мапе по ключу его id. Таким образом не нужно будет беспокоиться о том, что старая версия сущности останется в данных, используемых для рендера радара и не нужно будет чистить всю коллекцию
 
7,099
324
1,510
Он раньше лист чистил потому что в нем оставались старые версии энтити(потому что по одной слал). А при вставке в мапу они будут правильно заменяться. В этом суть
 
Сверху