Hey,
da mir es zu langweilig wurde, immer nur in Command Blocks irgendwas einzutippen, dachte ich mir, dass ich mir mal Java anschaue, um irgendwann dann mal Plugins (für einen Spigot-Server) zu schreiben, einfach mal zum ausprobieren.
Jetzt habe ich mein erstes Test-Plugin fertig, aber irgendwie funktioniert der zweite Command nicht. Der erste ist einfach /tick, und dann kommt auch (so wie ich will), [MCPL] tack zurück. Aber beim zweiten (mcpl info) sagt der Server nur "unknown command...".
In die Plugin.yml habe ich den Befehl eingetragen, und wenn ich versuche, mit tab den Befehl in der Konsole zu vervollständigen, funktioniert das auch. Was habe ich falsch gemacht? Ich vermute ja was bei diesem if...else, aber ich habe keine Ahnung wo.
Das Spigot-Forum ist meines Wissens nach Englisch, kennt jemand ein deutschsprachiges Forum, welches für solche Fragen da ist (nicht gutefrage.net)?
MfG
EmSiMa
Bildschirmfoto 2018-02-08 um 15.45.59.pngBildschirmfoto 2018-02-08 um 15.46.46.png
Bildschirmfoto 2018-02-08 um 15.47.23.png
Spigot Plugin Befehle einfügen
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!
-
-
Der Command muss mcpl heißen, das info findest du dann als args[0] wieder. Der eingegebene Befehl wird an den Leerzeichen zerschnitten. Der erste Teil ist dann cmd.getName(), der Rest wird args (also mehrere Strings hintereinander).
-
danke für die schnelle Antwort
ich habe jetzt einfach if (args[0].equalsIgnoreCase("info")) hinten angefügt, aber geändert hat sich nichts. Habe ich was falsch gemacht oder was falsch verstanden?
MfG
Bildschirmfoto 2018-02-08 um 18.35.15.png -
Du musst das in deiner plugin.yml in "mcpl" ändern, wo im moment "mcpl info" steht.
-
danke für eure Hilfe
Bildschirmfoto 2018-02-08 um 18.45.14.png -
jetzt habe ich noch ein bisschen weiter geschrieben, aber irgendwie schaffe ich es nicht, ein "target" zu definieren.
Bildschirmfoto 2018-02-08 um 20.27.12.png
Wie kann ich jetzt sagen, dass das zweite Argument die Zielauswahl sein soll?
MfG -
Bukkit.getPlayer(args[1]); // args[1] ist der zweite Parameter, der erste wäre args[0].
Du solltest aber noch überprüfen, ob target evtl. null ist. -
Also ich habe ja für args[0] das burn und dann müsste args[1] ja für das Target / den Spieler stimmen oder?
oder habe ich das falsch verstanden -
Stimmt. Ignoriere meine Anmerkung.
-
Hey,
ich habe jetzt mal in einem deutschsprachigen Spigot-Plugin-Forum versucht, Hilfe zu bekommen, aber irgendwie antwortet mir keinerAlso das hier funktioniert nicht. Die Nachricht sch + scs_noperm (Zeile 66) wird immer angezeigt, bei jedem Befehl. Ich möchte aber, dass die Nachricht nur nach dem Befehl /scs burn und /scs kick kommt, wenn der Spieler kein Operator ist.
Spoiler anzeigen
Codepackage de.spigotcoresystems.main;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.entity.Player;import org.bukkit.plugin.java.JavaPlugin;import org.bukkit.Bukkit;import org.bukkit.ChatColor;public class Main extends JavaPlugin{ public String scs = "[" + ChatColor.DARK_RED + "SCS" + ChatColor.WHITE + "] "; public String scs_noperm = ChatColor.DARK_RED + "Du hast keinen Zugriff auf diesen Befehl."; public void onEnable() { System.out.println(ChatColor.GOLD + "Das Plugin wurde gestartet."); } public void onDisable() { System.out.println(ChatColor.GOLD + "Das Plugin wurde deaktiviert."); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (cmd.getName().equalsIgnoreCase("tick")) { sender.sendMessage(scs + ChatColor.GOLD + "tack"); } else { if (cmd.getName().equalsIgnoreCase("scs")) if (args[0].equalsIgnoreCase("info")) { sender.sendMessage(scs + ChatColor.GOLD + "SpigotCoreSystems Version 1.0, by EmSiMa."); } else { if (cmd.getName().equalsIgnoreCase("scs")) if (args[0].equalsIgnoreCase("myname")) { sender.sendMessage(scs + ChatColor.AQUA + sender.getName() + ChatColor.GOLD + " ist dein Name."); } else { if (cmd.getName().equalsIgnoreCase("scs")) if (args[0].equalsIgnoreCase("kick")) if (sender.isOp()) { Player target = Bukkit.getPlayer(args[1]); target.kickPlayer(ChatColor.DARK_RED + "Du wurdest gekickt."); } else { if (cmd.getName().equalsIgnoreCase("scs")) if (args[0].equalsIgnoreCase("burn")) if (sender.isOp()) { Player target = Bukkit.getPlayer(args[1]); target.setFireTicks(10000); sender.sendMessage(scs + ChatColor.GOLD + "Du hast den Spieler " + ChatColor.DARK_AQUA + target.getName() + ChatColor.GOLD + " in Brand gesetzt."); } } } } } sender.sendMessage(scs + scs_noperm); return true; }}
Das hier geht genauso wenig. Wenn ich das versuche, geht /scs burn und /scs kick nicht.Spoiler anzeigen
Codeelse { if (cmd.getName().equalsIgnoreCase("scs")) if (args[0].equalsIgnoreCase("kick")) if (sender.isOp()) { Player target = Bukkit.getPlayer(args[1]); target.kickPlayer(ChatColor.DARK_RED + "Du wurdest gekickt."); } else { if (cmd.getName().equalsIgnoreCase("scs")) if (args[0].equalsIgnoreCase("burn")) if (sender.isOp()) { Player target = Bukkit.getPlayer(args[1]); target.setFireTicks(10000); sender.sendMessage(scs + ChatColor.GOLD + "Du hast den Spieler " + ChatColor.DARK_AQUA + target.getName() + ChatColor.GOLD + " in Brand gesetzt."); } else { sender.sendMessage(scs + scs_noperm); } } } } } return true; }}
Das hier geht genauso wenig. Wenn ich das versuche, geht /scs burn und /scs kick nicht.
bei dieser Variante funktioniert zwar /scs kick ( auch die no_perm-Nachricht), aber /scs burn überhaupt nicht.Spoiler anzeigen
Code
Alles anzeigenelse { if (cmd.getName().equalsIgnoreCase("scs")) if (args[0].equalsIgnoreCase("kick")) if (sender.isOp()) { Player target = Bukkit.getPlayer(args[1]); target.kickPlayer(ChatColor.DARK_RED + "Du wurdest gekickt."); } else { sender.sendMessage(scs + scs_noperm); if (cmd.getName().equalsIgnoreCase("scs")) if (args[0].equalsIgnoreCase("burn")) if (sender.isOp()) { Player target = Bukkit.getPlayer(args[1]); target.setFireTicks(10000); sender.sendMessage(scs + ChatColor.GOLD + "Du hast den Spieler " + ChatColor.DARK_AQUA + target.getName() + ChatColor.GOLD + " in Brand gesetzt."); } } } } } return true; } }
Kennt jemand die Lösung?
ohne diese Beschränkung isOp geht alles problemlos, aber die soll halt mit rein und auch diese Nachricht sender.sendMessage(scs + scs_noperm)
MfG
EmSiMa