ServerPlugin lastDemageCause - Eigenen Wert setzen?

Dieses Thema im Forum "Programmierung" wurde erstellt von Crafter213, 30. Oktober 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Crafter213
    Offline

    Crafter213

    Registriert seit:
    9. August 2012
    Beiträge:
    353
    Kann man eigene Todesursachen festlegen?

    Im PlayerDeathEvent kann man ja mit event.getEntity().getLastDamageCause().getCause() (.toString() )
    nachsehen, wie ein Spieler gestorben ist (z.B. "FIRE" oder "ENTITY_DEMAGE")

    Aber wie kann ich diesen Wert setzen (auf einen eigenen)?
    Ich programmiere an einem Plugin, das den Spieler verdursten lässt - kann ich in dem Plugin lastDemageCause auf z.B. "THIRST" setzen?

    Schon mal Danke für Hilfe :)
     
    #1
  2. iTz_Proph3t
    Offline

    iTz_Proph3t Moderator

    Registriert seit:
    24. Oktober 2012
    Beiträge:
    1.117
    Minecraft:
    iTz_Proph3t
    Ich denk mal eher nicht, da ja Durst nichtmal in Minecraft vorhanden ist. Dafür musst du wahrscheinlich jemanden finden, der dir das programmiert...
     
    #2
  3. Crafter213
    Offline

    Crafter213

    Registriert seit:
    9. August 2012
    Beiträge:
    353
    Ich habe selbst ein Plugin programmiert, das den Spielern Durst gibt,
    aber darum gehts eig nicht.

    Ich möchte einfach, dass mein Plugin den lastDemage-Wert auf einen eigenen Wert setzt,
    da es den Spielern auch schadet.
    (wenn die Spieler nix trinken, bekommen sie Lebenspunkte abgezogen (per Player.demage(1)),
    aber ich möchte, dass ein anderes Plugin dann mit Player.getLastDemageCause() sieht, dass die Spieler am Durst gestorben sind
    und nicht durch z.B. Fallschaden)
     
    #3
  4. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria

    Dazu müsstest du im Bukkit die http://jd.bukkit.org/apidocs/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html Klasse erweitern, das sollte aber per Plugin nicht möglich sein.
     
    #4
  5. Crafter213
    Offline

    Crafter213

    Registriert seit:
    9. August 2012
    Beiträge:
    353

    Schade...

    Wie kann ich denn rausfinden, durch welches Monster ein Spieler getötet wurde?
    event.getPlayer().getKiller().getType().toString() gibt NullPointerExeption...

    Muss ich dass immer mit event.getPlayer().getKiller() instanceof XYZ prüfen oder gehts auch besser?


    Gibt es in der Klasse Player einen "freien Platz", den ich nutzen kann?
    EDIT: Player.setMetadata und PLayer.getMetatada?




    --
     
    #5
  6. Let's Mine
    Offline

    Let's Mine Ehem. Teammitglied

    Registriert seit:
    1. Dezember 2011
    Beiträge:
    421
    Ort:
    Let's Mine
    Minecraft:
    LetsMine
    getKiller() ist immer eine Player Variable, keine Entity.
     
    #6
  7. Crafter213
    Offline

    Crafter213

    Registriert seit:
    9. August 2012
    Beiträge:
    353
    Player org.bukkit.entity.LivingEntity.getKiller()
    -> Heißt doch, dass es was vom Typ "Player" zurückgibt, oder?

    Aber ein Zombie ist kein Player...
    Deshalb speicher ichs in einer Variable vom Typ Entity und prüfe mit instanceof Player, obs auch ein Spieler ist,
    bevor ich z.B getItemInHand() versuche...

    Wie muss mans denn machen und wie bekomme ich den Typ?
    Also wenns kein Spieler war, wie bekomme ich dann dass z.B. ein Zombie den Spieler getötet hat?
    Player.sendMessage("killer.getType(): " + Player.getKiller().getType()); gibt NullPointerExeption...



    --
     
    #7
  8. Let's Mine
    Offline

    Let's Mine Ehem. Teammitglied

    Registriert seit:
    1. Dezember 2011
    Beiträge:
    421
    Ort:
    Let's Mine
    Minecraft:
    LetsMine
    Machs auch mit dem LastDamageCause Event, dort findeste den Attacker.
     
    #8
Status des Themas:
Es sind keine weiteren Antworten möglich.