es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reunir a los jugadores en línea con la misma dirección IP en una lista.

Eres un traductor español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en markdown.

Ejecuto un montón de cuentas alternativas/bot en mi servidor y estoy tratando de hacer un comando que obtenga todas las direcciones IP de (en línea) jugadores y si coincide con la mía, entonces los añade a una lista de jugadores para imprimir a quien haya ejecutado el comando. Esto es lo que tengo hasta ahora.

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  if (label.equalsIgnoreCase("bots")) {
    if (!sender.hasPermission("lbp.bots")) {
      sender.sendMessage(ChatColor.RED + "No puedes ejecutar este comando.");
      return true;
    }
    if (args.length == 0) {
      //Player p = (Player) sender;
      List < Player > onlineBots = new ArrayList < Player > ();
      for (Player players: Bukkit.getOnlinePlayers()) {
        if (players.getAddress().getAddress().getHostAddress() == "dirección IP redactada") {
          onlineBots.add(players);
        }
      }
      sender.sendMessage(ChatColor.AQUA + "Lista de Bots de Luke: " + ChatColor.BOLD + "" + onlineBots);
      return true;
    }
  }
  return false;
}

He conectado mi dirección IP a “dirección IP redactada”, me he unido a mi servidor local con puertos reenviados para que no me una con la IP del anfitrión (verificado correctamente mi IP registrada con essentials /whois) y el comando devuelve una lista vacía. No hay errores en la consola.
¿Alguna idea?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Java, IP y Bukkit, hay algunos problemas potenciales que podrían estar causando la lista vacía en el comando que has creado. Aquí hay algunas cosas a considerar:

    1. Verifica la dirección IP que estás usando.

    Aunque parece que ya lo has hecho, vale la pena verificar nuevamente que la dirección IP que has ingresado sea correcta. Si la dirección IP no coincide con la tuya, el comando no agregará ningún jugador a la lista.

    1. Usa .equals() en lugar de == para comparar direcciones IP.

    En tu código actual, estás usando == para comparar direcciones IP, lo que puede llevar a resultados inesperados. En su lugar, utiliza .equals() para comparar las direcciones IP. Aquí hay un fragmento de código actualizado:

    if (players.getAddress().getAddress().getHostAddress().equals("dirección IP eliminada")) {
      onlineBots.add(players);
    }
    
    1. Asegúrate de que las cuentas de bots estén realmente en línea.

    Si las cuentas de bots no están en línea, no aparecerán en la lista de jugadores en línea, incluso si sus direcciones IP coinciden con la tuya.

    1. Verifica que el comando esté registrado correctamente.

    Asegúrate de que el comando esté registrado correctamente y de que estés utilizando la etiqueta correcta para activarlo. Si el comando no está registrado correctamente, no se ejecutará correctamente.

    Si ninguna de estas soluciones resuelve el problema, intenta agregar algunas declaraciones de depuración para imprimir las direcciones IP de todos los jugadores en línea para ver si son correctas. Esto puede ayudar a aislar el problema e identificar lo que está fallando.

Comments are closed.