ServerPlugin Distance von Spieler

Dieses Thema im Forum "Programmierung" wurde erstellt von Selfmade, 17. Februar 2013.

  1. Selfmade
    Offline

    Selfmade

    Registriert seit:
    3. Februar 2013
    Beiträge:
    11
    Ich habe ein kleines problem

    Was ich machen möchte:
    Wenn der Spieler den Command /heal eingibt dann sollen allen in den Radius von 100 Blöcken geheilt werden

    Der Code:

    Code (Text):
    1.  
    2. if(command.getName().equalsIgnoreCase("heal")){
    3.     if(args.length == 1){
    4.         Player player = (Player)sender;
    5.         for(Player p : Bukkit.getOnlinePlayers()){
    6.             /*
    7.              * Wie finde ich die Distance heraus
    8.             */
    9.                         p.setHealth(20);
    10.         }
    11.         }
    12. }
    13.  
    Meine Problem:

    Wie finde ich die Distance heraus
     
    #1
  2. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Code (Text):
    1.  
    2. final Location loc = player.getLocation();
    3.  
    4. for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    5.     final Location playerLoc = onlinePlayer.getPlayer().getLocation();
    6.     if (playerLoc.getWorld() != world) {
    7.         continue;
    8.     }
    9.     final double delta = playerLoc.distance(loc);
    10.     if (delta > 100) {
    11.         continue;
    12.     }
    13.     onlinePlayer.setHealth(20);
    14. }
    15.  
     
    #2
  3. squiby
    Offline

    squiby

    Registriert seit:
    23. November 2012
    Beiträge:
    8
    Ort:
    Österreich
    Einfachere Variante:
    Code (Text):
    1.  
    2. if(sender instanceof Player) {
    3.     Player heiler = (Player) sender;
    4.     Location mitte = heiler.getLocation();
    5.     Player[] spieler = this.getServer().getOnlinePlayers();
    6.         for (int i = 0; i < spieler.length; i++) {
    7.             if((spieler[i].getLocation().distance(mitte) <= 100) && (spieler[i].getWorld().getName().equals(heiler.getWorld().getName()))) {
    8.                             spieler[i].setHealth(20);
    9.                         }
    10.                   spieler[i].setHealth(20);
    11.             }
    12.                 }
    13. }
    14.  
    + Weltenabgleich
     
    #3
  4. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Ohne Weltcheck wird dir das unter Umständen um die Ohren fliegen, und ansonsten ist das gleiche oO
     
    #4