all Online Players Permission test

Dieses Thema im Forum "Programmierung" wurde erstellt von McPlayHD, 16. Mai 2014.

  1. McPlayHD
    Offline

    McPlayHD

    Registriert seit:
    13. August 2013
    Beiträge:
    6
    Minecraft:
    McPlayHD
    Hallo zusammen.
    Ich bin ein Plugin am programmieren und hab ein Problem.
    An einem Ort soll getestet werden, ob alle Spieler, die momentan Online sind eine bestimmte Permission haben.
    Wisst ihr wie das geht also:
    Code (Text):
    1. if (allPlayers.havePermission("test.test")) {
    2.    p.sendMessage("Ja alle Spieler sind cool");
    3. }
     
    #1
  2. ¯\_(ツ)_/¯
    Offline

    ¯\_(ツ)_/¯

    Registriert seit:
    16. Mai 2014
    Beiträge:
    20
    Ort:
    ::1
    hi versuch das mal
    Code (Text):
    1.  
    2. public static boolean allHavePerm(String perm) {
    3.     boolean no = false;
    4.     Player[] onlinePlayers = Bukkit.getOnlinePlayers();
    5.     for (Player p : onlinePlayers) {
    6.         if (!p.hasPermission(perm)) {
    7.             no = true;
    8.         }
    9.     }
    10.     return !no;
    11. }
     
    #2
  3. Wofür so umständlich?

    Allein schon geht das so schneller, performanter und effektiver:

    Code (Text):
    1.  
    2. public static boolean allHavePerm(String perm) {
    3.     for (Player p : Bukkit.getOnlinePlayers()) {
    4.         if (!p.hasPermission(perm)) {
    5.             return true;
    6.         }
    7.     }
    8.     return false;
    9. }
    10.  
    Dies ist i.m.O. besser:

    Code (Text):
    1.  
    2. public boolean checkPermissions(String perm) {
    3.   for(Player p:Bukkit.getOnlinePlayers()) {
    4.     Preconditions.checkArgument(p.hasPermission(perm), "Player %s lacks Permission", p.getName);
    5.   }
    6. }
    7.  
    Das ganze wirft dann eine IllegalArgumentException, wenn ein Spieler die Berechtigung nicht hat.
     
    #3