Ir para conteúdo

Criando comando e registrando automaticamente sem usar plugin.yml


smgabriel

Posts Recomendados

RG4y56x.gif

 

Olá, hoje apresento um método de registrar comandos com facilidade. As vantagens da utilização desse método são diversas, como: comando configurável ou não precisar registrar comando em dois, três locais. Esqueceu de registrar o comando? Jamais!

 

Atualizações

 

Spoiler

-  Atualização para melhorias e remoção de comentários inúteis, yay! (Baixe no repositório a versão atualizada.)
- O reposiório no GitHub foi atualizado, agora conta com um tutorial de utilização. Clique aqui para conferir.
- Caso você tenha visto esse tópico antes do dia 19/01/2018, o código e esse tutorial foram refeitos.

 

TÓPICO

 

O Tópico está divido em quatro partes, confira:

 CRIANDO COMANDO
• REGISTRANDO COMANDOS DE FORMA "AUTOMÁTICA"
 Baixando recursos e conferindo documentações

• Porquês

 

 

CRIANDO COMANDO

 

Vamos utilizar a classe Command para criar nosso comando. O primeiro passo é criar uma classe para ser a sub-classe da nossa classe Command, tornando ela, a classe Command, como super classe. Por questões de organização, dentro do seu pacote principal, crie um pacote chamado command, vamos deixar todos os comandos lá. Obviamente, não é necessário a criação desse pacote.

Crie uma classe chamada HelloWorld. Defina a classe Command como super-classe, para isso, devemos utilizar extends Command onde informamos o nome da classe, exemplo:

import org.bukkit.command.Command;

public class HelloWorld extends Command{

}

Sua classe ficará mais ou menos assim.

 

Após definir a super classe, devemos criar um construtor publico e sem parâmetros.

public HelloWorld() {
	
 }

Ainda no construtor, vamos recuperar o construtor da super-classe que requisita de um parâmetro do tipo String. Nesse parâmetro vamos definir o comando helloworld:

public HelloWorld() {
	super("helloworld");
 }

Pronto, nosso comando está pronto, agora precisamos dar alguma função para ele. Provavelmente sua IDE está requisitando que você implemente um método no seu código, implemente o mesmo. Caso não tenha pedido, adicione:

@Override
    public boolean execute(CommandSender sender, String commandLabel, String[] args) {
	// TODO Auto-generated method stub
	return false;
    }
Citar
Citar

CommandSender sender - Retorna o responsável por executar o comando;
String commandLabel - Retorna o comando usado;
String[] args - Retorna os argumentos usados, separados por espaços

 

Agora vamos enviar uma mensagem pro sender/responsável:

@Override
    public boolean execute(CommandSender sender, String commandLabel, String[] args) {
	sender.sendMessage("Hello, World!");
	return false;
    }

Pronto, agora devemos registrar esse Comando, confira a próxima etapa.

 

REGISTRANDO COMANDOS

Como o título informa, "registrando automaticamente", chegamos à essa parte.

Com o comando pronto, devemos registrar ele, você pode baixar a classe clicando aqui.

Crie um novo objeto CommandBuilder(classe baixada), ele requisitará de uma String, essa String é a package do local onde se encontra os comandos. Ele procurará todas classes que pertencem a aquele pacote ou a um sub-pacote que tem uma super classe do tipo Command. Lembrando que você deve fazer isso quando o servidor inicia, ou seja, no método #onEnable da sua classe principal.

 

Resultado:

@Override
    public void onEnable() {
       new CommandBuilder("me.smgabriel.development.testes.commands");
 
    }

 

Baixar

 

• CommandBuilder

 

 Command

 

• #execute

 

 #onEnable


 

 

Por que eu usaria?

 

Por onde eu começo? Pela parte que você não precisa registrar comandos em todo lugar, pela parte onde você não precisará registrar mais comando ou pela parte que você pode deixar o publico feliz de poder escolher o comando que ele deseja?

 

Informações adicionais

Eu apresentei apenas 1% da classe Command, você pode acessar a documentação dela e conferir tudo que ela tem para você utilizar. Também, não existe limitações para o uso desse método, aqui apresentamos uma maneira, mas existem diversas maneiras de uso, tais como: registro automático de kits, ranks, classes(ctf), etc.

Link para o comentário
Compartilhar em outros sites

Muito bom! Eu tenho um metodo semelhamente porém mais avançado e simples de usar na hora de criar um comando novo. :bigsmile:

Valeu :)

Eu pensei em fazer em diversos métodos, mas todos teriam um padrão, ou seja, mais simples de criar/registrar, mas nem sempre todos querem manter um padrão.

 

 

Bem explicado ... parabéns tuto mt bom ..

 

 

Valeu :D

Link para o comentário
Compartilhar em outros sites

e como faço pra adicionar alises?

Você pode utilizar o segundo construtor

public HelloWorld(List<String> aliases) {
       super("helloworld", "descricao", "mensagem de uso", aliases);
}

Ou então usar o método herdado setAliases

List<String> aliases = new ArrayList<>();
aliases.add("hellow");

setAliases(aliases);
Editado por Out of Orbit
Link para o comentário
Compartilhar em outros sites

e como faço pra adicionar alises?

Construtor

 

Você pode utilizar a classe utilitária Arrays para criar uma lista simples e com isso, listar os aliases.

Usando:

public MeuComando(){
   super("meucomando", "um comando legal", "/meucomando", Arrays.asList("mycommand", "comando", "mycmd"));
}

Ou faça o que nosso amigo @Out of Orbit sugeriu utilizando o método #setAliases.

 

// OFF

 

Melhorias e informações inúteis removidas.

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...