Wiki赞助.jpg
  • 欢迎来到Minecraft插件百科!请在注册后加入百科编辑
  • 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
  • 插件百科企鹅群:223812289

Developing a permissions plugin/en

From Minecraft插件百科
Jump to: navigation, search
Icon-info.png
欢迎来到Developing a permissions plugin/en的原文存档

本页面作用

  • 翻译者查阅原文
  • 阅读者直接查看(对于开发文档,有些时候查看原文理解更快)
  • 更新姬对照查看是否有内容更新
  • 留作存档

本页面可直接访问,也可从主页面上方点击进入

Warning.png 当原文更新时可编辑此页面并添加{{待翻译}},翻译者请注意在主页面更新对应翻译,切勿直接翻译本页面

Introduction

This tutorial will guide you through how to create your own permissions plugin that sets permissions using the new Bukkit permissions API.

Prerequisite

This tutorial assumes you have a good understanding of the Java language, and general plugin development. This tutorial will only cover the specifics of the Bukkit permissions API.

Permissible

Everything that can have permissions set must inherit the Permissible class. Currently these only include the Player and CommandSender classes, however in theory anything could have permissions. For the future of this tutorial we will mention the player rather than a permissible object.

PermissionAttachments

What is a PermissionAttachment?

A permission attachment is a way for a plugin to manage a player's permissions, and even better, allows multiple plugins to manage the player's permissions without interference, unless of course they want to set the same permission.

How to create and remove them

Every player must first be "attached" to the plugin so that it can be managed. To create a PermissionAttachment, use the following:

PermissionAttachment attachment = player.addAttachment(plugin);

You can even create an attachment that will only last for a limited number of ticks:

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

This attachment needs to be stored somewhere though. The best solution is to create a

HashMap<UUID,PermissionAttachment>

 and store it in there with the player's Unique ID. That will later allow you to manage a particular player's permissions via their Unique ID, and remove the attachment when it's no longer needed. The best places to remove the attachment are in the onPlayerQuit event, onPlayerKick event, and remove them all in the plugin's onDisable event. Removing the attachment is as follows:

player.removeAttachment(attachment);

Assigning permissions

There are two main ways to set a player's permission:

  1. Via a string. This is probably the easiest method, and the one which I will explain first.
  2. Via a permission Object. This is slightly more complicated, however it works in exactly the same way as the first internally, so I won't bother going over this.


To set a player's permission you firstly have to get the PermissionAttachment you created earlier from the HashMap. Once you have this then setting a player's permissions is easy via the following:

attachment.setPermission(permissionName,permissionValue);

The permissionName is a String, and permissionValue is a boolean. You can later unset a player's permission (different to setting it to false) through the following:

attachment.unsetPermission(permissionName);

The reason you may want to unset a player's permission is if you want to allow a different permissions plugin to set it.

Conclusion

That's about all there is to know about writing your own permissions plugin. The actual implementation of the plugin however is up to you. I can however provide a few examples:

  • An RPG plugin that gives player's permissions based on their XP
  • A forum bridge that links groups/permissions from a forum such as phpBB to bukkit's permissions