• 因近日遭受攻击,百科现已限制新用户的编辑权限,一段时间后成为自动确认用户方可编辑。

Developing a permissions plugin

From Minecraft插件百科
Jump to: navigation, search

点击此处查看原文

引言

这篇教程将会带领你了解有关怎么基于新的BukkitPermissionsAPI给你插件创建权限。

前提

这篇教程需要你掌握很好的Java知识和一些插件开发知识。这篇教程只会涵盖有关Bukkit Permissions API的各种细节。

Permissible类

所有拥有权限集的类都必须继承自Permissible类。
目前这些只包含Player和CommandSender类,然而理论上任何事物都应该拥有“权限”。
在接下来的教程里我们将更多的提到玩家而不是permissible对象。

PermissionAttachments

PermissionAttachment是什么?


什么是PermissionAttachment?
“权限附属物”[PermissionAttachment]是插件管理玩家权限的一种手段,更胜一筹的是,它允许多插件管理玩家权限而不需要接口,除非它想要设置同样的权限。

怎样创建和移除它们


如何创建和移除一个PermissionAttachment
每一位玩家必须先被“附着”在插件上,这样才能使用他们。用如下代码来创建一个PermissionAttachment:

PermissionAttachment attachment = player.addAttachment(plugin);


你甚至可以创建一个仅仅只维持很短时间的attachment

PermissionAttachment attachment = player.addAttachment(plugin,ticks);


attachment需要被储存起来。最好的解决方案是用哈希表HashMap<UUID,PermissionAttachment> 来储存。用玩家的UniqueID作为键值。之后你就可以用玩家的UniqueID来管理指定玩家的权限了。 并且在不需要的时候移除它。移除attachment的地方最好是onPlayerQuit event, onPlayerKick event。并且总是在插件的onDisable中移除所有的attachment。使用下面的代码移除attachment:

player.removeAttachment(attachment);

配置权限


这有两种主要的方法去配置玩家的权限:

  1. 通过字符串。这大概是最简单的方法了,所以我最先解释它。
  2. 通过permission对象。这就有点复杂了,然而他内部的工作方式与第一个完全一样。所以我并不打算重温它。


想要设置玩家的权限你必须先获取之前通过哈希表创建的PermissionAttachment。一旦你取得了PermissionAttachment,你就可以通过一种简单的方式来设置权限。代码如下:

attachment.setPermission(permissionName,permissionValue);


permissionName是一个字符串,permissionValue则是布尔类型数据。之后你可以通过如下代码撤销一个玩家的权限(与将permissionValue设置成false不同):

attachment.unsetPermission(permissionName);


你希望撤销玩家权限的原因是你希望别的权限插件来设置它。

总结

以上就是所有想要写出自己的权限插件的你需要知道东西了。 一个真正的权限插件是什么样的完全取决于你。下面提供2个例子:

  • 一个根据玩家经验值继续权限的RPG插件
  • 一个从论坛链接权限组/权限的接口,例如从phpBB到bukkit权限