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

Selbst programmieren, java, wie in main und plugin.yml reinschreiben?

D

deleted195658

Guest
Hey Leute
(PS: Mein erster Beitrag^^)

Ich arbeite momentan ein einem Skript für einen evt. zukünftigen Server von mir!
Ich bin noch nicht so sehr mit Java vertraut, deshalb würde es mich freuen, wenn mir hier jemand ein bisschen hilft^^
Also, meine Frage ist, wie soll ich diesen Command bei main und plugin.yml reinschreiben?
https://imgur.com/a/o0aXi
das target habe ich weiter oben definitert und co., das heißt, dass der Spieler den Command eingibt einen Spieler eingeben kann^^
Also, ich hoffe hier kann mir jemand helfen!
Schon mal danke :D
MfG
Tommyboy
 

Anhänge

  • helpprogrammieren.PNG
    helpprogrammieren.PNG
    11,1 KB · Aufrufe: 203

moinless

Schafhirte
Registriert
4 Oktober 2013
Beiträge
103
Diamanten
302
Du hast da einen Grundlegenden Fehler drin. Die Commandvariable - in deinem Fall "cmd" - ist nur ein Wort, ohne Argument. Dein target#getName ist das erste Argument. Folglich müsste deine if-abfrage so aussehen:
Code:
if (cmd.getName().equalsIgnoreCase("InviteMedics") {
Und eine Zeile darunter kannst du dann erst dein Target definieren:
Code:
Player target = Bukkit.getPlayerExact(args[0]);

if (target != null){
...
}
Wobei args hier für deine Variable für die Commandargumente steht (Letztes Argument im Konstruktor).
 
D

deleted195658

Guest
Also cmd hatte ich am Anfang schon definitert (siehe Anhang)
Das mache ich immer so, und Player target hatte ich eig. auch schon definitert, ich kann es aber mal versuchen.

Soll ich es trotzdem mal versuchen, so zu machen, wie du gesagt hast?
 

Anhänge

  • help^^.PNG
    help^^.PNG
    21 KB · Aufrufe: 175
D

deleted195658

Guest
Hab es jetzt mal so probiert, wie du gesagt hast, passiert aber trotzdem nichts, keine Fehlermeldung und kein Ausführen des Commands.

if (cmd.getName().equalsIgnoreCase("InviteMedics")) {
if (target != null) {
if (p.hasPermission("medics.leader")) {
p.sendMessage(target.getName() + "§4 wurde zur Fraktion hinzugefügt!");
target.sendMessage("§4Du wurdest zur Fraktion Medics hinzugefügt!");

Console:
[11:59:58 INFO]: Tommyboy004 issued server command: /invitemedics
[12:00:00 INFO]: Tommyboy004 issued server command: /invitemedics Tommyboy004
>
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Command$getName() returnt dir nur den Namen des Cmds. Also bei "/test 1234" wäre cmd.getName() demnach nur test.
Wenn du wirklich die Argumente hinter dem Commandnamen haben möchtest, gibt es bei dem Methodenaufruf ein Übergabeparameter in Form eines String-Arrays. Bei diesem steht in jedem Feld des Arrays ein Wort. Also "/test 1234 2. Wort" würde dazu führen, dass das Array 3 lang ist und den Inhalt {"1234", "2.", "Wort"} hat.

Zu benutzen wäre das dann so:
Code:
if(args.lengh != 2) {
player.sendMessage("Zu kurz!");
return true;
}
if(args[0].equalsIgnoreCase("InviteGang") {
    Player player = Bukkit.getPlayer(args[1]);
    if(player == null) return true;
    // do stuff
   return true;
}
return false;
 
D

deleted195658

Guest
Jo, thx.
ich habs jetzt so gemacht :
...
if(player == null) return true;
p.sendMessage("Du hast " + args[1] + " einen Antrag gemacht");
Da hab ich aber glaube einen kleinen Fehler gemacht^^ Zumindest wird dann nicht gesagt Du hast ... einen Antrag gemacht :O
 
Oben