Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / PacketPlayOutAdvancements.java
package net.minecraft.server;

import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

public class PacketPlayOutAdvancements implements Packet<PacketListenerPlayOut> {

    private boolean a;
    private Map<MinecraftKey, Advancement.SerializedAdvancement> b;
    private Set<MinecraftKey> c;
    private Map<MinecraftKey, AdvancementProgress> d;

    public PacketPlayOutAdvancements() {}

    public PacketPlayOutAdvancements(boolean flag, Collection<Advancement> collection, Set<MinecraftKey> set, Map<MinecraftKey, AdvancementProgress> map) {
        this.a = flag;
        this.b = Maps.newHashMap();
        Iterator iterator = collection.iterator();

        while (iterator.hasNext()) {
            Advancement advancement = (Advancement) iterator.next();

            this.b.put(advancement.getName(), advancement.a());
        }

        this.c = set;
        this.d = Maps.newHashMap(map);
    }

    public void a(PacketListenerPlayOut packetlistenerplayout) {
        packetlistenerplayout.a(this);
    }

    @Override
    public void a(PacketDataSerializer packetdataserializer) throws IOException {
        this.a = packetdataserializer.readBoolean();
        this.b = Maps.newHashMap();
        this.c = Sets.newLinkedHashSet();
        this.d = Maps.newHashMap();
        int i = packetdataserializer.i();

        MinecraftKey minecraftkey;
        int j;

        for (j = 0; j < i; ++j) {
            minecraftkey = packetdataserializer.o();
            Advancement.SerializedAdvancement advancement_serializedadvancement = Advancement.SerializedAdvancement.b(packetdataserializer);

            this.b.put(minecraftkey, advancement_serializedadvancement);
        }

        i = packetdataserializer.i();

        for (j = 0; j < i; ++j) {
            minecraftkey = packetdataserializer.o();
            this.c.add(minecraftkey);
        }

        i = packetdataserializer.i();

        for (j = 0; j < i; ++j) {
            minecraftkey = packetdataserializer.o();
            this.d.put(minecraftkey, AdvancementProgress.b(packetdataserializer));
        }

    }

    @Override
    public void b(PacketDataSerializer packetdataserializer) throws IOException {
        packetdataserializer.writeBoolean(this.a);
        packetdataserializer.d(this.b.size());
        Iterator iterator = this.b.entrySet().iterator();

        Entry entry;

        while (iterator.hasNext()) {
            entry = (Entry) iterator.next();
            MinecraftKey minecraftkey = (MinecraftKey) entry.getKey();
            Advancement.SerializedAdvancement advancement_serializedadvancement = (Advancement.SerializedAdvancement) entry.getValue();

            packetdataserializer.a(minecraftkey);
            advancement_serializedadvancement.a(packetdataserializer);
        }

        packetdataserializer.d(this.c.size());
        iterator = this.c.iterator();

        while (iterator.hasNext()) {
            MinecraftKey minecraftkey1 = (MinecraftKey) iterator.next();

            packetdataserializer.a(minecraftkey1);
        }

        packetdataserializer.d(this.d.size());
        iterator = this.d.entrySet().iterator();

        while (iterator.hasNext()) {
            entry = (Entry) iterator.next();
            packetdataserializer.a((MinecraftKey) entry.getKey());
            ((AdvancementProgress) entry.getValue()).a(packetdataserializer);
        }

    }
}