ServerPlugin Problem mit Permissions

Dieses Thema im Forum "Programmierung" wurde erstellt von MrBapf, 26. August 2014.

  1. MrBapf
    Offline

    MrBapf

    Registriert seit:
    7. März 2012
    Beiträge:
    79
    Hi,
    ich hab eine JumpnRun Plugin geschrieben, wenn jemand einen Befehl vom Plugin ausführt bekommt er das er keine Rechte hat und der Befehl wird ausgeführt. Jetzt würde ich gerne wegmachen, dass man bekommt das man angeblich keine Rechte hat obwohl man Rechte hat. Als Permissions Plugin nutze ich PerimmisionsEx.
    Als Beispiel wie mein Code aussieht ist hier der Code vom TP befehl mit dem man sich zu einem JumpnRun tp kann.
    Denn Befehl gibt es 2 mal in der Klasse einmal wenn er keinen Namen angegaben hat und einmal normal:
    Ohne Name:
    Code (Text):
    1. //tp
    2.                 if(args[0].equalsIgnoreCase("tp")){
    3.                     if(p.hasPermission("Jumping.tp")){
    4.                         p.sendMessage("§cFehler: §c/jumping tp <JumpnRun>");
    5.                     }else{
    6.                         p.sendMessage(plugin.noperm);
    7.                     }
    8.                 }
    Mit Name:
    Code (Text):
    1. //tp
    2.                     if(args[0].equalsIgnoreCase("tp")){
    3.                         if(p.hasPermission("Jumping.tp")){
    4.                             try{
    5.                                 String world = cfg.getString("JumpnRuns." + args[1] + ".World");
    6.                                 double x = cfg.getDouble("JumpnRuns." + args[1] + ".PosX");
    7.                                 double y = cfg.getDouble("JumpnRuns." + args[1] + ".PosY");
    8.                                 double z = cfg.getDouble("JumpnRuns." + args[1] + ".PosZ");
    9.                                 double yaw = cfg.getDouble("JumpnRuns." + args[1] + ".PosYam");
    10.                                 double pitch = cfg.getDouble("JumpnRuns." + args[1] + ".PosPitch");
    11.                                 Location loc = new Location(Bukkit.getWorld(world), x, y, z);
    12.                                 loc.setPitch((float)pitch);
    13.                                 loc.setYaw((float)yaw);
    14.                                
    15.                                 p.teleport(loc);
    16.                                
    17.                                 p.sendMessage(this.plugin.prefix + "§7Du hast dich zum §8" + args[1] + " §7teleportiert!");
    18.                               }catch(Exception e){
    19.                                   p.sendMessage(this.plugin.prefix + "§cFehler: Dieses JumpnRun gibt es nicht!");
    20.                               }
    21.                         }else{
    22.                             p.sendMessage(plugin.noperm);
    23.                         }
    24.                     }
    Hoffe das mir einer weiterhelfen kann.

    MFG bapf.
     
    #1
  2. _Baum_
    Offline

    _Baum_

    Registriert seit:
    4. August 2013
    Beiträge:
    66
    Minecraft:
    PlueschAffe
    Hallo Bapf,

    kannst du bitte die Frage neu formulieren, ich blick dein Problem irgendwie nicht :D

    Wenn man "/<cmd> tp args[1]" schreibt, wird man zum Jump 'n Run args[1] geportet. Aber was hat das mit Permissions zu tun?

    MfG
    Baum
     
    #2
  3. MrBapf
    Offline

    MrBapf

    Registriert seit:
    7. März 2012
    Beiträge:
    79
    #3
  4. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Bitte die komplette Klasse...
     
    #4
  5. MrBapf
    Offline

    MrBapf

    Registriert seit:
    7. März 2012
    Beiträge:
    79
    #5
  6. games6471
    Online

    games6471

    Du solltest wirklich unbedingt dein Programmcode mal aufräumen, dann lassen sich solche Fehler auch leichter vermeiden. Eclipse, IntelliJ sowie Netbeans (bestimmt auch noch viele weitere), alle drei haben eingebaute automatische Formatierer. Desweiteren können dir diese IDEs auch anzeigen, wo ein Block ({ + }) anfängt und endet.

    Du hattest eine falsche Einrückung verwendet, weshalb dir der Fehler wohl nicht sofort aufgefallen ist.

    Zeile 205:
    Code (Text):
    1.                 if (args[0].equalsIgnoreCase("jumpnruns")) {
    2.                     if (p.hasPermission("Jumping.jumpnruns")) {
    3.                         ....
    4.                     }
    5.  
    6.                 } else {
    7.                     p.sendMessage(plugin.noperm);
    8.                 }
     
    #6
  7. MrBapf
    Offline

    MrBapf

    Registriert seit:
    7. März 2012
    Beiträge:
    79
    @games6471
    Hab gerade mal nach geschaut und bei "/jumping jumpnruns" war es wirklich falsch aber bei den anderen nicht und ich verstehe nicht wieso ich trotzdem eine Meldung bekomme.
    MFG bapf
     
    #7
  8. games6471
    Online

    games6471

    Du beendest nicht die Methodenausführung mit return, sondern machst einfach weiter. So kommt also die zweite Meldung zustande.

    Bisher war es, dass wenn der Command nicht übereinstimmt die Permission-Message zurückgegeben wird.
     
    #8
  9. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Ich finde auch, dass man nicht zwingen den Command splitten muss, frag doch am Anfang mal die Anzahl der Argumente ab. Wenn diese übereinstimmt führe einen Teil aus, und wenn nicht den anderen.
     
    #9