API(ptBR)

API

Quer mudar algo dentro do Legendchat? Ou fazer um player parar de receber mensagens? Ou impedir uma mensagem de ser enviada? Está bem! Você pode fazer isso!
PS: Eu recomendo que leia a parte "Colocar valor em tag". Pode ser muito interessante.



Eventos

ChatMessageEvent

Evento chamado quando qualquer mensagem é enviada por um canal (exceto no canal do BungeeCord).
Lista de métodos disponíveis:

MétodoRetornaDescrição
getMessage()StringPega a mensagem
setMessage(String msg)voidMuda a mensagem
getFormat()StringPega a formatação do canal (config.yml)
setFormat(String format)voidMuda a formatação
getSender()PlayerPega quem enviou
setSender(Player p)voidMuda quem enviou
getRecipients()Set<Player>Pega a lista de quem receberá a mensagem
getChannel()ChannelPega o canal
getBukkitFormat()StringPega a formatação do Bukkit
getBaseFormat()StringPega a formatação base do canal (<channel>.yml)
getTags()List<String>Pega todas as tags na formatação
getTagValue(String tag)StringPega o valor de uma tag
setTagValue(String tag,String value)voidMuda o valor de uma tag
addTag(String tag,String value)voidAdiciona uma nova tag
isCancelled()booleanEvento está cancelado?
setCancelled(boolean c)voidCancela o evento


PrivateMessageEvent

Evento chamado quando enviam uma mensagem privada.
Lista de método disponíveis:

MétodoRetornaDescrição
getSender()PlayerPega quem enviou
setSender(Player p)voidMuda quem enviou
getReceiver()PlayerPega quem vai receber
setReceiver(Player p)voidMuda quem vai receber
getMessage()StringPega a mensagem
setMessage(String msg)voidMuda a mensagem
isCancelled()booleanEvento está cancelado?
setCancelled(boolean b)voidCancela o evento


BungeecordChatMessageEvent

Evento chamado quando uma mensagem é enviada pelo canal do BungeeCord.
Os métodos desse evento são os mesmos do ChatMessageEvent, retirando getSender(), setSender() e getBukkitFormat().
Você pode pegar o nome dentro da tag 'sender' ou 'plainsender'.
Observação: Esquematização do envio da mensagem do BungeeCord:
Player diz algo no canal => ChatMessageEvent (server de quem enviou) => Manda mensagem para o BungeeCord => BungeeCord manda a mensagem para os outros servidores => BungeecordChatMessageEvent (outros servidores) => Outros players recebem a mensagem



Dentro do Legendchat

Métodos

Você pode mudar várias coisas dentro do Legendchat.
Para ligar com o Legendchat você deve usar Legendchat.
Exemplo:

public void onEnable() {
    ChannelManager channelManager = Legendchat.getChannelManager();
}


Lista de métodos (Vou escrever o que cada 'manager' faz):

MétodoRetornaDescrição
getChannelManager()ChannelManagerPega o ChannelManager
getPlayerManager()PlayerManagerPega o PlayerManager
getMessageManager()MessageManagerPega o MessageManager
getIgnoreManager()IgnoreManagerPega o IgnoreManager
getPrivateMessageManager()PrivateMessageManagerPega o PrivateMessageManager
getDelayManager()DelayManagerPega o DelayManager
getMuteManager()MuteManagerPega o MuteManager
getCensorManager()CensorManagerPega o CensorManager
getLogManager()LogManagerPega o LogManager
getConfigManager()ConfigManagerPega o ConfigManager
getTemporaryChannelManager()TemporaryChannelManagerPega o TemporaryChannelManager
getAfkManager()AfkManagerPega o AfkManager
getDefaultChannel()ChannelPega o canal padrão
getBungeecordChannel()ChannelPega o canal do BungeeCord
getLanguage()StringPega a linguagem do plugin (como: en)
blockRepeatedTags()booleanConfig.yml
showNoOneHearsYou()booleanConfig.yml
forceRemoveDoubleSpacesFromBukkit()booleanConfig.yml
sendFakeMessageToChat()booleanConfig.yml
logToFile()booleanConfig.yml
getLogToFileTime()intConfig.yml
textToTag()HashMap<String,String>Config.yml
blockShortcutsWhenCancelled()booleanConfig.yml
useAsyncChat()booleanConfig.yml
maintainSpyMode()booleanConfig.yml
isBungeecordActive()booleanConfig.yml
getPlugin()PluginPega a instância do plugin
getFormat(String base_format)StringPega o formato format (ex.: default)
format(String msg)StringMuda um base_format para format
getPrivateMessageFormat(String format)StringPega o formato de uma mensagem privada
load()voidRecarrega a classe do Legendchat


Lista de 'managers'

ChannelManager

Contêm: Todos os canais.
Métodos para: Criar, deletar e pegar canais.

PlayerManager

Contêm: Canais dos players, espiões e players escondidos.
Métodos para: Pega e muda o canal de um player, pega e muda espiões, pega e muda players escondidos.

MessageManager

Contêm: Todas as mensagens carregadas.
Métodos para: Pega uma mensagem.

IgnoreManager

Contêm: Todos os players que ignoraram alguém.
Métodos para: Pega e muda os players ignorados por um player.

PrivateMessageManager

Contêm: Todos os métodos de controle do sistema de mensagem privada.
Métodos para: Manda mensagens privadas, responde mensagens privadas, começa e para conversas.

DelayManager

Contêm: Todos os métodos para mudar delay.
Métodos para: Adicionar, remover e pegar delays (o delay é por canal).

MuteManager

Contêm: Todos os métodos para mutar players e o server.
Métodos para: Adicionar, remover e pegar players mutados e mudar o estado do chat do server.

CensorManager

Contêm: Todos os métodos para censurar palavras.
Métodos para: Adicionar, remover e pegar palavras censuradas.

TemporaryChannelManager

Contêm: Todos os métodos para canais temporários.
Métodos para: Adicionar, remover e pegar canais temporários.

ConfigManager

Contêm: Todos os métodos para acessar arquivos de configuração.
Métodos para: Ler arquivos de configuração.

LogManager

Contêm: Todos os métodos para os logs.
Métodos para: Administrar o cache de mensagens.

AfkManager

Contêm: Todos os métodos para acessar o sistema AFK.
Métodos para: Adicionar, remover e mudar motivo do afk.




Exemplos

Exemplos com os eventos

Bloquear mensagem contendo algo

@EventHandler
private void onChat(ChatMessageEvent e) {
    if(e.getMessage().contains("algo"))
        e.setCancelled(true);
}


Bloquear alguém de receber mensagens

@EventHandler
private void onChat(ChatMessageEvent e) {
    if(e.getRecipients().contains(player))
        e.getRecipients().remove(player);
}


Colocar valor em tag

//Observação: a formatação do canal (config.yml) deve conter {minhatag} (como {prefix})
@EventHandler
private void onChat(ChatMessageEvent e) {
    if(e.getTags().contains("minhatag"))
        e.setTagValue("minhatag","&6[MinhaTag] ");
}


Exemplos com a classe do Legendchat

Desmutar player

public void meuMetodo(Player p) {
    MuteManager mm = Legendchat.getMuteManager();
    if(mm.isPlayerMuted(p.getName()))
        mm.unmutePlayer(p.getName());
}


Mudar canal de player

public void meuMetodo(Player p, String nome_canal) {
    Channel c = Legendchat.getChannelManager().getChannelByName(nome_canal);
    Legendchat.getPlayerManager().setPlayerChannel(p,c,/*mandar mensagem?*/ true);
}


Desmutar servidor

public void meuMetodo() {
    Legendchat.getMuteManager().unmuteServer();
}