1. 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!

Gelöst [Bug/Error] Report-Nachricht wird mehrmals gesendet

Dieses Thema im Forum "Bungeecord" wurde erstellt von AvoPXL, 27. August 2016.

  1. AvoPXL
    Offline

    AvoPXL

    Registriert seit:
    14. Mai 2016
    Beiträge:
    28
    Heyho MCSEU-Community :)

    Ich wollte ein Report-Plugin für einen Server schreiben auf den man mit einen ClickEvent in GM3 gesetzt wird und zu den reporteten Spieler tp't wird.

    Nun ist der Bug dass die Report Nachricht mehrmals gesendet wird.
    Ich weis dass es an den "for(Player all : Bukkit.getServer().getOnlinePlayers()){..." liegt, nur weiss ich nicht wie ich das fixen kann.

    Code:
    Code (Text):
    1. package me.alphaavo.hemdreport;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.command.Command;
    5. import org.bukkit.command.CommandSender;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.plugin.java.JavaPlugin;
    8.  
    9. import net.md_5.bungee.api.chat.ClickEvent;
    10. import net.md_5.bungee.api.chat.ClickEvent.Action;
    11. import net.md_5.bungee.api.chat.TextComponent;
    12.  
    13. public class HemdReport extends JavaPlugin {
    14.  
    15.     @Override
    16.     public void onEnable() {
    17.  
    18.     }
    19.  
    20.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    21.         Player p = (Player) sender;
    22.         if (cmd.getName().equalsIgnoreCase("report")) {
    23.             if (args.length < 2) {
    24.                 p.sendMessage("§7[§4HemdReport§7] §c/report <Name> <Grund>");
    25.                 return true;
    26.             }
    27.             Player t = Bukkit.getServer().getPlayer(args[0]);
    28.             String reason = "";
    29.             for (int i = 1; i < args.length; i++) {
    30.                 reason += args[i] + " ";
    31.             }
    32.             if (t == null) {
    33.                 p.sendMessage("§7[§4HemdReport§7] §cDieser Spieler ist nicht online!");
    34.                 return true;
    35.             } else {
    36.                 for (Player all : Bukkit.getServer().getOnlinePlayers()) {
    37.                     if (all.hasPermission("hemdreport.getreports")) {
    38.                         report(p, t, all, reason);
    39.                     }
    40.                 }
    41.                 return true;
    42.             }
    43.         }
    44.         if (cmd.getName().equalsIgnoreCase("completereport")) {
    45.             if (p.hasPermission("hemdreport.getreports")) {
    46.                 if (args.length != 1) {
    47.                     p.sendMessage("§c/completereport <Name>");
    48.                     return true;
    49.                 }
    50.                 Player t = Bukkit.getServer().getPlayer(args[0]);
    51.                 if (t == null) {
    52.                     p.sendMessage("§cDieser Spieler ist nicht (mehr) online!");
    53.                     return true;
    54.                 } else {
    55.                     getServer().dispatchCommand(getServer().getConsoleSender(), "gamemode 3 " + p.getName());
    56.                     getServer().dispatchCommand(getServer().getConsoleSender(),
    57.                             "tp " + p.getName() + " " + t.getName());
    58.                     return true;
    59.                 }
    60.             }
    61.         }
    62.         return true;
    63.     }
    64.  
    65.     public void report(Player p, Player t, Player all, String reason) {
    66.         Bukkit.getServer().broadcastMessage("§6§m-------§c HemdMann §6§m-------");
    67.         Bukkit.getServer().broadcastMessage("§2Spieler: §c" + t.getName());
    68.         Bukkit.getServer().broadcastMessage("§2Reporter: §a" + p.getName());
    69.         Bukkit.getServer().broadcastMessage("§4Grund: §c" + reason);
    70.         TextComponent click = new TextComponent(" §4§lKlicke hier ");
    71.         click.setClickEvent(new ClickEvent(Action.RUN_COMMAND, "/completereport " + t.getName()));
    72.         TextComponent msg = new TextComponent("§c-->");
    73.         TextComponent msg2 = new TextComponent("§c<--");
    74.         msg.addExtra(click);
    75.         msg.addExtra(msg2);
    76.         all.spigot().sendMessage(msg);
    77.         Bukkit.getServer().broadcastMessage("§6§m-------§c HemdMann §6§m-------");
    78.     }
    79.  
    80. }
    81.  
    Danke für jegliche Hilfe.

    Grüße
     
    #1
  2. Werbung
    Online

    Werbung

  3. Shio
    Offline

    Shio

    Registriert seit:
    6. Februar 2016
    Beiträge:
    11
    Ich würde sagen du solltest in deiner Methode anstatt Broadcast überall all.sendmessage () benutzen

    Und ganz nebenbei ist all kein guter Name für einen Spieler.
    Und zudem würde ich auch nicht durch alle Spieler die online sind iterieren
    Sondern direkt auslesen welche Spieler diese Berechtigung haben und dann schauen ob diese online sind. Falls ja werden die dann informiert
     
    #2
    • Gefällt mir Gefällt mir x 1
  4. AvoPXL
    Offline

    AvoPXL

    Registriert seit:
    14. Mai 2016
    Beiträge:
    28
    Vielen Dank.

    Klappt perfekt :) Großen Dank!
     
    #3