Spigot Plugin Befehle einfügen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • 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

    Ihr könnt nicht den Gerechten vom Ungerechten trennen und nicht den Guten vom Bösen, denn sie stehen zusammen vor dem Angesicht der Sonne, wie der schwarze und der weiße Faden zusammengewoben sind.

    ~„Der Prophet“ von Khalil Gibran

  • 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).

    Hochachtungsvoll

    Seine Exzellenz und Spektabilität Starjon aus dem Haus der Irren, Herr der Endlosschleifen und zu vielen Informationen, Verstörer der Welten, Geiler Gayrald, Rattiger Rammler, Erhabener Nerd, Dekan der Dekadenz, Titan der Tauotologien, Admin von Notches Gnaden und Generalsekretär der Bartei für Arbeitslosigkeit, Meinungsmache, Baumkuchen und Undemokratischen Sozialismus. Lang möge er programmieren!

  • danke für die schnelle Antwort :D
    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

    Ihr könnt nicht den Gerechten vom Ungerechten trennen und nicht den Guten vom Bösen, denn sie stehen zusammen vor dem Angesicht der Sonne, wie der schwarze und der weiße Faden zusammengewoben sind.

    ~„Der Prophet“ von Khalil Gibran

    3 Mal editiert, zuletzt von EmSiMa (8. Februar 2018 um 18:40)

  • Du musst das in deiner plugin.yml in "mcpl" ändern, wo im moment "mcpl info" steht.

    Wenige sind imstande, von den Vorurteilen der Umgebung abweichende Meinungen gelassen auszusprechen; die Meisten sind sogar unfähig, überhaupt zu solchen Meinungen zu gelangen. (Albert Einstein)

    Niemand ist mehr Sklave, als der sich für frei hält, ohne es zu sein. (Johann Wolfgang von Goethe)

    Replace Fear of The Unknown With Curiosity

  • 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

    Ihr könnt nicht den Gerechten vom Ungerechten trennen und nicht den Guten vom Bösen, denn sie stehen zusammen vor dem Angesicht der Sonne, wie der schwarze und der weiße Faden zusammengewoben sind.

    ~„Der Prophet“ von Khalil Gibran

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

    Hochachtungsvoll

    Seine Exzellenz und Spektabilität Starjon aus dem Haus der Irren, Herr der Endlosschleifen und zu vielen Informationen, Verstörer der Welten, Geiler Gayrald, Rattiger Rammler, Erhabener Nerd, Dekan der Dekadenz, Titan der Tauotologien, Admin von Notches Gnaden und Generalsekretär der Bartei für Arbeitslosigkeit, Meinungsmache, Baumkuchen und Undemokratischen Sozialismus. Lang möge er programmieren!

  • 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

    Ihr könnt nicht den Gerechten vom Ungerechten trennen und nicht den Guten vom Bösen, denn sie stehen zusammen vor dem Angesicht der Sonne, wie der schwarze und der weiße Faden zusammengewoben sind.

    ~„Der Prophet“ von Khalil Gibran

  • Stimmt. Ignoriere meine Anmerkung.

    Hochachtungsvoll

    Seine Exzellenz und Spektabilität Starjon aus dem Haus der Irren, Herr der Endlosschleifen und zu vielen Informationen, Verstörer der Welten, Geiler Gayrald, Rattiger Rammler, Erhabener Nerd, Dekan der Dekadenz, Titan der Tauotologien, Admin von Notches Gnaden und Generalsekretär der Bartei für Arbeitslosigkeit, Meinungsmache, Baumkuchen und Undemokratischen Sozialismus. Lang möge er programmieren!

  • Hey,
    ich habe jetzt mal in einem deutschsprachigen Spigot-Plugin-Forum versucht, Hilfe zu bekommen, aber irgendwie antwortet mir keiner :(


    Also 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
    Code
    package 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
    Code
    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.");								          }								        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


    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

    Ihr könnt nicht den Gerechten vom Ungerechten trennen und nicht den Guten vom Bösen, denn sie stehen zusammen vor dem Angesicht der Sonne, wie der schwarze und der weiße Faden zusammengewoben sind.

    ~„Der Prophet“ von Khalil Gibran