• 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 Wie kann ich einen Accept Command erstellen?

DrEm8ee

Kuhfänger
Registriert
10 Januar 2018
Beiträge
58
Diamanten
0
Minecraft
DrEm8ee
Hey.

Ich möchte einen Command erstellen, der eine Anfrage an einen anderen Spieler schickt und der andere Spieler die Anfrage annehmen kann. Wie kann ich verhindern, dass jeder Spieler ohne eine Anfrage accept ausführen kann?

Vielen Dank im Voraus
 
Zuletzt bearbeitet:

SirYwell

PlotSquared Entwickler
Registriert
30 Juni 2017
Beiträge
540
Diamanten
488
Minecraft
SirYwell
Du kannst nicht verhindern, dass ein Spieler den Befehl eintippt.

Aus deinem Vorhaben schließe ich, dass du etwas in die Richtung des typischen /tpa-Befehls basteln möchtest. Hierbei bietet sich eine (bidirektionale) Map an, in welcher du das Paar aus anfragendem Spieler und Spieler, der die Anfrage annehmen musst, speicherst. Führt ein Spieler den Befehl zum Annehmen der Anfrage aus, suchst du die Map nach einem Paar ab, welches diesen Spieler enthält. Falls die Map den Spieler nicht enthält, schickst du ihm eine Nachricht, anderenfalls machst du was auch immer du vorhast, beispielsweise den anfragenden Spieler zu dem teleportieren, der gerade den Befehl ausgeführt hat.
 

PSandro

Kuhfänger
Registriert
7 November 2016
Beiträge
51
Diamanten
302
Ich werfe einfach mal ein paar Links in den Raum...
BiMap<K,V> von Google Common
Multimap<K,V> von Google Common ("A collection that maps keys to values, similar to Map, but in which each key may be associated with multiple values." Praktisch, wenn einem Spieler mehere Anfragen von verschiedenen Personen gleichzeitig gestellt werden können sollen.)

Eine Mischung aus den beiden Maps wäre für deinen Fall wahrscheinlich ideal, jedoch fällt mir da nichts passendes ein, deswegen müsstest du dir da selber was zusammenbasteln: siehe Stackoverflow

Du erstellst dir quasi eine Map, schreibst beim Stellen einer Anfrage durch Spieler A die UUID(A) als Value in die Map, mit der UUID des angefragten Spieler B als Key.
Falls B nun die Anfrage von einem Spieler X annehmen will, prüfst du, ob einer der Werte die zu dem Key UUID(B) passen, die UUID von X enthält.

Ich hoffe du kommst mit den paar Informationen zurecht, andernfalls kannst du gerne nochmal nachfragen.
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Du kannst auch einfach die ausstehenden Anfragen in einem Array speichern, zusammen mit Zielposition, Absender und Empfänger und wenn jemand den Befehl eingibt einfach durch das Array iterieren. Wenn du nicht permanent 1k Spieler mit 500 Anfragen auf dem Server hast, ist das überhaupt kein Problem und schnell implementiert.
 
Oben