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

Java Player Argument

laserVeit

Minecrafter
Registriert
2 Dezember 2015
Beiträge
9
Alter
27
Diamanten
300
Ich weiß was ihr jetz alle rummotz aber Ich bin Anfänger in Plugin programmieren deswegen frag ich euch wie kann mann ein player argument machen
zb. /tp (player argument) wenns geht könnt ihr mir es so schicken wie es sein soll

Der Code ist hier

Ich bin sehr dankbar wenn es mir jemand zeigen könnte

if(cmd.getName().equalsIgnoreCase("getPremium")) {
getServer().dispatchCommand(Bukkit.getConsoleSender(), "pex user "+ p.getName() +" group set Premium");
getServer().broadcastMessage(Promote.Abtrennung);
getServer().broadcastMessage("§7Der Spieler§a " + p.getName() + " §7wurde zu §6Premium §7 promotet");
getServer().broadcastMessage("§7Vielen dank fuer deine Spende");
getServer().broadcastMessage("§7Herzlichen Grueckwunsch und Viel Gleuck damit");
getServer().broadcastMessage(Promote.Abtrennung);
}
 
V

Verschraubt

Guest
Eigentlich falscher Bereich...

Code:
@Override
    public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {

Du bekommst mit einem String[] (hier mit der Variable "args") die Argumente überliefert.

Jetzt musst du dein gewünschtes Argument nur noch "auswählen".

Code:
// /tp <Argument 0> <Argument 1> <Argument 2> ...

Wenn du jetzt zum Beispiel abfragen willst, ob das erste Argument "spawn" heißt, dann könnte das so aussehen:

Code:
if (cmd.getName().equalsIgnoreCase("tp")){
            if (args[0].equalsIgnoreCase("spawn")){
                //Abfrage ist erfolgreich - das erste Argument nach dem Kommando lautet "spawn";
            }
        }

Mit freundlichen Grüßen,
DasThema
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Eigentlich falscher Bereich...

Code:
@Override
    public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {

Du bekommst mit einem String[] (hier mit der Variable "args") die Argumente überliefert.

Jetzt musst du dein gewünschtes Argument nur noch "auswählen".

Code:
// /tp <Argument 0> <Argument 1> <Argument 2> ...

Wenn du jetzt zum Beispiel abfragen willst, ob das erste Argument "spawn" heißt, dann könnte das so aussehen:

Code:
if (cmd.getName().equalsIgnoreCase("tp")){
            if (args[0].equalsIgnoreCase("spawn")){
                //Abfrage ist erfolgreich - das erste Argument nach dem Kommando lautet "spawn";
            }
        }

Mit freundlichen Grüßen,
DasThema
Und dann solltest du natürlich vorher noch prüfen, ob das Array überhaupt ein Element enthält und das ist dann der Punkt an dem wir lieber erstmal Java lernen.
 
V

Verschraubt

Guest
Und dann solltest du natürlich vorher noch prüfen, ob das Array überhaupt ein Element enthält
Nett, dass du mich daran erinnerst.

und das ist dann der Punkt an dem wir lieber erstmal Java lernen.
Ein Forum ist dazu da um sich gegenseitig bestmöglich zu unterstützen bzw. zu helfen. Klar können nicht alle Beiträge perfekt sein (Die deine natürlich schon... *hust*), aber viele Beiträge mit Vorschlägen können durch Community verbessert werden und führen letztendlich zum richtigen Ergebnis.

Ich mag deine Art nicht. Anstatt den Nutzern klar zu helfen versuchst du, einen mit deiner Ausdrucksweise zu beeindrucken. Meiner Meinung nach ist das eine Frechheit. Kritik mag ja schön und gut sein, aber ein bisschen Hilfsbereitschaft darf auch nicht fehlen.

Und dann solltest du natürlich vorher noch prüfen, ob das Array überhaupt ein Element enthält
Wenn du dich doch schon so fantastisch auskennst, kannst du uns allen sicher weiterhelfen...
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Ein Forum ist dazu da um sich gegenseitig bestmöglich zu unterstützen bzw. zu helfen. Klar können nicht alle Beiträge perfekt sein (Die deine natürlich schon... *hust*), aber viele Beiträge mit Vorschlägen können durch Community verbessert werden und führen letztendlich zum richtigen Ergebnis.
Ich habe nie behauptet immer Recht zu haben, wenn dir das natürlich so vor kommt kann ich daran auch nichts ändern :p Ich verhandle halt nur nicht mit Hilfesuchenden, ich geb eine Problemlösung an und erwartet dann weitere Nachfragen oder betrachte das Problem als gelöst, wenn auf meine bitte eines Serverlogs 2 weitere Seiten Diskussion mit dem Nutzer folgen der aus irgendwelchen Gründen kein Serverlog hat und in denen andere orakeln wo nun das Problem liegen könnte, dann ignorier ich das halt. Kommt dabei natürlich am Ende eine total falsche Lösung raus dann misch ich mich natürlich auch gerne wieder ein um die Widersprüchlichkeit der Lösungen zu zeigen.

Und wo soll ich da deiner Meinung nach anfangen?
  • Dass der TE equalsIgnoreCase verwendet und dabei aber "getPremium" schreibt, was in dem Zusammenhang unlogisch ist und impliziert dass die Schreibweise eben gerade nicht egal ist?
  • Dass der TE korrekt getServer() aus dem Pluginkontext verwendet aber den Konsolensender über das Serversingleton besorgt?
  • Dass der TE nicht die PEX API verwendet sondern den Befehl einfach an den Server sendet ohne mindestens zu prüfen ob PEX überhaupt installiert ist?
  • Dass der TE die Farbcodes direkt in die Nachricht schreibt anstelle die entsprechenden ChatColor Enums zu verwenden?
  • Das nach Konvention falsch benannte "Promote.Abtrennung", welches "Promote.ABTRENNUNG" heißen müsste sofern es eine statische finale Variable ist?
  • Dass der TE scheinbar eine komische Zeichenkodierung verwendet, da er das "ü" als "ue" kodiert hat?
  • Oder einfach nur der Schreibfehler in "Grueckwunsch"?
Und das war nur ein kleiner Teil des Codes vom TE, den Rest kenne ich nicht aber ich denk obige Liste lässt sich sicherlich um das 5-fache vergrößern.

Dazu kommt noch, dass du sogar in deiner eigenen Signatur auf Google hinweist und der Wunsch des TE ist nun wirklich kein Hexenwerk. Man sucht sich halt irgendeinen Beispielcode aus einem Plugin oder sonst woher der einen Befehl implementiert, der dann halt etwas mit einem anderen Spieler macht. Beispielsweise einen eigenen Kick Befehl oder Whisper. Gott, da gibts wirklich genug Möglichkeiten.

Ich mag deine Art nicht. Anstatt den Nutzern klar zu helfen versuchst du, einen mit deiner Ausdrucksweise zu beeindrucken. Meiner Meinung nach ist das eine Frechheit. Kritik mag ja schön und gut sein, aber ein bisschen Hilfsbereitschaft darf auch nicht fehlen.

Wenn du dich doch schon so fantastisch auskennst, kannst du uns allen sicher weiterhelfen...
Schreibt jemand der sogar das "[Dev]" Teil seines Nicknames gemacht hat um auf seine besondere Rolle hinzuweisen. Mein Beitrag enthielt den entscheidenden Hinweis der bei dir gefehlt hat, und wenn der TE nicht weiß wie er prüfen kann ob ein Array leer ist kann ich auch nicht mehr helfen, das ist das erste was man liest, wenn man sich über Arrays informiert und ich denk auch mal der TE weiß wie das geht. Von daher sehe ich leider nicht wo mein Beitrag nicht hilfreich war.

Der nächste findet diesen Beitrag mit Google oder über die Forensuche und übernimmt dann die fehlende Überprüfung der Parameter und hat dadurch dann halt vielleicht eine Sicherheitslücke in seinem Code oder wundert sich warum das hier scheinbar funktioniert hat und bei ihm nicht. Und wenn du mir ernsthaft erzählen willst, dass du vergisst die Größe eines Arrays zu überprüfen bevor du auf absolute Indizes zugreifst...

Ich möchte aber auch nicht weiter ins Off-Topic abschweifen, wenn der TE weitere Verbesserungsvorschläge sucht kann er sich meine Auflistung weiter oben ansehen und wenn ein Punkt unklar ist nachfragen. Ansonsten wurde die Frage hier ja beantwortet.
 
Zuletzt bearbeitet:
V

Verschraubt

Guest
Schreibt jemand der sogar das "[Dev]" Teil seines Nicknames gemacht hat
Warte schon lange darauf bis die 180 tage vorbei sind :) Name lässt sich vorher leider nicht ändern.

Das Forum ist auch für "Anfänger" (bezieht sich hier auf das Programmieren mit der Bukkit API oder generell mit Java) offen. Ich will darauf hinaus, dass die meisten User dem Beitrag Ersteller helfen wollen. Als "Profi" könntest du eigentlich jedem direkt weiterhelfen, aber du machst jegliche Verbesserungsvorschläge der Benutzer nieder und man könnte sagen, dass du manche User mit deinen provokativen Beiträgen beleidigst.
und das ist dann der Punkt an dem wir lieber erstmal Java lernen.

Beiträge dürfen durchaus mal fehlerhaft sein. Mit einer hilfsbereiten Community wird dem Beitrag Ersteller am Ende dann doch geholfen. Fast jeder Beitrag, den ich von dir sehe, greift aber die Personen an und provoziert sie.

Dieses Forum richtet sich vor allem an Minecraft Spieler. Minecraft richtet sich wiederum eher an die jüngere Generation. Ich glaube es wäre sinnvoller, Beiträge mit vielen Erklärungen und Beispielen zu erstellen, die dann für alle Beteiligten verständlich wären. Für manche Leute, die nur hier und da etwas kleine programmieren wollten sind solche Ausdrücke wie "
  • Dass der TE die Farbcodes direkt in die Nachricht schreibt anstelle die entsprechenden ChatColor Enums zu verwenden?
  • Das nach Konvention falsch benannte "Promote.Abtrennung", welches "Promote.ABTRENNUNG" heißen müsste sofern es eine statische finale Variable ist?
  • Dass der TE scheinbar eine komische Zeichenkodierung verwendet, da er das "ü" als "ue" kodiert hat?
Neuland.

Wenn du wirklich die Absicht hast, den Leuten zu helfen, dann bedenke doch bitte, deine Beiträge für möglichst viele verständlich zu gestalten.

Beste Grüße,
DasThema.
 
X

|| xX [DEV][LP] Ms. DivaCraft Xx ||

Guest
Es gibt eine Fachsprache nicht ohne Grund: Die Aussagen sind dadurch eindeutig und verständlich. Wer zu dämlich ist sich diese Anzueignen, wird auch keine Fähigkeiten besitzen programmieren zu können. - Wie ich schon öfters gesagt habe, ist das Kopieren von Dingen keine Eigenleistung. Von dem überprüfen des Indices (was nicht immer zwangsweise notwendig ist, dann fliegt halt mal eine IOOBE.* ) mal abgesehen sollte mal auch hingehen und den Spielernamen selber überprüfen.

* In einem - vom Nutzer - direkt manipulierbarem Kontext ist es jedoch sinnig dies zu überprüfen.
 
Oben