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

Bem-vindo!

Ao se registrar conosco, você poderá discutir, compartilhar e enviar mensagens privadas com outros membros da nossa comunidade.

Registrar agora!
  • PROMOÇÃO DE NATAL NO AR

    Novo servidor: CraftLandia Olimpo


Status
Não está aberto para novas respostas.

Paluh

Craftlandiano
VIP
Entrou
Jun 12, 2013
Mensagens
1,786
Pontuação de reação
683
Cubos
0
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
biggrin.png
 
Status
Não está aberto para novas respostas.

Usuários que estão visualizando este tópico

Voltar
Topo