Frage von Felix193, 84

[Java] (Minecraft Plugin) Wie kann ich alle 2 Sekunden die Eigenschaften eines bestimmten Blockes abfragen?

Hallo,

ich bin gerade an einem Java Plugin für Minecraft. Ich nutze Spigot 1.8.X und möchte so circa alle 2 Sekunden testen, ob an einer bestimmten Position ein Block bestimmte Eingenschaften hat. Das mit dem Testen der Eingeschaften weiß ich. Ich möchte nämlich die zweite Zeile eines Schildes abfragen. Nur weiß ich erstens nicht, wie ich alle 2 Sekunden etwas abfrage und wie ich einen Block bei den Koordinaten (0, 0, 0) testen kann. Ich hoffe es ist Verständlich was ich meine! Vielen Dank für eure Hilfe!

Mit freundlichen Grüßen ~Felix193

Antwort
von Atomtoasty, 55

Erstelle doch in der onEnable Methode einen Scheduler, der dann alle 2 sek wiederholt wird.

LG Atomsi

Kommentar von Felix193 ,

Hallo, vielen Dank für deinen Lösungsansatz. Durch eine Rechereche konnte ich etwas finden und eine mittelmäßige Dokumentation. Leider funktioniert die Abfrage immer noch nicht, wäre gut, wenn Du mal drüberschaust. Das Plugin wird erfolgreich geladen und der Befehl unten geht auch! ;)

Hier der Link zum Quellcode:

http://pastebin.com/UZJ6hyc2

Kommentar von Atomtoasty ,

Ja... Das Problem könnte dadurch ausgelöst werden, dass während das Plugin diese Anfrage durchführt, für den Server noch gar keine Welt existiert, da diese ziemlich am Schluss geladen wird... Eine Lösung wäre den Scheduler an ein anderes Event zu knüpfen, zB. Das PlayerJoinEvent. Das kann man dann so modifizieren, dass trotzdem der Scheduler nur einmal läuft, aber dann halt erst gestartet wird, sobald ein Spieler joint. (headless Client?)

Hoffe ich konnte helfen.
Wenn du noch Fragen hast, können wir auch gerne mal über Skype oder TS labern.

LG Atomsi

Antwort
von johdl, 44

Du kannst den Scheduler von Spigot verwenden, dir alle zwei sekunden den Block holen und überprüfen.

Suberer wäre es jedoch auf ein entsprechendes Event zu horchen, v.a. da das ressourcenschonender wäre (Wo es doch schon das schöne SignChangeEvent gibt).

Kommentar von Felix193 ,

Hi, das SignChangeEvent kann ich nicht nutzen, da das Schild von einem anderen Plugin editiert wird und es dies nicht erkennt.... Das hatte ich bereits versucht.

Die Option mit dem Scheduler habe ich gewählt. Leider funktioniert da etwas nicht. Wäre Nett, wenn Du mir helfen könntest:

http://pastebin.com/UZJ6hyc2

Kommentar von johdl ,

1. Überprüfe vorher, ob der Block wirklich ein Schild ist und speicher es in eine Variable ab, sonst kann das böse Fehler geben.

2. Einfach nach dem ändern des Texts noch ein sign.update() hinterherhauen, dann sollte es funktionieren.

Kommentar von Felix193 ,

Uff, funktioniert irgend wie immernoch nicht, sorry:

http://pastebin.com/XqK1ubfF

Kommentar von johdl ,

1. update() wird klein geschrieben

2. speicher den block als sign ab, nicht als block

Keine passende Antwort gefunden?

Fragen Sie die Community