[DEV.Bukkit] Teletransporte (/tele) - #3

Discussão em 'Informática/Tecnologia' iniciado por Paluh, 15 Outubro 2015.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. Paluh

    Paluh Craftlandiano
    VIP

    Afiliado:
    12 Junho 2013
    Mensagens:
    1,786
    Curtidas Recebidas:
    683
    Curtiu:
    635
    Sexo:
    Masculino
    Cubos:
    2,754.00
    Nick:
    Heguest
    Teletransporte
    No tutorial anterior aprendemos a criar um broadcast/anuncio, desta vez iremos fazer um plugin de teletransporte,com o intuito de demonstrar o uso de mais de um argumento em um comando.
    Estarei começando com os códigos,é mais para baixo irei explicar como funciona,não estarei montando a estrutura básica do plugin,pois é bem básico e já foi ensinado nos tópicos anteriores.
    Começando direto no onCommand:
    @Override

    public boolean onCommand(CommandSender sender, Command command,

    String label, String[] args) {

    // Especificando que somente jogadores podem usar o comando
    if(sender instanceof Player){

    Player jogador = (Player) sender;

    }
    return false;
    }
    Primeiro acontecimento: O jogador que usou o comando (sender) seguindo um jogador qualquer.
    Player jogador = (Player) sender;

    if(label.equalsIgnoreCase("tele")){

    // Caso o sender nao escreva nenhum argumento alem do "tele"
    if(args.length == 0) {

    jogador.sendMessage(ChatColor.RED + "Comando incompleto. Digite:");

    jogador.sendMessage(ChatColor.YELLOW + "/tele <jogadorAlvo>");

    jogador.sendMessage(ChatColor.RED + " ou");

    jogador.sendMessage(ChatColor.YELLOW + "/tele <jogador> <jogadorAlvo>");

    }

    // O sender escreveu somente o nome do jogador para qual ele deseja se teletransportar
    if(args.length == 1){

    // Se o jogador Alvo existir
    if(getServer().getPlayerExact(args[0]) != null){

    // Definindo o jogadorAlvo
    Player jogadorAlvo = getServer().getPlayer(args[0]);

    // Teletransportando o sender ate o jogador alvo
    jogador.teleport(jogadorAlvo);

    // Mensagem para o sender que se teletransportou ate o jogadorAlvo
    jogador.sendMessage(ChatColor.AQUA + "Voce foi teletransportado ate " + args[0]);

    // Mensagem para o jogadorAlvo avisando que o sender foi teletransportado ate ele
    jogadorAlvo.sendMessage(ChatColor.GREEN + jogador.getName() + " foi teletransportado ate voce!");

    } else {

    // Mensagem caso o jogadorAlvo nao seja encontrado
    jogador.sendMessage(ChatColor.RED + args[0] + ChatColor.YELLOW + " nao foi encontrado!");

    }

    }
    Segundo acontecimento: O jogador que usou o comando (sender) teletransportando um jogador qualquer para outro jogador alvo
    if(args.length == 2){

    // Verificando se os jogadores escolhidos estao online
    if(getServer().getPlayerExact(args[0]) != null){

    if(getServer().getPlayerExact(args[1]) != null){

    // Definindo o jogador que sera teletransportado
    Player jogadorAlvo = getServer().getPlayer(args[0]);

    // Definindo o jogadorAlvo
    Player jogadorAlvo2 = getServer().getPlayer(args[1]);

    // Teletransportando o jogadorAlvo ate o jogadorAlvo2
    jogadorAlvo.teleport(jogadorAlvo2);

    // Mensagens
    jogador.sendMessage(ChatColor.AQUA + "Voce teletransportou " + args[0] + " ate " + args[1]);

    jogadorAlvo.sendMessage(ChatColor.AQUA + "Voce foi teletransportado ate " + args[1]);

    jogadorAlvo2.sendMessage(ChatColor.GREEN + args[0] + " foi teletransportado ate voce!");

    } else {

    // Se o jogadorAlvo2 nao for encontrado
    jogador.sendMessage(ChatColor.RED + args[1] + ChatColor.YELLOW + " nao foi encontrado!");

    }

    } else {

    // Se o jogadorAlvo nao for encontrado
    jogador.sendMessage(ChatColor.RED + args[0] + ChatColor.YELLOW + " nao foi encontrado!");

    }

    }
    Resultado Final:
    package com.wheeze.Tutorial3;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    public class Main extends JavaPlugin {



    @Override

    public void onEnable() {

    }

    @Override

    public void onDisable() {

    }


    @SuppressWarnings("deprecation")
    @Override
    public boolean onCommand(CommandSender sender, Command command,
    String label, String[] args) {
    if(sender instanceof Player){
    Player jogador = (Player) sender;
    if(label.equalsIgnoreCase("tele")){
    if(args.length == 0) {
    jogador.sendMessage(ChatColor.RED + "Comando incompleto. Digite:");
    jogador.sendMessage(ChatColor.YELLOW + "/tele <jogadorAlvo>");
    jogador.sendMessage(ChatColor.RED + " ou");
    jogador.sendMessage(ChatColor.YELLOW + "/tele <jogador> <jogadorAlvo>");
    }
    if(args.length == 1){
    if(getServer().getPlayerExact(args[0]) != null){
    Player jogadorAlvo = getServer().getPlayer(args[0]);
    jogador.teleport(jogadorAlvo);
    jogador.sendMessage(ChatColor.AQUA + "Voce foi teletransportado ate " + args[0]);
    jogadorAlvo.sendMessage(ChatColor.GREEN + jogador.getName() + " foi teletransportado ate voce!");
    } else {
    jogador.sendMessage(ChatColor.RED + args[0] + ChatColor.YELLOW + " nao foi encontrado!");
    }
    }
    if(args.length == 2){
    if(getServer().getPlayerExact(args[0]) != null){
    if(getServer().getPlayerExact(args[1]) != null){
    Player jogadorAlvo = getServer().getPlayer(args[0]);
    Player jogadorAlvo2 = getServer().getPlayer(args[1]);
    jogadorAlvo.teleport(jogadorAlvo2);
    jogador.sendMessage(ChatColor.AQUA + "Voce teletransportou " + args[0] + " ate " + args[1]);
    jogadorAlvo.sendMessage(ChatColor.AQUA + "Voce foi teletransportado ate " + args[1]);
    jogadorAlvo2.sendMessage(ChatColor.GREEN + args[0] + " foi teletransportado ate voce!");
    } else {
    jogador.sendMessage(ChatColor.RED + args[1] + ChatColor.YELLOW + " nao foi encontrado!");
    }
    } else {
    jogador.sendMessage(ChatColor.RED + args[0] + ChatColor.YELLOW + " nao foi encontrado!");
    }
    }
    }
    }
    return false;
    }
    }
    Explicando os argumentos:
    - No final do onCommand, note que tem um "String[] args";
    - Ou seja, cria-se um Array tipo String, cujo nome dei args;
    - Tome como base que um Array é um conjunto de elementos;
    - E os elementos no caso do onCommand sera as palavras que tem no comando;
    - Por isso quando fizemos "args.leght == 0", definimos tamanho do array, que nesse caso será 0, ou seja, só registrará o "tele";
    - Quando definimos o Array do tamanho 2(args.leght == 2), o onCommand só ira registrar 2 argumentos(elementos do array) no comando;
    - Definido o tamanho do Array, precisamos pegar esses argumentos;
    - Vamos fazer isso com o args[0] e args[1];
    - O args[0] representa o primeiro elemento do Array;
    - Como o Array é do tipo String, o args[0] é o nome do jogador que voce quer teletransportar;
    - Já o args[1], é o jogador alvo;
    - Como o tamanho do Array é 2, os args[0] e args[1] são os únicos elementos;
    Caso o Array foi de tamanho 4, teria args[0], args[1], args[2], args[3];
    - Sei que é um pouco confuso de se entender, mas Arrays são assim mesmo, você terá que estudar bastante para compreender melhor;
    Espero que tenham entendido o tutorial ,sei que é meio complicado mas se você se esforçar vale a apena tentar [​IMG]
     
  2. RubyKingFE

    VIP

    Afiliado:
    1 Outubro 2015
    Mensagens:
    3,202
    Curtidas Recebidas:
    196
    Curtiu:
    0
    Sexo:
    Masculino
    Localização:
    Minas Gerais
    Cubos:
    12.06
    Nick:
    Lacoste
    Clan:
    ◆EcT◆
    Bom tutorial


    Enviado de meu LG-E615f usando Tapatalk
     
  3. Pedroivo00

    Pedroivo00 Craftlandiano
    VIP

    Afiliado:
    16 Setembro 2012
    Mensagens:
    3,073
    Curtidas Recebidas:
    1,748
    Curtiu:
    437
    Sexo:
    Masculino
    Localização:
    Rio de Janeiro
    Cubos:
    483.00
    Nick:
    Pedroivo00
    Clan:
    EcT
    Skype:
    NTEINTERESSA
    Bom tutorial

    Enviado de meu LG-E615f usando Tapatalk
     
Status do Tópico:
Não esta aberto para novas mensagens.