2016-03-25 9 views
0

Küçük İzinler eklentisi gibi bir şey oluşturmaya çalıştım ama sorunum, örneğin Oyuncuya nasıl izin verileceğini bilmememdir. Örneğin, İzinler aplugin.chat ve aplugin.color Ona sadece izin verdikten sonra aplugin.*. Tabii ki izin kayıtlıdır ve Bukkit.getPluginManager().getPermissions() dan her izin kontrol edebilir. Kayıtlı değilse nasıl çözebilirim? BungeeCord'da gerekli İzni görebileceğim bir Olay var, fakat Spigot/Bukkit'te mi? İşteİzinler oluşturma eklentisi (aplugin. *) - Spigot/Bukkit - Java

izinlerini ayarlamak için kod benim yeni sürümüdür:

// setPerms 
public static void setPerms(Player p) { 
    try { 
     PreparedStatement ps = MySQL.getConnection() 
       .prepareStatement("SELECT Permission FROM Permissions WHERE Gruppe = ?"); 
     ps.setString(1, User.getPermGroup(p.getName())); 
     ResultSet rs = ps.executeQuery(); 
     PermissionAttachment pa; 
     if (main.perms.containsKey(p.getName())) { 
      pa = main.perms.get(p.getName()); 
     } else { 
      pa = p.addAttachment(plugin); 
     } 
     while (rs.next() == true) { 
      String perm = rs.getString("Permission"); 
      boolean value = true; 
      if (perm.startsWith("-")) { 
       perm = perm.substring(1); 
       value = false; 
      } 
      if (perm.endsWith("*")) { 
       if (perm.equals("*")) { 
        for (Permission pe : Bukkit.getPluginManager().getPermissions()) { 
         pa.setPermission(pe, value); 
        } 
        pa.setPermission(perm, value); 
       } else { 
        String search = perm.substring(0, perm.length() - 1); 
        for (Permission pe : Bukkit.getPluginManager().getPermissions()) { 
         if (pe.getName().startsWith(search)) { 
          pa.setPermission(pe, value); 
         } 
        } 
        pa.setPermission(perm, value); 
       } 
      } 
      pa.setPermission(perm, value); 
     } 
     main.perms.replace(p.getName(), pa); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 

Yardımlarınız ve benim kötü İngilizce için özür için teşekkürler;)

+1

Bunu çözemezsiniz, bukkits izin modeli, bu eklentilerin bir iznini kaydetmesini temel alır ve bu iznin çocuk sahibi olması gerekir. Kayıp yıldız için kendi sisteminizi oluşturuyorsanız, bazı eklentiler hata verecektir – Ferrybig

+0

Tamam: Teşekkürler :) – Nightfighter001

+0

Sadece bir soru: PermissionsEx gibi eklentiler için nasıl mümkün olabilir? – Nightfighter001

cevap

1
Sen geçersiz kılarak bu '*' izni oluşturabilir

izin denetler. Info(Click me)

PermissionBase, hasPermission yöntemlerini geçersiz kılan PermissibleBase'i genişleten sınıfınızdır.

Herhangi bir oyuncunun PermissibleBase değerini ayarlamak için iş parçasındaki yansımayı kullanın, böylece bukkit'in izinlerini geçersiz kılmanıza izin verir.

Bu, diğer tüm eklentilerin PermissionBase (veya adınız ne olursa olsun) sınıfınızda aynı kuralları izleyeceği anlamına gelen bukkit'i geçersiz kılacaktır.için

'eklentisi. *'>

bir 'eklentisi yaratmak. 'izninin tüm iznini almanız gerekecek' plugin 'sadece kontrol edilen izin söz konusu eklenti olduğunda erişim izni vermek ve söz konusu kullanıcının' eklentisine izin var '. '.

Bu, SADECE sisteminizin söz konusu izninin eklenti izni olduğunu bildiği ve kullanıcının eklenti iznine ('eklenti. *') Erişmesine izin verdiyse SADECE tüm eklenti iznine izin verir. ne.

+0

Çok iyi çalışıyor <3 Ben şimdi benim gülümsememin yüzüm için çok büyük olduğunu düşünüyorum D – Nightfighter001

+0

@ Nightfighter001 Oh, ben bunu anladım kendimden. HAYIR bir bana bir bekçi verdi Sadece yansımayı kullanmaktan ve bir fikir ortaya atmaktan hoşlandım. _My yüzüm sadece gülüşüme uyacak şekilde genişledi; -; _ – Lightspeed360

+1

@ Nightfighter001 1.9'da oyuncuya mantık eklemek için böyle bir şey yapmayı planlıyorum. Bu yüzden parkour veya başka bir şey için devre dışı bırakmanız gerekiyorsa zaten gelmeye çalışıyorum bir fikirle. – Lightspeed360