Developing a permissions plugin/pt

## Introdução

Neste tutorial você irá aprender a desenvolver seu próprio plugin para gerenciar permissões utilizando a nova API Bukkit permissions.

### Pré-requisito

Este tutorial leva em consideração que você possui uma boa noção da linguagem Java, e um conhecimento geral de desenvolvimento de plugin. Este tutorial irá apenas abordar assuntos específicos da API Bukkit permissions.

## Permissible

Tudo que tiver relação a uma nova permissão deve ser herdado da classe *Permissible*. Atualmente este inclui apenas as classes *Player* e *CommandSender*, no entanto, teoricamente qualquer coisa pode ter permissões. Futuramente, neste tutorial, iremos abordar mais o jogador do que o objeto permissible.

## PermissionAttachments

### O que é PermissionAttachment?

Permission Attachment é uma forma do plugin gerenciar permissões dos jogadores e muito mais, permite com que diversos plugins possam gerenciar as permissões dos jogadores sem interferências, a menos, é claro, que ambos usem exatamente a mesma permissão.

### Como criar e removê-los

Todo jogador precisa, primeiramente, ser "conectado(attached)" ao plugin para que possa ser gerenciado. Para criar um PermissionAttachment, use o seguinte:

```
PermissionAttachment attachment = player.addAttachment(plugin);

```

Você pode até mesmo criar uma conexão(attachment) que irá funcionar por uma determinada quantia de ticks:

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

```

Essa conexão(attachment) precisa ser armazenada em algum lugar. A melhor solução é criar um

```
HashMap<UUID,PermissionAttachment>

```
 e armazená-la com a ID do jogador. Isso irá garantir que você consiga gerenciar as permissões de um determinado jogador via Unique ID, e remover a conexão(attachment) quando não for mais necessário. O melhor meio de remover um attachment é no evento *onPlayerQuit*, *onPlayerKick*, e apagar tudo no evento *onDisable*. Para remover uma conexão(attachment) use o seguinte:

```
player.removeAttachment(attachment);

```

## Atribuindo permissões

Há dois caminhos principais para atribuir uma permissão a um jogador:

1. Através de uma string. Este é, provavelmente, o método mais fácil, e será o primeiro que irei explicar.
2. Através do objeto permission. Este é um pouco mais complicado, no entanto, ele funciona exatamente da mesma forma que o método anterior, então não irei me preocupar com isso.

Para atribuir permissão a um jogador você precisa primeiro pegar a conexão(PermissionAttachment) que você criou anteriormente com a HashMap. Uma vez que você tenha pego a conexão(attachment), atribuir as permissões ao jogador torna-se moleza. Basta fazer fazer o seguinte:

```
attachment.setPermission(permissionName,permissionValue);

```

A permissionName é uma String, e permissionValue é um boolean. Você pode, posteriomente, remover a permissão do jogador (diferente de apenas definir para false) fazendo o seguinte:

```
attachment.unsetPermission(permissionName);

```

A razão pela qual você possa querer retirar a permissão do jogador é se você quiser que um outro plugin de permissões atribua permissões diferentes.

## Conclusão

Isso é tudo o que há para saber sobre como escrever seu plugin de permissões. A implementação real do plugin, no entanto, depende de você. No entanto, posso dar algumas sugestões:

* Um plugin RPG que dá permissões baseado na XP
* Uma ponte que "linka" grupos/permissões de um fórum como phpBB com as permissões Bukkit