Listener: Fehler bei getHealth()

Dieses Thema im Forum "Programmierung" wurde erstellt von MrPyro13, 7. August 2014.

  1. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Hallo Community,

    ich habe das Problem, das in meinem Code das getHealth() rot unterstrichen wird.

    Code (Text):
    1.  
    2. package de.mrpyro13.ImpComs;
    3.  
    4. import org.bukkit.entity.Entity;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    9.  
    10. public class Listener_DamageMessage implements Listener {
    11.    
    12.     public Listener_DamageMessage(ImpComs_main plugin) {
    13.         plugin.getServer().getPluginManager().registerEvents(this, plugin);
    14.     }
    15.    
    16.     @EventHandler
    17.     public void onDamage(EntityDamageByEntityEvent ev) {
    18.         Entity en0 = ev.getDamager();
    19.         if (en0 instanceof Player) {
    20.             Entity en1 = ev.getEntity();
    21.             if (en1 instanceof Player) {
    22.                 Player p0 = (Player) en0; //Fügt Schaden hinzu
    23.                 Player p1 = (Player) en1; //Bekommt Schaden
    24.                 String msg = "§6" + p1.getName() + "§7's Lebensanzeige: §4";
    25.                 for(int i = 0; i < p1.[COLOR=#ff0000][U]getHealth()[/U][/COLOR]; i++) {
    26.                     msg = msg + "¦";
    27.                 }
    28.                 p0.sendMessage(msg);
    29.             }
    30.         }
    31.     }
    32.  
    33. }
    34.  
    35.  

    Fehlermeldung:

     
    #1
  2. Elrontur
    Offline

    Elrontur Ehem. Teammitglied

    Registriert seit:
    5. April 2013
    Beiträge:
    138
    Minecraft:
    Elrontur
    #2
  3. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Caste mal p1 zu Damageable. Also:
    Code (Text):
    1. ((Damageable) p1).getHealth()
    Dann funktioniert es.
     
    #3
    1 Person gefällt das.
  4. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Super, das von MiCrJonas1997 funktioniert!
    Um nun diese Lebensanzeige zu halbieren muss ich doch einfach /2 machen oder?

     
    #4
  5. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Ja, du solltest aber vor der Schleife 1x ausrechnen, wann die Schleife enden soll, anstatt das jedes mal zu machen, wenn die Schleife durchlaufen wird, das dies Resourcenschonender ist. Außerdem solltest du einen StringBuilder benutzen, weil dies auch Resourcen spart, wenn du so oft etwas zum String hinzufügst. Das ganze macht aber nur einen minimalen unmerklichen Unterschied zu deiner Variante.
     
    #5