创建权限插件 (aplugin.*) - Spigot/Bukkit - Java

Posted

技术标签:

【中文标题】创建权限插件 (aplugin.*) - Spigot/Bukkit - Java【英文标题】:Create Permissions plugin (aplugin.*) - Spigot/Bukkit - Java 【发布时间】:2016-03-25 20:50:59 【问题描述】:

我尝试创建一个类似 Permissions 插件的东西,但我的问题是我不知道如何给 Player 例如 Permissions aplugin.chataplugin.color 当我只给他 Permission aplugin.* .当然,如果注册了权限也没问题,我可以从Bukkit.getPluginManager().getPermissions()查看每个权限。如果没有注册怎么解决?在 BungeeCord 中有一个事件,我可以看到所需的权限,但在 Spigot/Bukkit 中?

这是我用于设置权限的最新版本代码:

// 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();
    

感谢您的帮助,并为我的英语不好感到抱歉;)

【问题讨论】:

你解决不了,bukkits权限模型是基于插件注册一个权限,该权限有子权限。如果你正在为丢失的星星组成自己的系统,一些插件会出错 好的 :/ 谢谢 :) 只有一个问题:像 PermissionsEx 这样的插件怎么可能? 他们使用Bukkit.getServer().getPluginManager().getPermissions() 【参考方案1】:

您可以通过覆盖权限检查来创建此“*”权限。 Info(Click me)

PermissionBase 是您的类,它扩展了覆盖 hasPermission 方法的 PermissibleBase。

只需使用线程中的反射将任何玩家的 PermissibleBase 设置为您的,从而允许您覆盖 bukkit 的权限检查。

这将覆盖 bukkit,这意味着所有其他插件都将遵循您的 PermissionBase(或任何您命名的)类中的相同规则。

对于 'plugin.*' >

要创建“插件。”权限,您必须获得所述“插件”的所有权限,仅当检查的权限在所述插件中并且所述用户具有“插件”权限时才启用访问权限。' .

仅当您的系统知道所说的权限是所说的插件权限并且用户有权访问所有插件权限('plugin.*')无论如何都允许访问时,这只会让用户访问所有插件权限.

【讨论】:

效果很好 @Nightfighter001 哦,当我自己弄清楚这一点时,我的也是。没有人给我一个我只是喜欢使用反射并想出一个想法的遮阳篷。 我的脸扩大到适合我的微笑;-; @Nightfighter001 我打算在 1.9 中为玩家推送添加逻辑,所以如果你需要为跑酷或某事禁用它,我已经在尝试提出一个想法。 @Nightfighter001 另外,请尝试将问题设置为接受所有我认为您最喜欢的问题。我有点卡住问题被禁止并试图离开。 ;C 我想也许现在我有一个小问题...这是我创建的课程,但 WorldEdit 不想再使用它...这是我的课程:pastebin.com/G0YnNP3g 什么我应该更改代码吗?

以上是关于创建权限插件 (aplugin.*) - Spigot/Bukkit - Java的主要内容,如果未能解决你的问题,请参考以下文章

plugins是啥意思

在wordpress数据库中是否有关于已安装插件的记录?

plugins是个啥文件夹?

Apache Pig如何与Apache Lucene集成?

在MyEclipse中的plugins是啥意思

weiphp 3.0创建插件提示错误解决办法 提示您没有创建目录写入权限,