public void run() {
    try {
      String var1 =
          (new BigInteger(
                  CryptManager.func_75895_a(
                      NetLoginHandler.getServerId(this.loginHandler),
                      NetLoginHandler.func_72530_b(this.loginHandler).getKeyPair().getPublic(),
                      NetLoginHandler.func_72525_c(this.loginHandler))))
              .toString(16);
      URL var2 =
          new URL(
              "http://session.minecraft.net/game/checkserver.jsp?user="******"UTF-8")
                  + "&serverId="
                  + URLEncoder.encode(var1, "UTF-8"));
      BufferedReader var3 = new BufferedReader(new InputStreamReader(var2.openStream()));
      String var4 = var3.readLine();
      var3.close();

      if (!"YES".equals(var4)) {
        this.loginHandler.raiseErrorAndDisconnect("Failed to verify username!");
        return;
      }

      NetLoginHandler.func_72531_a(this.loginHandler, true);
    } catch (Exception var5) {
      this.loginHandler.raiseErrorAndDisconnect(
          "Failed to verify username! [internal error " + var5 + "]");
      var5.printStackTrace();
    }
  }
 private void func_74446_k() throws IOException {
   this.field_74474_l.flush();
   this.field_74466_g = true;
   this.field_74474_l =
       new DataOutputStream(
           new BufferedOutputStream(
               CryptManager.func_75897_a(this.field_74488_z, this.field_74479_i.getOutputStream()),
               5120));
 }
 protected boolean func_71197_b() throws IOException {
   this.field_98130_m.func_98233_a("Starting integrated minecraft server version 1.5.2");
   this.func_71229_d(false);
   this.func_71251_e(true);
   this.func_71257_f(true);
   this.func_71188_g(true);
   this.func_71245_h(true);
   this.field_98130_m.func_98233_a("Generating keypair");
   this.func_71253_a(CryptManager.func_75891_b());
   this.func_71247_a(
       this.func_71270_I(),
       this.func_71221_J(),
       this.field_71350_m.func_77160_d(),
       this.field_71350_m.func_77165_h(),
       this.field_71350_m.func_82749_j());
   this.func_71205_p(
       this.func_71214_G() + " - " + this.field_71305_c[0].func_72912_H().func_76065_j());
   return true;
 }
 private void func_74448_j() throws IOException {
   this.field_74465_f = true;
   this.field_74477_k =
       new DataInputStream(
           CryptManager.func_75888_a(this.field_74488_z, this.field_74479_i.getInputStream()));
 }
  /** Initialises the server and starts it. */
  protected boolean startServer() throws IOException {
    DedicatedServerCommandThread var1 = new DedicatedServerCommandThread(this);
    var1.setDaemon(true);
    var1.start();
    this.getLogAgent().func_98233_a("Starting minecraft server version 1.6.2");

    if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) {
      this.getLogAgent()
          .func_98236_b(
              "To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
    }

    this.getLogAgent().func_98233_a("Loading properties");
    this.settings = new PropertyManager(new File("server.properties"), this.getLogAgent());

    if (this.isSinglePlayer()) {
      this.setHostname("127.0.0.1");
    } else {
      this.setOnlineMode(this.settings.getBooleanProperty("online-mode", true));
      this.setHostname(this.settings.getStringProperty("server-ip", ""));
    }

    this.setCanSpawnAnimals(this.settings.getBooleanProperty("spawn-animals", true));
    this.setCanSpawnNPCs(this.settings.getBooleanProperty("spawn-npcs", true));
    this.setAllowPvp(this.settings.getBooleanProperty("pvp", true));
    this.setAllowFlight(this.settings.getBooleanProperty("allow-flight", false));
    this.setTexturePack(this.settings.getStringProperty("texture-pack", ""));
    this.setMOTD(this.settings.getStringProperty("motd", "A Minecraft Server"));
    this.func_104055_i(this.settings.getBooleanProperty("force-gamemode", false));

    if (this.settings.getIntProperty("difficulty", 1) < 0) {
      this.settings.setProperty("difficulty", Integer.valueOf(0));
    } else if (this.settings.getIntProperty("difficulty", 1) > 3) {
      this.settings.setProperty("difficulty", Integer.valueOf(3));
    }

    this.canSpawnStructures = this.settings.getBooleanProperty("generate-structures", true);
    int var2 = this.settings.getIntProperty("gamemode", EnumGameType.SURVIVAL.getID());
    this.gameType = WorldSettings.getGameTypeById(var2);
    this.getLogAgent().func_98233_a("Default game type: " + this.gameType);
    InetAddress var3 = null;

    if (this.getServerHostname().length() > 0) {
      var3 = InetAddress.getByName(this.getServerHostname());
    }

    if (this.getServerPort() < 0) {
      this.setServerPort(this.settings.getIntProperty("server-port", 25565));
    }

    this.getLogAgent().func_98233_a("Generating keypair");
    this.setKeyPair(CryptManager.generateKeyPair());
    this.getLogAgent()
        .func_98233_a(
            "Starting Minecraft server on "
                + (this.getServerHostname().length() == 0 ? "*" : this.getServerHostname())
                + ":"
                + this.getServerPort());

    try {
      this.networkThread = new DedicatedServerListenThread(this, var3, this.getServerPort());
    } catch (IOException var16) {
      this.getLogAgent().func_98236_b("**** FAILED TO BIND TO PORT!");
      this.getLogAgent()
          .logWarningFormatted("The exception was: {0}", new Object[] {var16.toString()});
      this.getLogAgent().func_98236_b("Perhaps a server is already running on that port?");
      return false;
    }

    if (!this.isServerInOnlineMode()) {
      this.getLogAgent().func_98236_b("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
      this.getLogAgent()
          .func_98236_b("The server will make no attempt to authenticate usernames. Beware.");
      this.getLogAgent()
          .func_98236_b(
              "While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
      this.getLogAgent()
          .func_98236_b(
              "To change this, set \"online-mode\" to \"true\" in the server.properties file.");
    }

    this.setConfigurationManager(new DedicatedPlayerList(this));
    long var4 = System.nanoTime();

    if (this.getFolderName() == null) {
      this.setFolderName(this.settings.getStringProperty("level-name", "world"));
    }

    String var6 = this.settings.getStringProperty("level-seed", "");
    String var7 = this.settings.getStringProperty("level-type", "DEFAULT");
    String var8 = this.settings.getStringProperty("generator-settings", "");
    long var9 = (new Random()).nextLong();

    if (var6.length() > 0) {
      try {
        long var11 = Long.parseLong(var6);

        if (var11 != 0L) {
          var9 = var11;
        }
      } catch (NumberFormatException var15) {
        var9 = (long) var6.hashCode();
      }
    }

    WorldType var17 = WorldType.parseWorldType(var7);

    if (var17 == null) {
      var17 = WorldType.DEFAULT;
    }

    this.setBuildLimit(this.settings.getIntProperty("max-build-height", 256));
    this.setBuildLimit((this.getBuildLimit() + 8) / 16 * 16);
    this.setBuildLimit(MathHelper.clamp_int(this.getBuildLimit(), 64, 256));
    this.settings.setProperty("max-build-height", Integer.valueOf(this.getBuildLimit()));
    this.getLogAgent().func_98233_a("Preparing level \"" + this.getFolderName() + "\"");
    this.loadAllWorlds(this.getFolderName(), this.getFolderName(), var9, var17, var8);
    long var12 = System.nanoTime() - var4;
    String var14 = String.format("%.3fs", new Object[] {Double.valueOf((double) var12 / 1.0E9D)});
    this.getLogAgent().func_98233_a("Done (" + var14 + ")! For help, type \"help\" or \"?\"");

    if (this.settings.getBooleanProperty("enable-query", false)) {
      this.getLogAgent().func_98233_a("Starting GS4 status listener");
      this.theRConThreadQuery = new RConThreadQuery(this);
      this.theRConThreadQuery.startThread();
    }

    if (this.settings.getBooleanProperty("enable-rcon", false)) {
      this.getLogAgent().func_98233_a("Starting remote control listener");
      this.theRConThreadMain = new RConThreadMain(this);
      this.theRConThreadMain.startThread();
    }
    // TODO: Hakkit Start.
    HakkitServer hakkitServer = new HakkitServer();
    hakkitServer.setMinecraftServer(this);
    Hakkit.setServer(hakkitServer);
    // TODO: Hakkit End
    return true;
  }