String Übergabe

Dieses Thema im Forum "Programmierung" wurde erstellt von MrPyro13, 8. August 2014.

  1. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    [JAVA] String Übergabe

    Hallo Community,

    ich bin gerade dabei, einen /kick Command zu erstellen. Jedoch möchte ich, dass bei einem Kick die Kick-Leave-Message den String Grund enthält, den ich in der Kick-Command Class erstellt habe.
    Meine Frage: Wie übergebe ich den String grund (in der Kick-Command Class) an die Kick-Leave-Message (in der Kick-Leave-Listener Class)

    Freue mich über helfende Antworten
    MfG MrPyro13
     
    #1
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Welche Nachricht meinst du? Die an den Spieler oder an alle anderen Spieler, die online sind?

    Die Nachricht an den gekickten Spieler kannst du bei Player#kickPlayer(String nachricht) übergeben.
     
    #2
  3. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Es gibt im Playerobjekt die Methode .kickPlayer(String string); Der String ist der Grund, warum er gekickt wurde.

    Wenn du die Nachricht ganz unterdrücken willst und eine völlig eigene machen willst, setzt du die KickMessage im Event auf "null" und broadcastest als Grund einfach alles, was du beim Befehl ab dem nullten Argument eingegeben hast. Das kannst du dir beim Command mit einer For-Scleife einlesen.
     
    #3
  4. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Ich möchte, dass dann da steht:
     
    #4
  5. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Dann musst du meine zweite Methode anwenden:

    1. Kick -> alle automessages auf null
    2. Beim KickCommand
      1. Den Spielername aus args[0] nehmen
      2. Alle Argumente ab args[1] mit einer forschleife einlesen und verknüpfen
      3. Das ganze Broadcasten
     
    #5
  6. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Okay. Funktioniert! Nur gibt es nun folgendes Problem:
    Es wird die (Listener)Quit Message und die (Broadcast)KickQuit Message angezeigt (Beides).
    Der Listener mit dem PlayKickEvent funktioniert nicht bzw. es erscheint keine Message (zum Test mal durchgeführt, ob überhaupt eine Messageänderung erfolgt)

    CommandExecutor:
    Code (Text):
    1.  
    2. package de.mrpyro13.ImpComs;
    3.  
    4. import org.bukkit.Bukkit;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandExecutor;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.entity.Player;
    9.  
    10. public class iKick_Command implements CommandExecutor{
    11.  
    12.     @Override
    13.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    14.         //SCRIPT ANFANG
    15.         if (sender.hasPermission("ImpComs.ikick")) {
    16.             if (args.length >= 2) {        
    17.                 Player p;
    18.                 p = Bukkit.getPlayer(args[0]);
    19.                 if (p != null) {
    20.                     if (p != sender) {
    21.                             String msg = "§6[ImpComs] §aDu hast §l" + p.getName() + " §agekickt! Grund: §a";
    22.                             String grund = "";
    23.                             for (int i = 1; i < args.length; i++) {
    24.                                 grund += args[i] + " ";
    25.                             }
    26.                             sender.sendMessage(msg + grund);
    27.                             p.kickPlayer("§6[ImpComs] §cDu wurdest von §l" + sender.getName() + " §cgekickt!\nGrund: §a" + grund);
    28.                             Bukkit.broadcastMessage("§6[§4§l-§6] §7" + p.getDisplayName() + " §7wurde gekickt! Grund: " + grund);
    29.                             return true;
    30.                     } else {
    31.                         sender.sendMessage("§6[ImpComs] §cDu kannst dich nicht selber kicken!");
    32.                         return true;
    33.                     }
    34.                 } else {
    35.                     sender.sendMessage("§6[ImpComs] §c§l " + args[0] + " §cist nicht online! Du kannst nur Spieler kicken, die online sind");
    36.                     return true;
    37.                 }
    38.             } else {
    39.                 sender.sendMessage("§6[ImpComs] §c" + "Bitte nutze /ikick <Spieler> <Grund>");
    40.                 return true;
    41.             }
    42.         } else {
    43.             sender.sendMessage("§6[ImpComs] " + "§cKeine Permission!");
    44.             return true;
    45.            
    46.         }
    47.         //SCIRPT ENDE
    48.     }
    49.  
    50. }
    51.  

    QuitMessage-Listener:
    Code (Text):
    1.  
    2. package de.mrpyro13.ImpComs;
    3.  
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.EventHandler;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.event.player.PlayerQuitEvent;
    8.  
    9. public class Listener_QuitMessage implements Listener {
    10.    
    11.     public Listener_QuitMessage(Main plugin) {
    12.         plugin.getServer().getPluginManager().registerEvents(this, plugin);
    13.     }
    14.    
    15.     @EventHandler
    16.     public void onPlayerQuitEven(PlayerQuitEvent ev) {
    17.         Player p = ev.getPlayer();
    18.         ev.setQuitMessage("§6[§4§l-§6] §7" + p.getDisplayName() + " §7hat den Server verlassen");
    19.     }
    20.  
    21. }
    22.  
    23.  

    KickQuitMessage-Listener:
    Code (Text):
    1.  
    2. package de.mrpyro13.ImpComs;
    3.  
    4. import org.bukkit.event.EventHandler;
    5. import org.bukkit.event.Listener;
    6. import org.bukkit.event.player.PlayerKickEvent;
    7.  
    8. public class Listener_KickQuitMessage implements Listener {
    9.        
    10.         public Listener_KickQuitMessage(Main plugin) {
    11.                 plugin.getServer().getPluginManager().registerEvents(this, plugin);
    12.         }
    13.        
    14.         @EventHandler
    15.         public void onPlayerKickEven(PlayerKickEvent ev) {
    16.             ev.setLeaveMessage("Kick Event eingetreten");
    17.         }
    18.  
    19. }
    20.  
    21.  

    Evtl. Main:
    Code (Text):
    1.  
    2. package de.mrpyro13.ImpComs;
    3.  
    4. import org.bukkit.plugin.java.JavaPlugin;
    5.  
    6. public class Main extends JavaPlugin {
    7.    
    8.     @Override
    9.     public void onDisable() {
    10.         System.out.println("ImpComs wurde beendet!");
    11.     }
    12.  
    13.     @Override
    14.     public void onEnable() {
    15.         System.out.println("ImpComs wurde gestartet!");
    16.        
    17.         //Command Imports
    18.         this.getCommand("iheal").setExecutor(new iHeal_Command());
    19.         this.getCommand("igm").setExecutor(new iGm_Command());
    20.         this.getCommand("ihelp").setExecutor(new iHelp_Command());
    21.         this.getCommand("ibroadcast").setExecutor(new iBroadcast_Command());
    22.         this.getCommand("ikick").setExecutor(new iKick_Command());
    23.        
    24.         //Listener Imports
    25.         new Listener_JoinMessage(this);
    26.         new Listener_QuitMessage(this);
    27.         new Listener_PvP(this);
    28.         new Listener_KickQuitMessage(this);
    29.     }
    30.  
    31. }
    32.  
    33.  

    //Habs mit Hilfe hinbekommen! Thread kann geschlossen werden!
     
    #6