Java Programmierung ein PlayerEvent gesucht

...komplette Frage anzeigen

3 Antworten

Ein Event gibt es dafür nicht, da Events dafür da sind wenn etwas passiert zu einem Zeitpunkt und nicht wenn etwas nicht passiert. Da haben die anderen schon recht, das bukkit API folgt sehr klar dem Event-Subscriber-Pattern, das übrigens universell ist und in der Implementierung des Bukkit Teams auch nichts besonderes. Die Standard Java-Implementierung ist also nicht nur relevant sonder vermutlich auch Grundlage für craftbukkit's Implementierung des BukkitAPIs (ja, craftbukkit und bukkit sind nicht dasselbe. Spigot ist auch ein bukkit Server) .

Was du machen kannst ist eine Map an Playern auf Long führen und immer nen Timestamp reinschieben wenn ein MoveEvent geworfen wird. Dann einfach wenn dus brauchst schauen wann sich der Player zuletzt bewegt hat. Ein Event ist da auch relativ sinnlos. Einfach mit ner repeatedTask alle paar ticks schauen ob sich der Spieler bewegt hat, wenn nicht steht er still.

Wenn dus ganz genau haben willst kannst du auch jeden tick die Position mit der vom letzten vergleichen um zu sehen ob er sich bewegt hat (ich empfehle die letzen 5 Ticks zu nehmen um für mieses Internet zu kompensieren).

Ich kann dir nicht genau sagen, ob es ein solches Event gibt, allerdings ergeben sich aus deiner Frage für mich eine wichtige Folgefrage:

  • Wenn der Spieler steht, dann kann er ja über einen längeren Zeitraum stehen. Soll dieses "Steh"-Event dann jede (Milli)Sekunde gefeuert werden?

Nach kurzem Durchsehen der API behaupte ich mal, dass du dein Problem nicht mit den vorhandenen Klassen/Event lösen kannst. Dann bleibt dir wohl nichts anderes übrig als das Event selbst im Bukkit-Code zu implementieren.

Ergänzung: Du willst etwas mit einem Vector berechnen, wenn der Spieler steht? Ich bin mir nicht sicher, aber aus der API lese ich raus, dass das PlayerMoveEvent immer dann gefeuert wird, wenn der Spieler am neuen Zielort angekommen ist. Warum reicht das nicht für deine Berechnung, schließlich muss es ja eh immer neu berechnet werden, nachdem sich der Spieler bewegt hat?

0

Erstmal danke für deine Antwort! Ich erkläre dir erstmal, wofür ich das brauche, vielleicht könntest du da weiterhelfen. Wegen den Spectator. Ich will nämlich einstellen, wenn die Spectator zu einen lebenden Spieler fliegen, dass sie gepusht werden. Da reicht leider das MoveEvent nicht aus. (Bitte frag nicht warum). Das mit den Pushen ist schon längst geregelt.

Könnte man eine Abfrage beim MoveEvent machen? Ich hoffe, du kapierst, was ich meine. Außerdem habe ich noch ein Plugin gemacht, ich gib's zu, das ist von GommeHD. Nämlich für die Youtuber dieses Pushen mit der Enderauge. Da muss der Youtuber auch sich nicht bewegen, damit die Spieler gepusht werden. Deswegen bin ich auf die Idee gekommen, dasselbe für die Spieler im Spiel zu machen. Ich brauche dieses Event.

Ich weiß schon, dass Android-API & Java-API sich unterscheiden. Aber man kann auch Java in Android benutzen. Ich beschäftige mich erst vor 2 Monaten mit der Bukkit-API. Deswegen bitte ich um eine Antwort. Geht sowas? Das Gomme-Team hat auch sowas, die Youtuber / Admins müssen sich nicht mal bewegen! :)

Lg,

0

Ich glaube, du hast immer noch nicht kapiert, was ein Event ist! Lies dir diese API mal ganz genau durch. Und stopp deine Plugin-Programmierung am besten so lange, bis du die Programmiersprache kannst, die du verwendest!

http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html

-Diese Seite ist stellvertretend für sämtliche andere Events zu verstehen-

Und weil ich davon ausgehe, dass dir das immer noch nicht hilft, hier nochmal glasklar:

EIN EVENT WIRD GEFEUERT, WENN ETWAS PASSIERT; NICHT WENN ETWAS NICHT PASSIERT!!!

Und zu der Frechheit, "wenn ihr wisst, was ihr tut": Du weißt es ja noch nicht mal selber. Und ja, ich weiß es ganz genau!!!

0

Sorry, ich will keine Antwort von dir.

Deswegen meine ich ja: "Bitte antwortet, wenn ihr wirklich Ahnung habt"

Weil Menschen unnötige Sachen programmieren. Ich kenne Oracle Java bereits. Ich beschäftige mich mit der Bukkit API und da sind die Events anders. Du brauchst nicht bei jeder Kleinigkeit zu heulen. Außerdem gibt es Anfragen.

Dein Zitat: EIN EVENT WIRD GEFEUERT, WENN ETWAS PASSIERT; NICHT WENN ETWAS NICHT PASSIERT!!!

Tja, diese Antwort beweist, dass du selbst keine Ahnung hast. Allein die Unterscheidung zwischen der Bukkit API und Java. Java-Codes kenne ich bereits. Ich beschäftige mich mit Android, da dies auch Java benutzt und der Bukkit-API. Es gibt eine ! Abfrage. "-Diese Seite ist stellvertretend für sämtliche andere Events zu verstehen-" Klar, wieder hast du es nicht verstanden: Bukkit API. PlayerMoveEvent, Inventory Events, Interact usw. sind alle vom craftbukkit.jar

Solche Menschen wie dich gehen mir voll auf die Nerven!

Jedes Mal den Besserwisser spielen, aber 0 Ahnung haben. Sorry ist halt so!

Lg,

PS: Du brauchst dich jetzt nicht mehr aufzuregen. Ich "fühle" es jetzt schon, dass du dich aufregst. Ich suche nach einer Antwort & nicht nach einen Kinderkram.

0
@iGamePlayHD

Nur zur Klarstellung:

Die Java-API und die Android-API unterscheiden sich auch und haben nur die Syntax gemein. Es ist klar, dass die Bukkit-API andere Events und Listener-Klassen bereitstellt als die Java. Das kann jede API.

Die Aussage von BinZocker ist trotzdem korrekt - das Listener- oder auch Observable-Pattern wird verwendet, wenn etwas zu einem Zeitpunkt passiert und nicht wie beim Stehen über eine Zeitspanne.

0

Was möchtest Du wissen?