• 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 Befehlsvorschläge im Befehl

Appstun | Äppi

Minecrafter
Registriert
22 September 2020
Beiträge
23
Diamanten
300
Minecraft
Appstun
Hallo Internets,
wie kann ich ein Befehlsvorschlagen in Befehlen machen. (ab 1.13.x)
Zum Beispiel wie beim /give-Befehl oder wie bei WorldEdit.

Beispiel:
/give @a minecraft:redstone_dust
         minecraft:redstone_lamp
         minecraft:redstone_block

und so weiter....
Ich habe schon lange im Internet nach einer Antwort gesucht, aber nichts zu meiner Frage gefunden.
Vielleicht könnt ihr mir helfen.
ich weiß nicht ob es an der Datei plugin.yml liegt, also ob ich irgendwas in diese Datei reinschreiben muss.

Ich bedanke mich schonmal, an jeden der mir hilft oder jeder der es versucht.
 
Zuletzt bearbeitet:

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Einen Befehlsvorschlag nenn man auch TabCompleter. Dafür gibt es in Spigot neben dem
Code:
getCommand("Dein Command").setExecutor(new "Deine Command Classe");
auch noch
Code:
getCommand("Dein Command").setTabCompleter(new "Deine TabComplete Classe");

Dann kannst du in der Klasse des TabComplete einfach eine List erstellen lassen und diese zurückgeben.
Code:
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;

public class TabCompletion implements TabCompleter
{
    
    @Override
    public List<String> onTabComplete(CommandSender sender, Command cmd,
             String lable, String[] args)
    {
        //Hier dein Code
    }
}

Ich hoffe, das war was du meinst^^
Avan
 

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Nicht ganz. Bei List<String> ist eine Liste aus Strings. Bedeutet zum hinzufügen muss du
Code:
List<String> liste = new ArrayList<>();
liste.add("Dein String");
//Da nun dein String hinzugefügt wird gibst du die liste nun zurück
return liste;

Natürlich sollte man eventuell nach Abfragen ob das richtige Command ist oder sonstige zusatz infos^^
 

Chojo-chan

Teammaid
Social Media
Moderator
Administrator
Registriert
24 März 2013
Beiträge
293
Alter
5
Diamanten
645
Minecraft
Hadde
Um es dir einfacher zu machen kannst du auch einfach das interface TabExecutor implementieren.
Dann musst du lediglich ein Command Objekt registrieren. Zum registrieren benutzt du weiterhin PluginCommand#setExecutor().

Zu beachten ist auch, dass du vermutlich basierend auf den aktuellen args[] deinen Output ändern willst. Das letzte Argument kann auch ein leerer String sein, wenn der Spieler noch nichts an der Stelle eingegeben hat.
Wenn du statt einer Liste null zurück gibst, wird die native Tab completion benutzt. Diese ist eigentlich immer für die Vervollständigung von Spielernamen.

Tabcompletion ist eine Menge arbeit aber lohnt sich in der Regel ^^

liebe Grüße Hadde
 
Oben