• 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!

Spigot PlayerFishEvent

SchmidiMC

Redstoneengineer
Registriert
1 April 2014
Beiträge
33
Diamanten
266
Minecraft
SchmidiMC
Guten Morgen,
ich wollte bei meinem Plugin die Zeit haben bei der der Spieler aufhört zu angeln. Ich weiß nur nicht wie ich danach prüfen kann oder wann das genau passiert?
Hört der Spieler mit dem Angeln auf nachdem die Event Methode durchgelaufen ist? Muss man eine while schleife einbauen und die solange laufen lassen bis der Spieler nicht mehr angelt, wenn ja, gibt es dafür einen boolean um das abzufragen? Oder gibt es da eine ganz andere Methode?
 

DevSnox

Redstoneengineer
Registriert
28 September 2016
Beiträge
34
Diamanten
280
Minecraft
DevSnox
Nein, eine While Schlaufe würde ja nur unnötig Leistung verschwenden und wäre fehl am Platz...
Am besten du fügst ein Spieler wenn er eine Angel reinwirft in eine HashMap mit der aktuellen Zeit in Millisekunden.
Sobald der Spieler rausfischt wird das Event ja nochmals gefeuert, dann kannst du die Differenz zur Startzeit berechnen.

Ich hoffe du kannst etwas mit diesem Lösungsvorschlag anfangen, ansonsten melde dich einfach wieder.

~DevSnox
 

SchmidiMC

Redstoneengineer
Registriert
1 April 2014
Beiträge
33
Diamanten
266
Minecraft
SchmidiMC
An sich verstehe ich es aber weiß nicht ganz wie ich zu dem Schritt komme, ich müsste ja beim auswerfen den State "PlayerFishEvent.State.Fishing" verwenden, aber wie prüfe ich das? Einfach ob das null ist bzw. ob es nicht null ist?

Und zur Zeit, würdest du einfach System.currentTimeMillis verwenden oder mit einer Klasse wie LocalDateTime arbeiten?
 

DevSnox

Redstoneengineer
Registriert
28 September 2016
Beiträge
34
Diamanten
280
Minecraft
DevSnox
Also du kannst beim Zeitpunkt des einwerfens den Enum zu einem Boolean machen und mit einem (if) Statment abfragen.

Code:
if ( event.getState() == PlayerFishEvent.State.Fishing ) {
    // Code
}

Und was die Zeit betrifft nutzt du am besten einfach System#currentTimeMillis, was dir ein long zurück gibt.

~DevSnox
 

SchmidiMC

Redstoneengineer
Registriert
1 April 2014
Beiträge
33
Diamanten
266
Minecraft
SchmidiMC
Okay, aber kann ich auch iwi die Zeit während des Angelns holen? Also das ich z.B. erkennen kann das der Spieler dann schon seit einer Minute angelt?

Möchte halt (was du vermutlich schon gesehen hast auf SpigotMC) Mein AntiAFK Plugin updaten, dafür möchte ich halt auch gucken das niemand "Afk" angelt, ich möchte halt nach einer gewissen Zeit das Foodlevel reduzieren, nur ich müsste mir halt iwi ständig die vergangene Zeit holen solange der Spieler angelt. Hoffe du verstehst was ich meine.
 
Oben