All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.minecraft.server.EnumProtocol Maven / Gradle / Ivy

There is a newer version: 2.4.0
Show newest version
package net.minecraft.server;

import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.Maps;
import org.apache.logging.log4j.LogManager;

import java.util.Iterator;
import java.util.Map;

public enum EnumProtocol {

  HANDSHAKING(-1) {
      {
      this.a(EnumProtocolDirection.SERVERBOUND, PacketHandshakingInSetProtocol.class);
    }
  }, PLAY(0) {
        {
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutKeepAlive.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutLogin.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutChat.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateTime.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityEquipment.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnPosition.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateHealth.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutRespawn.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutPosition.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutHeldItemSlot.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutBed.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutAnimation.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutNamedEntitySpawn.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCollect.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntity.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntityLiving.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntityPainting.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntityExperienceOrb.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityVelocity.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityDestroy.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntity.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntity.PacketPlayOutRelEntityMove.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntity.PacketPlayOutEntityLook.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityTeleport.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityHeadRotation.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityStatus.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutAttachEntity.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityMetadata.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityEffect.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutRemoveEntityEffect.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutExperience.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateAttributes.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutMapChunk.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutMultiBlockChange.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutBlockChange.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutBlockAction.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutBlockBreakAnimation.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutMapChunkBulk.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutExplosion.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWorldEvent.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutNamedSoundEffect.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWorldParticles.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutGameStateChange.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntityWeather.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutOpenWindow.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCloseWindow.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSetSlot.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWindowItems.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWindowData.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutTransaction.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateSign.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutMap.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutTileEntityData.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutOpenSignEditor.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutStatistic.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutPlayerInfo.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutAbilities.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutTabComplete.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutScoreboardObjective.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutScoreboardScore.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutScoreboardDisplayObjective.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutScoreboardTeam.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCustomPayload.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutKickDisconnect.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutServerDifficulty.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCombatEvent.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCamera.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWorldBorder.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutTitle.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSetCompression.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutPlayerListHeaderFooter.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutResourcePackSend.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateEntityNBT.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInKeepAlive.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInChat.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInUseEntity.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInFlying.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInFlying.PacketPlayInPosition.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInFlying.PacketPlayInLook.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInFlying.PacketPlayInPositionLook.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInBlockDig.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInBlockPlace.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInHeldItemSlot.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInArmAnimation.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInEntityAction.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInSteerVehicle.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInCloseWindow.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInWindowClick.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInTransaction.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInSetCreativeSlot.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInEnchantItem.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInUpdateSign.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInAbilities.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInTabComplete.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInSettings.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInClientCommand.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInCustomPayload.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInSpectate.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInResourcePackStatus.class);
    }
  }, STATUS(1) {
        {
      this.a(EnumProtocolDirection.SERVERBOUND, PacketStatusInStart.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketStatusOutServerInfo.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketStatusInPing.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketStatusOutPong.class);
    }
  }, LOGIN(2) {
        {
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketLoginOutDisconnect.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketLoginOutEncryptionBegin.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketLoginOutSuccess.class);
      this.a(EnumProtocolDirection.CLIENTBOUND, PacketLoginOutSetCompression.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketLoginInStart.class);
      this.a(EnumProtocolDirection.SERVERBOUND, PacketLoginInEncryptionBegin.class);
    }
  };

  private static final Map, EnumProtocol> h = Maps.newHashMap();
  private static final int e = -1;
  private static final int f = 2;
  private static final EnumProtocol[] g = new EnumProtocol[EnumProtocol.f - EnumProtocol.e + 1];

  static {
    EnumProtocol[] aenumprotocol = values();
    int i = aenumprotocol.length;

    for (EnumProtocol enumprotocol : aenumprotocol) {
      int k = enumprotocol.a();

      if (k < EnumProtocol.e || k > EnumProtocol.f) {
        throw new Error("Invalid protocol ID " + k);
      }

      EnumProtocol.g[k - EnumProtocol.e] = enumprotocol;

      for (EnumProtocolDirection enumprotocoldirection : enumprotocol.j.keySet()) {
        Class oclass;

        for (Iterator iterator1 = ((BiMap) enumprotocol.j.get(enumprotocoldirection)).values().iterator(); iterator1.hasNext(); EnumProtocol.h.put(oclass, enumprotocol)) {
          oclass = (Class) iterator1.next();
          if (EnumProtocol.h.containsKey(oclass) && EnumProtocol.h.get(oclass) != enumprotocol) {
            throw new Error("Packet " + oclass + " is already assigned to protocol " + EnumProtocol.h.get(oclass) + " - can't reassign to " + enumprotocol);
          }

          try {
            oclass.newInstance();
          } catch (Throwable throwable) {
            throw new Error("Packet " + oclass + " fails instantiation checks! " + oclass);
          }
        }
      }
    }

  }

  private final int i;
  private final Map>> j;

  EnumProtocol(int i) {
    this.j = Maps.newEnumMap(EnumProtocolDirection.class);
    this.i = i;
  }

  EnumProtocol(int i, Object object) {
    this(i);
  }

  public static EnumProtocol a(int i) {
    return i >= EnumProtocol.e && i <= EnumProtocol.f ? EnumProtocol.g[i - EnumProtocol.e] : null;
  }

  public static EnumProtocol a(Packet packet) {
    return EnumProtocol.h.get(packet.getClass());
  }

  protected EnumProtocol a(EnumProtocolDirection enumprotocoldirection, Class oclass) {
    BiMap> object = this.j.get(enumprotocoldirection);

    if (object == null) {
      object = HashBiMap.create();
      this.j.put(enumprotocoldirection, object);
    }

    if (object.containsValue(oclass)) {
      String s = enumprotocoldirection + " packet " + oclass + " is already known to ID " + ((BiMap) object).inverse().get(oclass);

      LogManager.getLogger().fatal(s);
      throw new IllegalArgumentException(s);
    } else {
      ((BiMap) object).put(object.size(), oclass);
      return this;
    }
  }

  public Integer a(EnumProtocolDirection enumprotocoldirection, Packet packet) {
    return (Integer) ((BiMap) this.j.get(enumprotocoldirection)).inverse().get(packet.getClass());
  }

  public Packet a(EnumProtocolDirection enumprotocoldirection, int i) throws IllegalAccessException, InstantiationException {
    Class oclass = (Class) ((BiMap) this.j.get(enumprotocoldirection)).get(i);

    return oclass == null ? null : (Packet) oclass.newInstance();
  }

  public int a() {
    return this.i;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy