package net.minecraft.network;

import com.google.common.collect.Maps;
import com.google.common.collect.Iterables;
import org.apache.logging.log4j.LogManager;
import com.google.common.collect.Lists;
import net.minecraft.Util;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import java.util.function.Supplier;
import java.util.List;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import javax.annotation.Nullable;
import net.minecraft.network.protocol.PacketFlow;
import net.minecraft.network.protocol.Packet;
import java.util.Map;

public enum ConnectionProtocol {
    public static final ConnectionProtocol HANDSHAKING;
    public static final ConnectionProtocol PLAY;
    public static final ConnectionProtocol STATUS;
    public static final ConnectionProtocol LOGIN;
    private static final ConnectionProtocol[] LOOKUP;
    private static final Map<Class<? extends Packet<?>>, ConnectionProtocol> PROTOCOL_BY_PACKET;
    private final int id;
    private final Map<PacketFlow, ? extends PacketSet<?>> flows;
    
    private static ProtocolBuilder protocol() {
        return new ProtocolBuilder();
    }
    
    private ConnectionProtocol(final int integer3, final ProtocolBuilder b) {
        this.id = integer3;
        this.flows = b.flows;
    }
    
    @Nullable
    public Integer getPacketId(final PacketFlow lu, final Packet<?> lt) {
        return ((PacketSet)this.flows.get(lu)).getId(lt.getClass());
    }
    
    @Nullable
    public Packet<?> createPacket(final PacketFlow lu, final int integer) {
        return ((PacketSet)this.flows.get(lu)).createPacket(integer);
    }
    
    public int getId() {
        return this.id;
    }
    
    @Nullable
    public static ConnectionProtocol getById(final int integer) {
        if (integer < -1 || integer > 2) {
            return null;
        }
        return ConnectionProtocol.LOOKUP[integer + 1];
    }
    
    public static ConnectionProtocol getProtocolForPacket(final Packet<?> lt) {
        return ConnectionProtocol.PROTOCOL_BY_PACKET.get(lt.getClass());
    }
    
    static {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     3: dup            
        //     4: ldc             "HANDSHAKING"
        //     6: iconst_0       
        //     7: iconst_m1      
        //     8: invokestatic    net/minecraft/network/ConnectionProtocol.protocol:()Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //    11: getstatic       net/minecraft/network/protocol/PacketFlow.SERVERBOUND:Lnet/minecraft/network/protocol/PacketFlow;
        //    14: new             Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //    17: dup            
        //    18: aconst_null    
        //    19: invokespecial   net/minecraft/network/ConnectionProtocol$PacketSet.<init>:(Lnet/minecraft/network/ConnectionProtocol$1;)V
        //    22: ldc             Lnet/minecraft/network/protocol/handshake/ClientIntentionPacket;.class
        //    24: invokedynamic   BootstrapMethod #1, get:()Ljava/util/function/Supplier;
        //    29: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //    32: invokevirtual   net/minecraft/network/ConnectionProtocol$ProtocolBuilder.addFlow:(Lnet/minecraft/network/protocol/PacketFlow;Lnet/minecraft/network/ConnectionProtocol$PacketSet;)Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //    35: invokespecial   net/minecraft/network/ConnectionProtocol.<init>:(Ljava/lang/String;IILnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;)V
        //    38: putstatic       net/minecraft/network/ConnectionProtocol.HANDSHAKING:Lnet/minecraft/network/ConnectionProtocol;
        //    41: new             Lnet/minecraft/network/ConnectionProtocol;
        //    44: dup            
        //    45: ldc             "PLAY"
        //    47: iconst_1       
        //    48: iconst_0       
        //    49: invokestatic    net/minecraft/network/ConnectionProtocol.protocol:()Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //    52: getstatic       net/minecraft/network/protocol/PacketFlow.CLIENTBOUND:Lnet/minecraft/network/protocol/PacketFlow;
        //    55: new             Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //    58: dup            
        //    59: aconst_null    
        //    60: invokespecial   net/minecraft/network/ConnectionProtocol$PacketSet.<init>:(Lnet/minecraft/network/ConnectionProtocol$1;)V
        //    63: ldc             Lnet/minecraft/network/protocol/game/ClientboundAddEntityPacket;.class
        //    65: invokedynamic   BootstrapMethod #2, get:()Ljava/util/function/Supplier;
        //    70: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //    73: ldc             Lnet/minecraft/network/protocol/game/ClientboundAddExperienceOrbPacket;.class
        //    75: invokedynamic   BootstrapMethod #3, get:()Ljava/util/function/Supplier;
        //    80: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //    83: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundAddGlobalEntityPacket;.class
        //    86: invokedynamic   BootstrapMethod #4, get:()Ljava/util/function/Supplier;
        //    91: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //    94: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundAddMobPacket;.class
        //    97: invokedynamic   BootstrapMethod #5, get:()Ljava/util/function/Supplier;
        //   102: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   105: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundAddPaintingPacket;.class
        //   108: invokedynamic   BootstrapMethod #6, get:()Ljava/util/function/Supplier;
        //   113: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   116: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundAddPlayerPacket;.class
        //   119: invokedynamic   BootstrapMethod #7, get:()Ljava/util/function/Supplier;
        //   124: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   127: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundAnimatePacket;.class
        //   130: invokedynamic   BootstrapMethod #8, get:()Ljava/util/function/Supplier;
        //   135: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   138: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundAwardStatsPacket;.class
        //   141: invokedynamic   BootstrapMethod #9, get:()Ljava/util/function/Supplier;
        //   146: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   149: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundBlockBreakAckPacket;.class
        //   152: invokedynamic   BootstrapMethod #10, get:()Ljava/util/function/Supplier;
        //   157: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   160: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundBlockDestructionPacket;.class
        //   163: invokedynamic   BootstrapMethod #11, get:()Ljava/util/function/Supplier;
        //   168: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   171: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket;.class
        //   174: invokedynamic   BootstrapMethod #12, get:()Ljava/util/function/Supplier;
        //   179: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   182: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundBlockEventPacket;.class
        //   185: invokedynamic   BootstrapMethod #13, get:()Ljava/util/function/Supplier;
        //   190: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   193: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundBlockUpdatePacket;.class
        //   196: invokedynamic   BootstrapMethod #14, get:()Ljava/util/function/Supplier;
        //   201: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   204: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundBossEventPacket;.class
        //   207: invokedynamic   BootstrapMethod #15, get:()Ljava/util/function/Supplier;
        //   212: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   215: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundChangeDifficultyPacket;.class
        //   218: invokedynamic   BootstrapMethod #16, get:()Ljava/util/function/Supplier;
        //   223: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   226: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundChatPacket;.class
        //   229: invokedynamic   BootstrapMethod #17, get:()Ljava/util/function/Supplier;
        //   234: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   237: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundChunkBlocksUpdatePacket;.class
        //   240: invokedynamic   BootstrapMethod #18, get:()Ljava/util/function/Supplier;
        //   245: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   248: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundCommandSuggestionsPacket;.class
        //   251: invokedynamic   BootstrapMethod #19, get:()Ljava/util/function/Supplier;
        //   256: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   259: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundCommandsPacket;.class
        //   262: invokedynamic   BootstrapMethod #20, get:()Ljava/util/function/Supplier;
        //   267: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   270: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundContainerAckPacket;.class
        //   273: invokedynamic   BootstrapMethod #21, get:()Ljava/util/function/Supplier;
        //   278: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   281: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundContainerClosePacket;.class
        //   284: invokedynamic   BootstrapMethod #22, get:()Ljava/util/function/Supplier;
        //   289: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   292: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundContainerSetContentPacket;.class
        //   295: invokedynamic   BootstrapMethod #23, get:()Ljava/util/function/Supplier;
        //   300: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   303: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundContainerSetDataPacket;.class
        //   306: invokedynamic   BootstrapMethod #24, get:()Ljava/util/function/Supplier;
        //   311: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   314: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundContainerSetSlotPacket;.class
        //   317: invokedynamic   BootstrapMethod #25, get:()Ljava/util/function/Supplier;
        //   322: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   325: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundCooldownPacket;.class
        //   328: invokedynamic   BootstrapMethod #26, get:()Ljava/util/function/Supplier;
        //   333: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   336: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundCustomPayloadPacket;.class
        //   339: invokedynamic   BootstrapMethod #27, get:()Ljava/util/function/Supplier;
        //   344: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   347: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundCustomSoundPacket;.class
        //   350: invokedynamic   BootstrapMethod #28, get:()Ljava/util/function/Supplier;
        //   355: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   358: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundDisconnectPacket;.class
        //   361: invokedynamic   BootstrapMethod #29, get:()Ljava/util/function/Supplier;
        //   366: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   369: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundEntityEventPacket;.class
        //   372: invokedynamic   BootstrapMethod #30, get:()Ljava/util/function/Supplier;
        //   377: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   380: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundExplodePacket;.class
        //   383: invokedynamic   BootstrapMethod #31, get:()Ljava/util/function/Supplier;
        //   388: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   391: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundForgetLevelChunkPacket;.class
        //   394: invokedynamic   BootstrapMethod #32, get:()Ljava/util/function/Supplier;
        //   399: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   402: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundGameEventPacket;.class
        //   405: invokedynamic   BootstrapMethod #33, get:()Ljava/util/function/Supplier;
        //   410: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   413: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundHorseScreenOpenPacket;.class
        //   416: invokedynamic   BootstrapMethod #34, get:()Ljava/util/function/Supplier;
        //   421: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   424: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundKeepAlivePacket;.class
        //   427: invokedynamic   BootstrapMethod #35, get:()Ljava/util/function/Supplier;
        //   432: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   435: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundLevelChunkPacket;.class
        //   438: invokedynamic   BootstrapMethod #36, get:()Ljava/util/function/Supplier;
        //   443: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   446: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundLevelEventPacket;.class
        //   449: invokedynamic   BootstrapMethod #37, get:()Ljava/util/function/Supplier;
        //   454: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   457: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundLevelParticlesPacket;.class
        //   460: invokedynamic   BootstrapMethod #38, get:()Ljava/util/function/Supplier;
        //   465: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   468: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundLightUpdatePacket;.class
        //   471: invokedynamic   BootstrapMethod #39, get:()Ljava/util/function/Supplier;
        //   476: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   479: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundLoginPacket;.class
        //   482: invokedynamic   BootstrapMethod #40, get:()Ljava/util/function/Supplier;
        //   487: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   490: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundMapItemDataPacket;.class
        //   493: invokedynamic   BootstrapMethod #41, get:()Ljava/util/function/Supplier;
        //   498: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   501: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundMerchantOffersPacket;.class
        //   504: invokedynamic   BootstrapMethod #42, get:()Ljava/util/function/Supplier;
        //   509: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   512: ldc             Lnet/minecraft/network/protocol/game/ClientboundMoveEntityPacket$Pos;.class
        //   514: invokedynamic   BootstrapMethod #43, get:()Ljava/util/function/Supplier;
        //   519: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   522: ldc             Lnet/minecraft/network/protocol/game/ClientboundMoveEntityPacket$PosRot;.class
        //   524: invokedynamic   BootstrapMethod #44, get:()Ljava/util/function/Supplier;
        //   529: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   532: ldc             Lnet/minecraft/network/protocol/game/ClientboundMoveEntityPacket$Rot;.class
        //   534: invokedynamic   BootstrapMethod #45, get:()Ljava/util/function/Supplier;
        //   539: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   542: ldc             Lnet/minecraft/network/protocol/game/ClientboundMoveEntityPacket;.class
        //   544: invokedynamic   BootstrapMethod #46, get:()Ljava/util/function/Supplier;
        //   549: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   552: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundMoveVehiclePacket;.class
        //   555: invokedynamic   BootstrapMethod #47, get:()Ljava/util/function/Supplier;
        //   560: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   563: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundOpenBookPacket;.class
        //   566: invokedynamic   BootstrapMethod #48, get:()Ljava/util/function/Supplier;
        //   571: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   574: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundOpenScreenPacket;.class
        //   577: invokedynamic   BootstrapMethod #49, get:()Ljava/util/function/Supplier;
        //   582: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   585: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundOpenSignEditorPacket;.class
        //   588: invokedynamic   BootstrapMethod #50, get:()Ljava/util/function/Supplier;
        //   593: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   596: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundPlaceGhostRecipePacket;.class
        //   599: invokedynamic   BootstrapMethod #51, get:()Ljava/util/function/Supplier;
        //   604: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   607: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundPlayerAbilitiesPacket;.class
        //   610: invokedynamic   BootstrapMethod #52, get:()Ljava/util/function/Supplier;
        //   615: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   618: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundPlayerCombatPacket;.class
        //   621: invokedynamic   BootstrapMethod #53, get:()Ljava/util/function/Supplier;
        //   626: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   629: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundPlayerInfoPacket;.class
        //   632: invokedynamic   BootstrapMethod #54, get:()Ljava/util/function/Supplier;
        //   637: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   640: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundPlayerLookAtPacket;.class
        //   643: invokedynamic   BootstrapMethod #55, get:()Ljava/util/function/Supplier;
        //   648: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   651: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundPlayerPositionPacket;.class
        //   654: invokedynamic   BootstrapMethod #56, get:()Ljava/util/function/Supplier;
        //   659: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   662: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundRecipePacket;.class
        //   665: invokedynamic   BootstrapMethod #57, get:()Ljava/util/function/Supplier;
        //   670: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   673: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundRemoveEntitiesPacket;.class
        //   676: invokedynamic   BootstrapMethod #58, get:()Ljava/util/function/Supplier;
        //   681: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   684: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundRemoveMobEffectPacket;.class
        //   687: invokedynamic   BootstrapMethod #59, get:()Ljava/util/function/Supplier;
        //   692: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   695: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundResourcePackPacket;.class
        //   698: invokedynamic   BootstrapMethod #60, get:()Ljava/util/function/Supplier;
        //   703: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   706: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundRespawnPacket;.class
        //   709: invokedynamic   BootstrapMethod #61, get:()Ljava/util/function/Supplier;
        //   714: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   717: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundRotateHeadPacket;.class
        //   720: invokedynamic   BootstrapMethod #62, get:()Ljava/util/function/Supplier;
        //   725: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   728: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSelectAdvancementsTabPacket;.class
        //   731: invokedynamic   BootstrapMethod #63, get:()Ljava/util/function/Supplier;
        //   736: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   739: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetBorderPacket;.class
        //   742: invokedynamic   BootstrapMethod #64, get:()Ljava/util/function/Supplier;
        //   747: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   750: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetCameraPacket;.class
        //   753: invokedynamic   BootstrapMethod #65, get:()Ljava/util/function/Supplier;
        //   758: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   761: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetCarriedItemPacket;.class
        //   764: invokedynamic   BootstrapMethod #66, get:()Ljava/util/function/Supplier;
        //   769: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   772: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetChunkCacheCenterPacket;.class
        //   775: invokedynamic   BootstrapMethod #67, get:()Ljava/util/function/Supplier;
        //   780: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   783: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetChunkCacheRadiusPacket;.class
        //   786: invokedynamic   BootstrapMethod #68, get:()Ljava/util/function/Supplier;
        //   791: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   794: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetDisplayObjectivePacket;.class
        //   797: invokedynamic   BootstrapMethod #69, get:()Ljava/util/function/Supplier;
        //   802: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   805: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetEntityDataPacket;.class
        //   808: invokedynamic   BootstrapMethod #70, get:()Ljava/util/function/Supplier;
        //   813: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   816: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetEntityLinkPacket;.class
        //   819: invokedynamic   BootstrapMethod #71, get:()Ljava/util/function/Supplier;
        //   824: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   827: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetEntityMotionPacket;.class
        //   830: invokedynamic   BootstrapMethod #72, get:()Ljava/util/function/Supplier;
        //   835: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   838: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetEquippedItemPacket;.class
        //   841: invokedynamic   BootstrapMethod #73, get:()Ljava/util/function/Supplier;
        //   846: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   849: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetExperiencePacket;.class
        //   852: invokedynamic   BootstrapMethod #74, get:()Ljava/util/function/Supplier;
        //   857: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   860: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetHealthPacket;.class
        //   863: invokedynamic   BootstrapMethod #75, get:()Ljava/util/function/Supplier;
        //   868: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   871: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetObjectivePacket;.class
        //   874: invokedynamic   BootstrapMethod #76, get:()Ljava/util/function/Supplier;
        //   879: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   882: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetPassengersPacket;.class
        //   885: invokedynamic   BootstrapMethod #77, get:()Ljava/util/function/Supplier;
        //   890: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   893: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetPlayerTeamPacket;.class
        //   896: invokedynamic   BootstrapMethod #78, get:()Ljava/util/function/Supplier;
        //   901: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   904: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetScorePacket;.class
        //   907: invokedynamic   BootstrapMethod #79, get:()Ljava/util/function/Supplier;
        //   912: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   915: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetSpawnPositionPacket;.class
        //   918: invokedynamic   BootstrapMethod #80, get:()Ljava/util/function/Supplier;
        //   923: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   926: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetTimePacket;.class
        //   929: invokedynamic   BootstrapMethod #81, get:()Ljava/util/function/Supplier;
        //   934: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   937: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSetTitlesPacket;.class
        //   940: invokedynamic   BootstrapMethod #82, get:()Ljava/util/function/Supplier;
        //   945: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   948: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSoundEntityPacket;.class
        //   951: invokedynamic   BootstrapMethod #83, get:()Ljava/util/function/Supplier;
        //   956: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   959: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundSoundPacket;.class
        //   962: invokedynamic   BootstrapMethod #84, get:()Ljava/util/function/Supplier;
        //   967: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   970: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundStopSoundPacket;.class
        //   973: invokedynamic   BootstrapMethod #85, get:()Ljava/util/function/Supplier;
        //   978: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   981: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundTabListPacket;.class
        //   984: invokedynamic   BootstrapMethod #86, get:()Ljava/util/function/Supplier;
        //   989: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //   992: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundTagQueryPacket;.class
        //   995: invokedynamic   BootstrapMethod #87, get:()Ljava/util/function/Supplier;
        //  1000: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1003: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundTakeItemEntityPacket;.class
        //  1006: invokedynamic   BootstrapMethod #88, get:()Ljava/util/function/Supplier;
        //  1011: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1014: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundTeleportEntityPacket;.class
        //  1017: invokedynamic   BootstrapMethod #89, get:()Ljava/util/function/Supplier;
        //  1022: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1025: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundUpdateAdvancementsPacket;.class
        //  1028: invokedynamic   BootstrapMethod #90, get:()Ljava/util/function/Supplier;
        //  1033: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1036: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundUpdateAttributesPacket;.class
        //  1039: invokedynamic   BootstrapMethod #91, get:()Ljava/util/function/Supplier;
        //  1044: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1047: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundUpdateMobEffectPacket;.class
        //  1050: invokedynamic   BootstrapMethod #92, get:()Ljava/util/function/Supplier;
        //  1055: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1058: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundUpdateRecipesPacket;.class
        //  1061: invokedynamic   BootstrapMethod #93, get:()Ljava/util/function/Supplier;
        //  1066: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1069: ldc_w           Lnet/minecraft/network/protocol/game/ClientboundUpdateTagsPacket;.class
        //  1072: invokedynamic   BootstrapMethod #94, get:()Ljava/util/function/Supplier;
        //  1077: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1080: invokevirtual   net/minecraft/network/ConnectionProtocol$ProtocolBuilder.addFlow:(Lnet/minecraft/network/protocol/PacketFlow;Lnet/minecraft/network/ConnectionProtocol$PacketSet;)Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //  1083: getstatic       net/minecraft/network/protocol/PacketFlow.SERVERBOUND:Lnet/minecraft/network/protocol/PacketFlow;
        //  1086: new             Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1089: dup            
        //  1090: aconst_null    
        //  1091: invokespecial   net/minecraft/network/ConnectionProtocol$PacketSet.<init>:(Lnet/minecraft/network/ConnectionProtocol$1;)V
        //  1094: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundAcceptTeleportationPacket;.class
        //  1097: invokedynamic   BootstrapMethod #95, get:()Ljava/util/function/Supplier;
        //  1102: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1105: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundBlockEntityTagQuery;.class
        //  1108: invokedynamic   BootstrapMethod #96, get:()Ljava/util/function/Supplier;
        //  1113: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1116: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundChangeDifficultyPacket;.class
        //  1119: invokedynamic   BootstrapMethod #97, get:()Ljava/util/function/Supplier;
        //  1124: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1127: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundChatPacket;.class
        //  1130: invokedynamic   BootstrapMethod #98, get:()Ljava/util/function/Supplier;
        //  1135: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1138: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundClientCommandPacket;.class
        //  1141: invokedynamic   BootstrapMethod #99, get:()Ljava/util/function/Supplier;
        //  1146: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1149: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundClientInformationPacket;.class
        //  1152: invokedynamic   BootstrapMethod #100, get:()Ljava/util/function/Supplier;
        //  1157: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1160: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundCommandSuggestionPacket;.class
        //  1163: invokedynamic   BootstrapMethod #101, get:()Ljava/util/function/Supplier;
        //  1168: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1171: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundContainerAckPacket;.class
        //  1174: invokedynamic   BootstrapMethod #102, get:()Ljava/util/function/Supplier;
        //  1179: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1182: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundContainerButtonClickPacket;.class
        //  1185: invokedynamic   BootstrapMethod #103, get:()Ljava/util/function/Supplier;
        //  1190: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1193: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundContainerClickPacket;.class
        //  1196: invokedynamic   BootstrapMethod #104, get:()Ljava/util/function/Supplier;
        //  1201: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1204: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundContainerClosePacket;.class
        //  1207: invokedynamic   BootstrapMethod #105, get:()Ljava/util/function/Supplier;
        //  1212: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1215: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundCustomPayloadPacket;.class
        //  1218: invokedynamic   BootstrapMethod #106, get:()Ljava/util/function/Supplier;
        //  1223: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1226: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundEditBookPacket;.class
        //  1229: invokedynamic   BootstrapMethod #107, get:()Ljava/util/function/Supplier;
        //  1234: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1237: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundEntityTagQuery;.class
        //  1240: invokedynamic   BootstrapMethod #108, get:()Ljava/util/function/Supplier;
        //  1245: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1248: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundInteractPacket;.class
        //  1251: invokedynamic   BootstrapMethod #109, get:()Ljava/util/function/Supplier;
        //  1256: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1259: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundKeepAlivePacket;.class
        //  1262: invokedynamic   BootstrapMethod #110, get:()Ljava/util/function/Supplier;
        //  1267: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1270: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundLockDifficultyPacket;.class
        //  1273: invokedynamic   BootstrapMethod #111, get:()Ljava/util/function/Supplier;
        //  1278: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1281: ldc             Lnet/minecraft/network/protocol/game/ServerboundMovePlayerPacket$Pos;.class
        //  1283: invokedynamic   BootstrapMethod #112, get:()Ljava/util/function/Supplier;
        //  1288: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1291: ldc             Lnet/minecraft/network/protocol/game/ServerboundMovePlayerPacket$PosRot;.class
        //  1293: invokedynamic   BootstrapMethod #113, get:()Ljava/util/function/Supplier;
        //  1298: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1301: ldc             Lnet/minecraft/network/protocol/game/ServerboundMovePlayerPacket$Rot;.class
        //  1303: invokedynamic   BootstrapMethod #114, get:()Ljava/util/function/Supplier;
        //  1308: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1311: ldc             Lnet/minecraft/network/protocol/game/ServerboundMovePlayerPacket;.class
        //  1313: invokedynamic   BootstrapMethod #115, get:()Ljava/util/function/Supplier;
        //  1318: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1321: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundMoveVehiclePacket;.class
        //  1324: invokedynamic   BootstrapMethod #116, get:()Ljava/util/function/Supplier;
        //  1329: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1332: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundPaddleBoatPacket;.class
        //  1335: invokedynamic   BootstrapMethod #117, get:()Ljava/util/function/Supplier;
        //  1340: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1343: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundPickItemPacket;.class
        //  1346: invokedynamic   BootstrapMethod #118, get:()Ljava/util/function/Supplier;
        //  1351: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1354: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundPlaceRecipePacket;.class
        //  1357: invokedynamic   BootstrapMethod #119, get:()Ljava/util/function/Supplier;
        //  1362: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1365: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundPlayerAbilitiesPacket;.class
        //  1368: invokedynamic   BootstrapMethod #120, get:()Ljava/util/function/Supplier;
        //  1373: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1376: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundPlayerActionPacket;.class
        //  1379: invokedynamic   BootstrapMethod #121, get:()Ljava/util/function/Supplier;
        //  1384: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1387: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundPlayerCommandPacket;.class
        //  1390: invokedynamic   BootstrapMethod #122, get:()Ljava/util/function/Supplier;
        //  1395: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1398: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundPlayerInputPacket;.class
        //  1401: invokedynamic   BootstrapMethod #123, get:()Ljava/util/function/Supplier;
        //  1406: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1409: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundRecipeBookUpdatePacket;.class
        //  1412: invokedynamic   BootstrapMethod #124, get:()Ljava/util/function/Supplier;
        //  1417: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1420: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundRenameItemPacket;.class
        //  1423: invokedynamic   BootstrapMethod #125, get:()Ljava/util/function/Supplier;
        //  1428: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1431: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundResourcePackPacket;.class
        //  1434: invokedynamic   BootstrapMethod #126, get:()Ljava/util/function/Supplier;
        //  1439: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1442: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSeenAdvancementsPacket;.class
        //  1445: invokedynamic   BootstrapMethod #127, get:()Ljava/util/function/Supplier;
        //  1450: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1453: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSelectTradePacket;.class
        //  1456: invokedynamic   BootstrapMethod #128, get:()Ljava/util/function/Supplier;
        //  1461: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1464: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSetBeaconPacket;.class
        //  1467: invokedynamic   BootstrapMethod #129, get:()Ljava/util/function/Supplier;
        //  1472: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1475: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSetCarriedItemPacket;.class
        //  1478: invokedynamic   BootstrapMethod #130, get:()Ljava/util/function/Supplier;
        //  1483: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1486: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSetCommandBlockPacket;.class
        //  1489: invokedynamic   BootstrapMethod #131, get:()Ljava/util/function/Supplier;
        //  1494: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1497: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSetCommandMinecartPacket;.class
        //  1500: invokedynamic   BootstrapMethod #132, get:()Ljava/util/function/Supplier;
        //  1505: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1508: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSetCreativeModeSlotPacket;.class
        //  1511: invokedynamic   BootstrapMethod #133, get:()Ljava/util/function/Supplier;
        //  1516: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1519: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSetJigsawBlockPacket;.class
        //  1522: invokedynamic   BootstrapMethod #134, get:()Ljava/util/function/Supplier;
        //  1527: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1530: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSetStructureBlockPacket;.class
        //  1533: invokedynamic   BootstrapMethod #135, get:()Ljava/util/function/Supplier;
        //  1538: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1541: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSignUpdatePacket;.class
        //  1544: invokedynamic   BootstrapMethod #136, get:()Ljava/util/function/Supplier;
        //  1549: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1552: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundSwingPacket;.class
        //  1555: invokedynamic   BootstrapMethod #137, get:()Ljava/util/function/Supplier;
        //  1560: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1563: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundTeleportToEntityPacket;.class
        //  1566: invokedynamic   BootstrapMethod #138, get:()Ljava/util/function/Supplier;
        //  1571: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1574: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundUseItemOnPacket;.class
        //  1577: invokedynamic   BootstrapMethod #139, get:()Ljava/util/function/Supplier;
        //  1582: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1585: ldc_w           Lnet/minecraft/network/protocol/game/ServerboundUseItemPacket;.class
        //  1588: invokedynamic   BootstrapMethod #140, get:()Ljava/util/function/Supplier;
        //  1593: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1596: invokevirtual   net/minecraft/network/ConnectionProtocol$ProtocolBuilder.addFlow:(Lnet/minecraft/network/protocol/PacketFlow;Lnet/minecraft/network/ConnectionProtocol$PacketSet;)Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //  1599: invokespecial   net/minecraft/network/ConnectionProtocol.<init>:(Ljava/lang/String;IILnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;)V
        //  1602: putstatic       net/minecraft/network/ConnectionProtocol.PLAY:Lnet/minecraft/network/ConnectionProtocol;
        //  1605: new             Lnet/minecraft/network/ConnectionProtocol;
        //  1608: dup            
        //  1609: ldc_w           "STATUS"
        //  1612: iconst_2       
        //  1613: iconst_1       
        //  1614: invokestatic    net/minecraft/network/ConnectionProtocol.protocol:()Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //  1617: getstatic       net/minecraft/network/protocol/PacketFlow.SERVERBOUND:Lnet/minecraft/network/protocol/PacketFlow;
        //  1620: new             Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1623: dup            
        //  1624: aconst_null    
        //  1625: invokespecial   net/minecraft/network/ConnectionProtocol$PacketSet.<init>:(Lnet/minecraft/network/ConnectionProtocol$1;)V
        //  1628: ldc_w           Lnet/minecraft/network/protocol/status/ServerboundStatusRequestPacket;.class
        //  1631: invokedynamic   BootstrapMethod #141, get:()Ljava/util/function/Supplier;
        //  1636: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1639: ldc_w           Lnet/minecraft/network/protocol/status/ServerboundPingRequestPacket;.class
        //  1642: invokedynamic   BootstrapMethod #142, get:()Ljava/util/function/Supplier;
        //  1647: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1650: invokevirtual   net/minecraft/network/ConnectionProtocol$ProtocolBuilder.addFlow:(Lnet/minecraft/network/protocol/PacketFlow;Lnet/minecraft/network/ConnectionProtocol$PacketSet;)Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //  1653: getstatic       net/minecraft/network/protocol/PacketFlow.CLIENTBOUND:Lnet/minecraft/network/protocol/PacketFlow;
        //  1656: new             Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1659: dup            
        //  1660: aconst_null    
        //  1661: invokespecial   net/minecraft/network/ConnectionProtocol$PacketSet.<init>:(Lnet/minecraft/network/ConnectionProtocol$1;)V
        //  1664: ldc_w           Lnet/minecraft/network/protocol/status/ClientboundStatusResponsePacket;.class
        //  1667: invokedynamic   BootstrapMethod #143, get:()Ljava/util/function/Supplier;
        //  1672: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1675: ldc_w           Lnet/minecraft/network/protocol/status/ClientboundPongResponsePacket;.class
        //  1678: invokedynamic   BootstrapMethod #144, get:()Ljava/util/function/Supplier;
        //  1683: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1686: invokevirtual   net/minecraft/network/ConnectionProtocol$ProtocolBuilder.addFlow:(Lnet/minecraft/network/protocol/PacketFlow;Lnet/minecraft/network/ConnectionProtocol$PacketSet;)Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //  1689: invokespecial   net/minecraft/network/ConnectionProtocol.<init>:(Ljava/lang/String;IILnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;)V
        //  1692: putstatic       net/minecraft/network/ConnectionProtocol.STATUS:Lnet/minecraft/network/ConnectionProtocol;
        //  1695: new             Lnet/minecraft/network/ConnectionProtocol;
        //  1698: dup            
        //  1699: ldc_w           "LOGIN"
        //  1702: iconst_3       
        //  1703: iconst_2       
        //  1704: invokestatic    net/minecraft/network/ConnectionProtocol.protocol:()Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //  1707: getstatic       net/minecraft/network/protocol/PacketFlow.CLIENTBOUND:Lnet/minecraft/network/protocol/PacketFlow;
        //  1710: new             Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1713: dup            
        //  1714: aconst_null    
        //  1715: invokespecial   net/minecraft/network/ConnectionProtocol$PacketSet.<init>:(Lnet/minecraft/network/ConnectionProtocol$1;)V
        //  1718: ldc_w           Lnet/minecraft/network/protocol/login/ClientboundLoginDisconnectPacket;.class
        //  1721: invokedynamic   BootstrapMethod #145, get:()Ljava/util/function/Supplier;
        //  1726: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1729: ldc_w           Lnet/minecraft/network/protocol/login/ClientboundHelloPacket;.class
        //  1732: invokedynamic   BootstrapMethod #146, get:()Ljava/util/function/Supplier;
        //  1737: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1740: ldc_w           Lnet/minecraft/network/protocol/login/ClientboundGameProfilePacket;.class
        //  1743: invokedynamic   BootstrapMethod #147, get:()Ljava/util/function/Supplier;
        //  1748: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1751: ldc_w           Lnet/minecraft/network/protocol/login/ClientboundLoginCompressionPacket;.class
        //  1754: invokedynamic   BootstrapMethod #148, get:()Ljava/util/function/Supplier;
        //  1759: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1762: ldc_w           Lnet/minecraft/network/protocol/login/ClientboundCustomQueryPacket;.class
        //  1765: invokedynamic   BootstrapMethod #149, get:()Ljava/util/function/Supplier;
        //  1770: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1773: invokevirtual   net/minecraft/network/ConnectionProtocol$ProtocolBuilder.addFlow:(Lnet/minecraft/network/protocol/PacketFlow;Lnet/minecraft/network/ConnectionProtocol$PacketSet;)Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //  1776: getstatic       net/minecraft/network/protocol/PacketFlow.SERVERBOUND:Lnet/minecraft/network/protocol/PacketFlow;
        //  1779: new             Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1782: dup            
        //  1783: aconst_null    
        //  1784: invokespecial   net/minecraft/network/ConnectionProtocol$PacketSet.<init>:(Lnet/minecraft/network/ConnectionProtocol$1;)V
        //  1787: ldc_w           Lnet/minecraft/network/protocol/login/ServerboundHelloPacket;.class
        //  1790: invokedynamic   BootstrapMethod #150, get:()Ljava/util/function/Supplier;
        //  1795: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1798: ldc_w           Lnet/minecraft/network/protocol/login/ServerboundKeyPacket;.class
        //  1801: invokedynamic   BootstrapMethod #151, get:()Ljava/util/function/Supplier;
        //  1806: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1809: ldc_w           Lnet/minecraft/network/protocol/login/ServerboundCustomQueryPacket;.class
        //  1812: invokedynamic   BootstrapMethod #152, get:()Ljava/util/function/Supplier;
        //  1817: invokevirtual   net/minecraft/network/ConnectionProtocol$PacketSet.addPacket:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lnet/minecraft/network/ConnectionProtocol$PacketSet;
        //  1820: invokevirtual   net/minecraft/network/ConnectionProtocol$ProtocolBuilder.addFlow:(Lnet/minecraft/network/protocol/PacketFlow;Lnet/minecraft/network/ConnectionProtocol$PacketSet;)Lnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;
        //  1823: invokespecial   net/minecraft/network/ConnectionProtocol.<init>:(Ljava/lang/String;IILnet/minecraft/network/ConnectionProtocol$ProtocolBuilder;)V
        //  1826: putstatic       net/minecraft/network/ConnectionProtocol.LOGIN:Lnet/minecraft/network/ConnectionProtocol;
        //  1829: iconst_4       
        //  1830: anewarray       Lnet/minecraft/network/ConnectionProtocol;
        //  1833: dup            
        //  1834: iconst_0       
        //  1835: getstatic       net/minecraft/network/ConnectionProtocol.HANDSHAKING:Lnet/minecraft/network/ConnectionProtocol;
        //  1838: aastore        
        //  1839: dup            
        //  1840: iconst_1       
        //  1841: getstatic       net/minecraft/network/ConnectionProtocol.PLAY:Lnet/minecraft/network/ConnectionProtocol;
        //  1844: aastore        
        //  1845: dup            
        //  1846: iconst_2       
        //  1847: getstatic       net/minecraft/network/ConnectionProtocol.STATUS:Lnet/minecraft/network/ConnectionProtocol;
        //  1850: aastore        
        //  1851: dup            
        //  1852: iconst_3       
        //  1853: getstatic       net/minecraft/network/ConnectionProtocol.LOGIN:Lnet/minecraft/network/ConnectionProtocol;
        //  1856: aastore        
        //  1857: putstatic       net/minecraft/network/ConnectionProtocol.$VALUES:[Lnet/minecraft/network/ConnectionProtocol;
        //  1860: iconst_4       
        //  1861: anewarray       Lnet/minecraft/network/ConnectionProtocol;
        //  1864: putstatic       net/minecraft/network/ConnectionProtocol.LOOKUP:[Lnet/minecraft/network/ConnectionProtocol;
        //  1867: invokestatic    com/google/common/collect/Maps.newHashMap:()Ljava/util/HashMap;
        //  1870: putstatic       net/minecraft/network/ConnectionProtocol.PROTOCOL_BY_PACKET:Ljava/util/Map;
        //  1873: invokestatic    net/minecraft/network/ConnectionProtocol.values:()[Lnet/minecraft/network/ConnectionProtocol;
        //  1876: astore_0       
        //  1877: aload_0        
        //  1878: arraylength    
        //  1879: istore_1       
        //  1880: iconst_0       
        //  1881: istore_2       
        //  1882: iload_2        
        //  1883: iload_1        
        //  1884: if_icmpge       1971
        //  1887: aload_0        
        //  1888: iload_2        
        //  1889: aaload         
        //  1890: astore_3       
        //  1891: aload_3        
        //  1892: invokevirtual   net/minecraft/network/ConnectionProtocol.getId:()I
        //  1895: istore          integer5
        //  1897: iload           integer5
        //  1899: iconst_m1      
        //  1900: if_icmplt       1909
        //  1903: iload           integer5
        //  1905: iconst_2       
        //  1906: if_icmple       1941
        //  1909: new             Ljava/lang/Error;
        //  1912: dup            
        //  1913: new             Ljava/lang/StringBuilder;
        //  1916: dup            
        //  1917: invokespecial   java/lang/StringBuilder.<init>:()V
        //  1920: ldc_w           "Invalid protocol ID "
        //  1923: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        //  1926: iload           integer5
        //  1928: invokestatic    java/lang/Integer.toString:(I)Ljava/lang/String;
        //  1931: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        //  1934: invokevirtual   java/lang/StringBuilder.toString:()Ljava/lang/String;
        //  1937: invokespecial   java/lang/Error.<init>:(Ljava/lang/String;)V
        //  1940: athrow         
        //  1941: getstatic       net/minecraft/network/ConnectionProtocol.LOOKUP:[Lnet/minecraft/network/ConnectionProtocol;
        //  1944: iload           integer5
        //  1946: iconst_m1      
        //  1947: isub           
        //  1948: aload_3        
        //  1949: aastore        
        //  1950: aload_3        
        //  1951: getfield        net/minecraft/network/ConnectionProtocol.flows:Ljava/util/Map;
        //  1954: aload_3        
        //  1955: invokedynamic   BootstrapMethod #153, accept:(Lnet/minecraft/network/ConnectionProtocol;)Ljava/util/function/BiConsumer;
        //  1960: invokeinterface java/util/Map.forEach:(Ljava/util/function/BiConsumer;)V
        //  1965: iinc            2, 1
        //  1968: goto            1882
        //  1971: return         
        //    StackMapTable: 00 04 FE 07 5A 07 00 3A 01 01 FF 00 1A 00 05 00 00 00 00 01 00 00 FF 00 1F 00 05 07 00 3A 01 01 07 00 02 01 00 00 FF 00 1D 00 00 00 00
        // 
        // The error that occurred was:
        // 
        // java.lang.IllegalStateException: Could not infer any expression.
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:374)
        //     at com.strobel.decompiler.ast.TypeAnalysis.run(TypeAnalysis.java:96)
        //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:344)
        //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:782)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:675)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:552)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:519)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:161)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:150)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:125)
        //     at cuchaz.enigma.SourceProvider.getSources(SourceProvider.java:85)
        //     at cuchaz.enigma.EnigmaProject$JarExport.decompileClass(EnigmaProject.java:241)
        //     at cuchaz.enigma.EnigmaProject$JarExport.lambda$decompile$1(EnigmaProject.java:230)
        //     at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        //     at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
        //     at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        //     at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        //     at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
        //     at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
        //     at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
        //     at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
        //     at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        //     at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
        //     at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:736)
        //     at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
        //     at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
        //     at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
        //     at cuchaz.enigma.EnigmaProject$JarExport.decompile(EnigmaProject.java:233)
        //     at cuchaz.enigma.command.DecompileCommand.run(DecompileCommand.java:35)
        //     at cuchaz.enigma.CommandMain.main(CommandMain.java:43)
        // 
        throw new IllegalStateException("An error occurred while decompiling this method.");
    }
    
    static class PacketSet<T extends PacketListener> {
        private final Object2IntMap<Class<? extends Packet<T>>> classToId;
        private final List<Supplier<? extends Packet<T>>> idToConstructor;
        
        private PacketSet() {
            this.classToId = Util.make((Object2IntMap)new Object2IntOpenHashMap(), object2IntOpenHashMap -> object2IntOpenHashMap.defaultReturnValue(-1));
            this.idToConstructor = Lists.newArrayList();
        }
        
        public <P extends Packet<T>> PacketSet<T> addPacket(final Class<P> class1, final Supplier<P> supplier) {
            final int integer4 = this.idToConstructor.size();
            final int integer5 = this.classToId.put(class1, integer4);
            if (integer5 != -1) {
                final String string6 = "Packet " + class1 + " is already registered to ID " + integer5;
                LogManager.getLogger().fatal(string6);
                throw new IllegalArgumentException(string6);
            }
            this.idToConstructor.add(supplier);
            return this;
        }
        
        @Nullable
        public Integer getId(final Class<?> class1) {
            final int integer3 = this.classToId.getInt(class1);
            return (integer3 == -1) ? null : Integer.valueOf(integer3);
        }
        
        @Nullable
        public Packet<?> createPacket(final int integer) {
            final Supplier<? extends Packet<T>> supplier3 = this.idToConstructor.get(integer);
            return ((supplier3 != null) ? ((Packet)supplier3.get()) : null);
        }
        
        public Iterable<Class<? extends Packet<?>>> getAllPackets() {
            return Iterables.<Class<? extends Packet<?>>>unmodifiableIterable(this.classToId.keySet());
        }
    }
    
    static class ProtocolBuilder {
        private final Map<PacketFlow, PacketSet<?>> flows;
        
        private ProtocolBuilder() {
            this.flows = Maps.newEnumMap(PacketFlow.class);
        }
        
        public <T extends PacketListener> ProtocolBuilder addFlow(final PacketFlow lu, final PacketSet<T> a) {
            this.flows.put(lu, a);
            return this;
        }
    }
}
