ServerPlugin Command ausführen

Dieses Thema im Forum "Programmierung" wurde erstellt von felunka, 10. Juni 2015.

  1. felunka
    Offline

    felunka

    Registriert seit:
    26. Dezember 2014
    Beiträge:
    57
    Minecraft:
    felunka
    Hi!
    Ich habe folgenden Ansatz:
    Code (Text):
    1.  
    2. package bungeehandler;
    3.  
    4. import org.bukkit.Bukkit;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.plugin.java.JavaPlugin;
    9.  
    10. public class bungeehandler extends JavaPlugin{
    11.     public void onEnable(){
    12.         System.out.println("[Bungeehandler] wird gestartet!");
    13.     }
    14.    
    15.     public void onDisable(){
    16.         System.out.println("[Bungeehandler] wird gestoppt!");
    17.     }
    18.    
    19.     public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
    20.         if ( sender instanceof Player )
    21.         {
    22.             Player p = (Player) sender;
    23.             if ( cmd.getName().equalsIgnoreCase("play"))
    24.             {
    25.                 if (p.hasPermission("bungeehandler.player"))
    26.                 {
    27.                     if ( args.length == 0)
    28.                     {
    29.                         p.sendMessage("§eBitte gib ein Spiel ein das du Spielen möchtest!");
    30.                     }
    31.                     else
    32.                     {
    33.                         p.dispatchCommand("server " + args[0]);
    34.                     }
    35.                 }
    36.                 return true;
    37.             }
    38.             else
    39.             {
    40.                 return false;
    41.             }
    42.         }
    43.         else
    44.         {
    45.             System.out.println("[Bungeehandler] Dieser Befehl ist nur für Spieler!");
    46.         }
    47.     }
    48.  
    49. }
    50.  
    Wieso ist in Eclipse meine Zeile 32 rot bei "dispatchCommand" mit der Beründung: "The method dispatchCommand(String) is undefined for the type Player"???
     
    #1
  2. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    1. heißt die Methode performCommand und
    2. kannst du aus Bukkit keine BungeeCordCommands ausführen!
     
    #2
  3. felunka
    Offline

    felunka

    Registriert seit:
    26. Dezember 2014
    Beiträge:
    57
    Minecraft:
    felunka
    warum? ich kann doch auch im chat /server machen :O

    EDIT:
    performCommand geht aber du hast recht es kommt "Diesen Befehl gibt es nicht!"
    gibt es da ne andere möglichkeit?
     
    #3
  4. felunka
    Offline

    felunka

    Registriert seit:
    26. Dezember 2014
    Beiträge:
    57
    Minecraft:
    felunka
    ich hab was gefunden!
    Code (Text):
    1.  
    2. package bungeehandler;
    3.  
    4. import java.io.ByteArrayOutputStream;
    5. import java.io.DataOutputStream;
    6. import java.io.IOException;
    7.  
    8. import org.bukkit.Bukkit;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. public class bungeehandler extends JavaPlugin{
    15.     public void onEnable(){
    16.         System.out.println("[Bungeehandler] wird gestartet!");
    17.         Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
    18.         System.out.println("[Bungeehandler] Outgoing Plugin Channel Registriert!");
    19.     }
    20.    
    21.     public void onDisable(){
    22.         System.out.println("[Bungeehandler] wird gestoppt!");
    23.     }
    24.    
    25.     public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
    26.         if ( sender instanceof Player )
    27.         {
    28.             Player p = (Player) sender;
    29.             if ( cmd.getName().equalsIgnoreCase("play"))
    30.             {
    31.                 if (p.hasPermission("bungeehandler.player"))
    32.                 {
    33.                     if ( args.length == 0)
    34.                     {
    35.                         p.sendMessage("§eBitte gib ein Spiel ein das du Spielen möchtest!");
    36.                     }
    37.                     else
    38.                     {
    39.                         ByteArrayOutputStream b = new ByteArrayOutputStream();
    40.                         DataOutputStream out = new DataOutputStream(b);
    41.                                
    42.                         try {
    43.                             out.writeUTF("Connect");
    44.                             out.writeUTF(args[0]);
    45.                         } catch (IOException e) {
    46.                             p.sendMessage("Während der Teleportierung ist ein Fehler aufgetreten: " + e.getMessage());
    47.                         }
    48.                         p.sendPluginMessage(this, "BungeeCord", b.toByteArray());
    49.                         System.out.println("Spieler: " + p.getName() + " will sich zu: " + args[0] + " teleportieren!");
    50.                     }
    51.                 }
    52.                 return true;
    53.             }
    54.             else
    55.             {
    56.                 return false;
    57.             }
    58.         }
    59.         else
    60.         {
    61.             System.out.println("[Bungeehandler] Dieser Befehl ist nur für Spieler!");
    62.             return false;
    63.         }
    64.     }
    65.  
    66. }
    67.  
     
    #4
  5. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Exakt, aber blindlings args[0] in den Stream zu schreiben ist fragwürdig.
     
    #5
  6. felunka
    Offline

    felunka

    Registriert seit:
    26. Dezember 2014
    Beiträge:
    57
    Minecraft:
    felunka
    warum das? meinst du weil sich dann jeder spieler in jede welt teleportieren kann?
     
    #6
  7. Eisphoenix
    Offline

    Eisphoenix

    Registriert seit:
    9. Oktober 2014
    Beiträge:
    82
    Ort:
    Garmisch-Partenkirchen
    Minecraft:
    Eisphoenix
    Dir ist schon bewusst das es Server sind und keine Welten? ^•^
     
    #7
  8. felunka
    Offline

    felunka

    Registriert seit:
    26. Dezember 2014
    Beiträge:
    57
    Minecraft:
    felunka
    ja mein ich doch ^^
     
    #8
  9. felunka
    Offline

    felunka

    Registriert seit:
    26. Dezember 2014
    Beiträge:
    57
    Minecraft:
    felunka
    nein kann man nicht wegen bungeecord
     
    #9