Bukkit 1.6 - getHealth()

Dieses Thema im Forum "Programmierung" wurde erstellt von delta242, 3. Juli 2013.

  1. delta242
    Offline

    delta242

    Registriert seit:
    28. Mai 2012
    Beiträge:
    90
    Hey,

    da das System der Health anzeige ja mit der 1.6 geändert wurde, wird das Leben in Bukkit jetzt in double angegeben.
    Das beudeutet, dass die Methode player.getHealth() jetzt einen double und keinen Integer zurück gibt. Was dieser jedoch aussagt, ist mir nicht klar, da ich folgenden Fehler habe:

    player.getHealth() liefert einen Error und dazu (in Eclipse) diesen Text:
    Gleiche Fehler sind auch bei: setHealth() und damage()

    Ja, super die alte getHealth Methode wurde überschrieben und durch die neue erstetzt, doch wenn man die neue nicht aufrufen kann ists auch nicht so knorke...
    Jemand ne Idee wie man das fixen könnte? Oder hat es vielleicht schon jemand gelöst?
    Aber ich denke mal, wir mussen auf ein Bukkit Update warten, sodass das ganze gefixt wird.

    Grüße
    delta242
     
    #1
  2. Ven3no
    Offline

    Ven3no

    Registriert seit:
    3. Juli 2013
    Beiträge:
    2
    Minecraft:
    Ven3no
    Hey ich hab's so gelöst:

    PHP:
    1. ((Damageable) player).getHealth()
    Oder auch so:

    PHP:
    1. ((CraftPlayer) player).getHandle().getHealth()
    Den Fehler, der in Eclipse auftaucht, kann ich mit auch nicht erklären.
    Aber ich hoffe ich konnte hiermit helfen.

    Mfg
     
    #2
  3. ChunkNorris
    Offline

    ChunkNorris

    Geht bei mir ohne Probleme....
    Code (Text):
    1.  
    2. @Override
    3. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    4.     if (command.getName().equalsIgnoreCase("lala")) {
    5.         if (sender instanceof Player ) {
    6.             Player player = (Player) sender;
    7.             player.sendMessage(String.valueOf(player.getHealth()));
    8.         }
    9.  
    10.  
    11.         return true;
    12.     }
    13.     return false;
    14. }
    15.  
    API-Version: 1.6.1-R0.1-SNAPSHOT
     
    #3
  4. delta242
    Offline

    delta242

    Registriert seit:
    28. Mai 2012
    Beiträge:
    90
    Bei mir nicht, selbst mit der neusten Dev Build von Bukkit.
    Fehler:
    Code (Text):
    1. Caused by: java.lang.Error: Unresolved compilation problems:
    2.     The method getHealth() is ambiguous for the type Player
    3.     The method getHealth() is ambiguous for the type Player
    Aber mit ((CraftPlayer)player).getHealth() funktioniert es.
     
    #4
  5. stefmuki
    Offline

    stefmuki

    Registriert seit:
    4. Juli 2012
    Beiträge:
    23
    Ort:
    Niederösterreich
    Minecraft:
    stefmuki
    Bei mir gehts auch nicht :eek:
    Die Mölichkeit von oben auch nicht, aber vl auch nur vertippt ^^
    Da hilft nur warten und tee trinkn :)
     
    #5
  6. Gleydar
    Offline

    Gleydar Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    443
    Ort:
    player.getHome()
    Minecraft:
    Gleydar
    Es geht schon, es returnt aber jetzt ein Double, darauf muss man achten. Ggf. mit AutoVervollständigen die Double-Methode auswählen
     
    #6
  7. Chrisliebaer
    Offline

    Chrisliebaer

    #7
  8. G3R_Bukkit
    Offline

    G3R_Bukkit

    Registriert seit:
    13. August 2012
    Beiträge:
    12
    Minecraft:
    G3R_Bukkit
    Health

    Hey. Bei mir funktioniert die "health" Methode immernoch. Vielleicht kannst du mit meinem Code etwas anfangen...

    Code (Text):
    1. if (cmd.getName().equalsIgnoreCase("heal"))
    2.         {
    3.             if (p.hasPermission("PLUGINNAME.heal"))
    4.             {
    5.  
    6.                 if (args.length > 1)
    7.                 {
    8.                     p.sendMessage(ChatColor.RED + " You invited too many players!");
    9.                     return false;
    10.                 }
    11.  
    12.                 if (args.length == 0)
    13.                 {
    14.  
    15.                     p.sendMessage(ChatColor.GREEN + " get well!");
    16.                     float health = p.getHealth();
    17.                     p.sendMessage(" your health: " + health);
    18.                     p.setHealth(20);
    19.                     return true;
    20.                 }
    21.  
    22.                 if (args.length == 1)
    23.                 {
    24.                     try
    25.                     {
    26.                         p.sendMessage(ChatColor.GREEN + " Lokalize player...");
    27.                         Player target = (Player) this.getServer().getPlayer( args[0]);
    28.                        
    29.                         if (target.isOnline())
    30.                         {
    31.                             p.sendMessage(ChatColor.YELLOW + args[0] + ChatColor.GREEN + " is online and has been healed.");
    32.                             target.getHealth();
    33.                             target.setHealth(20);
    34.                             target.sendMessage(ChatColor.GREEN + "You have been healed.");
    35.                         } else {
    36.                             throw new NullPointerException();
    37.                         }
    38.  
    39.                     } catch (NullPointerException e) {
    40.                         p.sendMessage(ChatColor.YELLOW + args[0] + ChatColor.RED + " is offline. Discontinuation.");
    41.                         return false;
    42.                     }
    43.                 } else {
    44.                     return false;
    45.                 }
    46.             }
    47.         }
     
    #8
  9. delta242
    Offline

    delta242

    Registriert seit:
    28. Mai 2012
    Beiträge:
    90
    mittlerweile gehts bei mir auch wieder... Obwohl ich eigentlich nichts geändert hatte, aber naja... Zur Sicherheit halt immer den CraftPlayer nutzen :D
     
    #9