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

Fragen zum Programmieren von AsyncPlayerChatEvent / Heal-Plugin

Michelus

Minecrafter
Registriert
5 März 2020
Beiträge
6
Diamanten
300
Hallo liebe Community, ich bin dabei das Programmieren zu lernen. Ich habe ein simples Heal Plugin geschrieben nun wollte ich es erweitern das der Sender anstatt /heal <Player> nur /heal im Chat eingibt. Nach dem absenden soll er aufgefordert werden den Namen von dem Spieler in den Chat eingeben welcher geheilt werden soll. Ich weiss nur das mit einem AsyncPlayerChatEvent funktionieren sollte aber sonst kann ich mir darunter leider nichts vorstellen. Meine Frage oder eher Bitte ist daher das es mir einer oder eine sozusagen vorprogrammiert damit ich es verstehe und umsetzen kann. Vielen dank für eure Hilfe :)

Mein Plugin bis jetzt: https://pastebin.com/pSzvYQ0W

Mit freundlichen Grüßen
~Michel
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
So sollte es funktionieren: https://paste.timo.cloud/nocirajihe.java
Hab das Ganze nicht getestet und nur aus dem Kopf aufgeschrieben, falls was nicht klappen sollte einfach bescheid geben.
Du kannst auch einen Listener und den CommandExecutor in eine Klasse packen, dann braucht deine Liste nicht public static zu sein, private würde reichen.

Zudem solltest du bei den Zugriffen der Bukkit API sicher gehen, dass sie threadsafe sind oder den Bukkit scheduler nutzen und sie synchron ausführen lassen.
 

BloodEko

Schafhirte
Showcase Teilnehmer
Registriert
9 September 2012
Beiträge
144
Diamanten
36
Zusammengefasst, du nutzt eine Liste/Set um die Spieler-UUIDs zu cachen, welche den Heal Command benutzt haben.
Im AsyncPlayerChatEvent prüfst du ob die Nachricht deinem "heal" entspricht für die weitere Reaktion danach.

Wichtig, was im Code oben noch fehlt, dann nutzt du den BukkitScheduler um die Reaktion synchron auszuführen.
Auf deine Liste/Set und den Player solltest du nur innerhalb des Runnable zugreifen, da es sonst nicht thread-safe ist.
 
Zuletzt bearbeitet:
Oben