private static MinecraftBotData generateData(
      String server,
      String username,
      String password,
      AuthService service,
      Session session,
      int protocol,
      String loginProxy,
      String proxy) {
    MinecraftBotData.Builder builder = MinecraftBotData.builder();
    if (proxy != null && !proxy.isEmpty()) {
      int port = 80;
      ProxyType type = ProxyType.SOCKS;
      if (proxy.contains(":")) {
        String[] parts = proxy.split(":");
        proxy = parts[0];
        port = Integer.parseInt(parts[1]);
        if (parts.length > 2) type = ProxyType.values()[Integer.parseInt(parts[2]) - 1];
      }
      builder.socksProxy(new ProxyData(proxy, port, type));
    }
    if (loginProxy != null && !loginProxy.isEmpty()) {
      int port = 80;
      if (loginProxy.contains(":")) {
        String[] parts = loginProxy.split(":");
        loginProxy = parts[0];
        port = Integer.parseInt(parts[1]);
      }
      builder.httpProxy(new ProxyData(loginProxy, port, ProxyType.HTTP));
    }
    builder.username(username).authService(service).protocol(protocol);
    if (session != null) builder.session(session);
    else builder.password(password);
    if (server != null && !server.isEmpty()) {
      int port = 25565;
      if (server.contains(":")) {
        String[] parts = server.split(":");
        server = parts[0];
        port = Integer.parseInt(parts[1]);
      }
      builder.server(server).port(port);
    } else throw new IllegalArgumentException("Unknown server!");

    return builder.build();
  }