• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

lastDemageCause - Eigenen Wert setzen?

Status
Für weitere Antworten geschlossen.

Crafter213

Braumeister
Registriert
9 August 2012
Beiträge
353
Diamanten
0
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 :)
 

Crafter213

Braumeister
Registriert
9 August 2012
Beiträge
353
Diamanten
0
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)
 

Calenria

Braumeister
Registriert
28 Juli 2012
Beiträge
386
Alter
45
Diamanten
300
Minecraft
Calenria
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)


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.
 

Crafter213

Braumeister
Registriert
9 August 2012
Beiträge
353
Diamanten
0
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.


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?




--
 
Zuletzt bearbeitet:

Crafter213

Braumeister
Registriert
9 August 2012
Beiträge
353
Diamanten
0
getKiller() ist immer eine Player Variable, keine Entity.

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...



--
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Oben