Ir para conteúdo
  • 0

[Resolvido] Ajuda Comando com args


LuizB

Pergunta

pq só o Kit Arqueiro Funfa ?

e o guerreiro n


 

@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		Player p = (Player) sender;
		if (!(sender instanceof Player))
			sender.sendMessage((Object)ChatColor.BLUE + "Se Fudeu Troxa voce nao vai usar este comando pelo console");
		
		if(command.getName().equalsIgnoreCase("kit")) {
			if(args.length == 1) {
				if(args[0].equalsIgnoreCase("arqueiro")) {
				  if(!(Principal.usando.contains(p.getName()))){
					p.getInventory().clear();
					p.sendMessage(Principal.cf.getConfig().getString("Mensagemarq"));
					ItemStack capacete = new ItemStack(Material.DIAMOND_HELMET);
					capacete.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
					capacete.addEnchantment(Enchantment.PROTECTION_PROJECTILE, 1 );
					p.getInventory().setHelmet(new ItemStack(capacete));
					ItemStack peit = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
					peit.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
					peit.addEnchantment(Enchantment.DURABILITY, 1);
					p.getInventory().setChestplate(new ItemStack(peit));
					ItemStack calc = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
					calc.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
					calc.addEnchantment(Enchantment.DURABILITY, 1);
					p.getInventory().setLeggings(new ItemStack(calc));
					ItemStack bota = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
					bota.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
					bota.addEnchantment(Enchantment.DURABILITY, 1);
					p.getInventory().setBoots(new ItemStack(bota));
					ItemStack arco = new ItemStack(Material.BOW);
					arco.addEnchantment(Enchantment.ARROW_DAMAGE, 4);
					arco.addEnchantment(Enchantment.ARROW_INFINITE, 1);
					arco.addEnchantment(Enchantment.ARROW_KNOCKBACK, 2);	
					p.getInventory().setItem(1, arco);
					ItemStack espada = new ItemStack(Material.STONE_SWORD);
					espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
					espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
					espada.addEnchantment(Enchantment.KNOCKBACK, 1);
					p.getInventory().setItem(0, espada);
					Principal.usando.add(p.getName());
				  }else{
					  p.sendMessage(ChatColor.RED + "Você já está usando um kit!");
					
				}
				 if(args[0].equalsIgnoreCase("guerreiro")) {
				  if(!(Principal.usando.contains(p.getName()))){
					p.getInventory().clear();
					p.sendMessage(Principal.cf.getConfig().getString("Mensagemarq"));
					ItemStack capacete = new ItemStack(Material.DIAMOND_HELMET);
					capacete.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
					capacete.addEnchantment(Enchantment.PROTECTION_PROJECTILE, 1 );
					p.getInventory().setHelmet(new ItemStack(capacete));
					ItemStack peit = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
					peit.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
					peit.addEnchantment(Enchantment.DURABILITY, 1);
					p.getInventory().setChestplate(new ItemStack(peit));
					ItemStack calc = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
					calc.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
					calc.addEnchantment(Enchantment.DURABILITY, 1);
					p.getInventory().setLeggings(new ItemStack(calc));
					ItemStack bota = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
					bota.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
					bota.addEnchantment(Enchantment.DURABILITY, 1);
					p.getInventory().setBoots(new ItemStack(bota));
					ItemStack arco = new ItemStack(Material.BOW);
					arco.addEnchantment(Enchantment.ARROW_DAMAGE, 4);
					arco.addEnchantment(Enchantment.ARROW_INFINITE, 1);
					arco.addEnchantment(Enchantment.ARROW_KNOCKBACK, 2);	
					p.getInventory().setItem(1, arco);
					ItemStack espada = new ItemStack(Material.STONE_SWORD);
					espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
					espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
					espada.addEnchantment(Enchantment.KNOCKBACK, 1);
					p.getInventory().setItem(0, espada);
					Principal.usando.add(p.getName());
				  }else{
						p.sendMessage(ChatColor.RED + "Você já está usando um kit!");  
			}
		}
		return false;
	}
		return false;

}
}
		return false;
	}
}

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

Caneva20 man parábens funcionou 

 

eu preciso que vc me explique onde estava o erro

 

e qual foi a solução

Vou tentar explicar de uma forma simples....

O kit arqueiro estava DENTRO do kit guerreiro, sendo assim você NUNCA teria como pegar o kit arqueiro. Não sei como explicar melhor, eu coloquei alguns poucos comentários no código onde eu mudei.

 

E uma dica, tente IDENTAR melhor seu código, isso provavelmente foi UM dos motivos para você não entender onde estava o erro. Se você está usando o Eclipse você pode fazer duas coisas para te ajuda nisso:

1- Usar  Ctrl + Alt + I: Para identar automaticamente o código.

2- Ir na aba de busca do eclipse, aquela que fica lá em cima do lado direito, e pesquisar por "Save actions" (ações ao salvar) e marcar as caixas "Perform the selected actions on save", "Format source code", "Format all lines", "Organize imports", isso fará com que toda vez que você salvar o seu código ele será automaticamente formatado pelo Eclipse.

 

Espero ter sido de ajuda. :)

 

@Edit:

 

Está aqui um código um "pouquinho" mais comentado.

 

<spoiler>

//Imports e package aqui;

public class Kits implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        Player p = (Player) sender;
        if (!(sender instanceof Player)) {
            sender.sendMessage((Object)ChatColor.BLUE + "Se Fudeu Troxa você não vai usar este comando pelo console"); //Isso aqui não fica muito legal (na MINHA opnião), fazendo isso você parace ser muito criança :) Não fique com raiva de min, é só MINHA opnião;
            
            return true; //Como você NÃO quer que o código abaixo seja executado, já que se fosse essa parte não severia para nada, use um "return true" aqui. DICA: se você usar "return false" o Bukkit vai entender que ouve um erro por parte do jogador, dai será enviado uma mensagem de "Usage: bla bla bla..." para o cara.
        }
    
        if(command.getName().equalsIgnoreCase("kit")) {
            if(args.length == 0) {
                    p.sendMessage("§cUtilize /kit <arqueiro : guerreiro>");
                    return true;
            }
            
            if(args.length == 1) {
                if(args[0].equalsIgnoreCase("arqueiro")) {
                    if(!(Principal.usando.contains(p.getName()))){
                         //Itens do kit aqui
                    } else {
                        //Mensagem de erro aqui, já que o cara já tem o kit
                    }
                    
                    return true; //Aqui para que o código PARE AQUI você pode usar um "return true" ou "return false", mas o "return false" só seria bem vindo se o cara não tivesse pego o kit por algum erro, como eu já disse acima. :)
                } //Termine aqui um if; Ou use um "else if", isso seria bom para que só um quit fosse escolhido, mas nesse caso não faz diferença para quem está começando com programação;
                
                if(args[0].equalsIgnoreCase("guerreiro")) {
                    if(!(Principal.usando.contains(p.getName()))){
                         //Itens do kit aqui
                    } else {
                        //Mensagem de erro aqui, já que o cara já tem o kit
                    }
                    
                    //return true; Você não precisa de um return aqui, tendo UM no final do código já é suficiente desde que você não tenha mais nada para baixo.
                }
                
                //Para você por mais kits é só fazer isso.
                if(args[0].equalsIgnoreCase("KIT blabla1")) {
                    if(!(Principal.usando.contains(p.getName()))){
                         //Itens do kit aqui
                    } else {
                        //Mensagem de erro aqui, já que o cara já tem o kit
                    }
                    
                    //return true;
                }
                
                if(args[0].equalsIgnoreCase("BRUXA DO DIMOIN")) {
                    if(!(Principal.usando.contains(p.getName()))){
                         //Itens do kit aqui
                    } else {
                        //Mensagem de erro aqui, já que o cara já tem o kit
                    }
                    
                    //return true;
                }
                
                if(args[0].equalsIgnoreCase("QUALQUER OUTRO KIT AQUI")) {
                    if(!(Principal.usando.contains(p.getName()))){
                         //Itens do kit aqui
                    } else {
                        //Mensagem de erro aqui, já que o cara já tem o kit
                    }
                    
                    //return true;
                }
            }
        }
        
        return false; // Só este aqui no final do OnCommand ja está de bom tamanho.
    }
}

</spoiler>

Editado por caneva20
Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi
if(args.leght == 0) {
    p.sendMessage("§cUtilize /kit <arqueiro : guerreiro>");
    return true;
}
if(args.leght == 1) {
    if(args[0].equalsIgnoreCase("arqueiro")) {
        //coloque o cod do kit arqueiro aqui!
        return true;
    }
     if(args[0].equalsIgnoreCase("guerreiro")) {
        //coloque o cod do kit guerreiro aqui!
        return true;
    }
return true;
}

Se esse não der certo tenta usando switch ou você esta fazendo algo de errado.

Editado por Mateus Demarchi
Link para o comentário
Compartilhar em outros sites

if(args.leght == 0) {
    p.sendMessage("§cUtilize /kit <arqueiro : guerreiro>");
    return true;
}
if(args.leght == 1) {
    if(args[0].equalsIgnoreCase("arqueiro")) {
        //coloque o cod do kit arqueiro aqui!
        return true;
    }
     if(args[0].equalsIgnoreCase("guerreiro")) {
        //coloque o cod do kit guerreiro aqui!
        return true;
    }
return true;
}

Se esse não der certo tenta usando switch ou você esta fazendo algo de errado.

 

acho que ja entendi o erro vo testar

Link para o comentário
Compartilhar em outros sites

não funcionou ficando assim o codigo:

 

package kitpvp.kits;


import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

import me.cuthmf.kitpvp.Principal;

public class Kits implements CommandExecutor{

	
	@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		Player p = (Player) sender;
		if (!(sender instanceof Player))
			sender.sendMessage((Object)ChatColor.BLUE + "Se Fudeu Troxa voce nao vai usar este comando pelo console");
		
		if(command.getName().equalsIgnoreCase("kit")) {
			if(args.length == 0) {
			    p.sendMessage("§cUtilize /kit <arqueiro : guerreiro>");
			    return true;
			}
			if(args.length == 1) {
			    if(args[0].equalsIgnoreCase("arqueiro")) {
			    	if(!(Principal.usando.contains(p.getName()))){
						p.getInventory().clear();
						p.sendMessage(Principal.cf.getConfig().getString("Mensagemarq"));
						ItemStack capacete = new ItemStack(Material.DIAMOND_HELMET);
						capacete.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
						capacete.addEnchantment(Enchantment.PROTECTION_PROJECTILE, 1 );
						p.getInventory().setHelmet(new ItemStack(capacete));
						ItemStack peit = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
						peit.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
						peit.addEnchantment(Enchantment.DURABILITY, 1);
						p.getInventory().setChestplate(new ItemStack(peit));
						ItemStack calc = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
						calc.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
						calc.addEnchantment(Enchantment.DURABILITY, 1);
						p.getInventory().setLeggings(new ItemStack(calc));
						ItemStack bota = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
						bota.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
						bota.addEnchantment(Enchantment.DURABILITY, 1);
						p.getInventory().setBoots(new ItemStack(bota));
						ItemStack arco = new ItemStack(Material.BOW);
						arco.addEnchantment(Enchantment.ARROW_DAMAGE, 4);
						arco.addEnchantment(Enchantment.ARROW_INFINITE, 1);
						arco.addEnchantment(Enchantment.ARROW_KNOCKBACK, 2);	
						p.getInventory().setItem(1, arco);
						ItemStack espada = new ItemStack(Material.STONE_SWORD);
						espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
						espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
						espada.addEnchantment(Enchantment.KNOCKBACK, 1);
						p.getInventory().setItem(0, espada);
						Principal.usando.add(p.getName());
					  }else{
						  p.sendMessage(ChatColor.RED + "Você já está usando um kit!");
						return true;   
			        
			    }
			    if(args[0].equalsIgnoreCase("guerreiro")) {
			    	if(!(Principal.usando.contains(p.getName()))){
			    	 p.sendMessage("vc pego o kit guerreiro");
			        }else{
			        	p.sendMessage("vc ja possui um kit");
			        }
			        
			        return true;
			    }
			return true;
			}
		}
		return false;
	}
		return false;
}
}
Link para o comentário
Compartilhar em outros sites

Vo tentar, pq tem q colocar o return true ?

 

o que ele faz ?

 

 

Coloquei e n funfo :(

 

Double-Post membro alertado.

acho que ja entendi o erro vo testar

 

 

 

não funcionou ficando assim o codigo:

 

 

package kitpvp.kits;


import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

import me.cuthmf.kitpvp.Principal;

public class Kits implements CommandExecutor{

	
	@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		Player p = (Player) sender;
		if (!(sender instanceof Player))
			sender.sendMessage((Object)ChatColor.BLUE + "Se Fudeu Troxa voce nao vai usar este comando pelo console");
		
		if(command.getName().equalsIgnoreCase("kit")) {
			if(args.length == 0) {
			    p.sendMessage("§cUtilize /kit <arqueiro : guerreiro>");
			    return true;
			}
			if(args.length == 1) {
			    if(args[0].equalsIgnoreCase("arqueiro")) {
			    	if(!(Principal.usando.contains(p.getName()))){
						p.getInventory().clear();
						p.sendMessage(Principal.cf.getConfig().getString("Mensagemarq"));
						ItemStack capacete = new ItemStack(Material.DIAMOND_HELMET);
						capacete.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
						capacete.addEnchantment(Enchantment.PROTECTION_PROJECTILE, 1 );
						p.getInventory().setHelmet(new ItemStack(capacete));
						ItemStack peit = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
						peit.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
						peit.addEnchantment(Enchantment.DURABILITY, 1);
						p.getInventory().setChestplate(new ItemStack(peit));
						ItemStack calc = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
						calc.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
						calc.addEnchantment(Enchantment.DURABILITY, 1);
						p.getInventory().setLeggings(new ItemStack(calc));
						ItemStack bota = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
						bota.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
						bota.addEnchantment(Enchantment.DURABILITY, 1);
						p.getInventory().setBoots(new ItemStack(bota));
						ItemStack arco = new ItemStack(Material.BOW);
						arco.addEnchantment(Enchantment.ARROW_DAMAGE, 4);
						arco.addEnchantment(Enchantment.ARROW_INFINITE, 1);
						arco.addEnchantment(Enchantment.ARROW_KNOCKBACK, 2);	
						p.getInventory().setItem(1, arco);
						ItemStack espada = new ItemStack(Material.STONE_SWORD);
						espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
						espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
						espada.addEnchantment(Enchantment.KNOCKBACK, 1);
						p.getInventory().setItem(0, espada);
						Principal.usando.add(p.getName());
					  }else{
						  p.sendMessage(ChatColor.RED + "Você já está usando um kit!");
						return true;   
			        
			    }
			    if(args[0].equalsIgnoreCase("guerreiro")) {
			    	if(!(Principal.usando.contains(p.getName()))){
			    	 p.sendMessage("vc pego o kit guerreiro");
			        }else{
			        	p.sendMessage("vc ja possui um kit");
			        }
			        
			        return true;
			    }
			return true;
			}
		}
		return false;
	}
		return false;
}
}

 

Double-Post membro alertado.

Link para o comentário
Compartilhar em outros sites

Tenta isso...

package kitpvp.kits;


import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

import me.cuthmf.kitpvp.Principal;

public class Kits implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        Player p = (Player) sender;
        if (!(sender instanceof Player)) {
            sender.sendMessage((Object)ChatColor.BLUE + "Se Fudeu Troxa você não vai usar este comando pelo console");
            return true; //Só para não continuar o código.
        }
    
        if(command.getName().equalsIgnoreCase("kit")) {
            if(args.length == 0) {
                    p.sendMessage("§cUtilize /kit <arqueiro : guerreiro>");
                    return true;
            }
            
            if(args.length == 1) {
                if(args[0].equalsIgnoreCase("arqueiro")) {
                    if(!(Principal.usando.contains(p.getName()))){
                        p.getInventory().clear();
                        p.sendMessage(Principal.cf.getConfig().getString("Mensagemarq"));
                        ItemStack capacete = new ItemStack(Material.DIAMOND_HELMET);
                        capacete.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
                        capacete.addEnchantment(Enchantment.PROTECTION_PROJECTILE, 1 );
                        p.getInventory().setHelmet(new ItemStack(capacete));
                        ItemStack peit = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
                        peit.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
                        peit.addEnchantment(Enchantment.DURABILITY, 1);
                        p.getInventory().setChestplate(new ItemStack(peit));
                        ItemStack calc = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
                        calc.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
                        calc.addEnchantment(Enchantment.DURABILITY, 1);
                        p.getInventory().setLeggings(new ItemStack(calc));
                        ItemStack bota = new ItemStack(Material.CHAINMAIL_CHESTPLATE);
                        bota.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
                        bota.addEnchantment(Enchantment.DURABILITY, 1);
                        p.getInventory().setBoots(new ItemStack(bota));
                        ItemStack arco = new ItemStack(Material.BOW);
                        arco.addEnchantment(Enchantment.ARROW_DAMAGE, 4);
                        arco.addEnchantment(Enchantment.ARROW_INFINITE, 1);
                        arco.addEnchantment(Enchantment.ARROW_KNOCKBACK, 2);    
                        p.getInventory().setItem(1, arco);
                        ItemStack espada = new ItemStack(Material.STONE_SWORD);
                        espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
                        espada.addEnchantment(Enchantment.DAMAGE_ALL, 2);
                        espada.addEnchantment(Enchantment.KNOCKBACK, 1);
                        p.getInventory().setItem(0, espada);
                        Principal.usando.add(p.getName());
                    } else {
                        p.sendMessage(ChatColor.RED + "Você já está usando um kit!");
                        return true;   
                        
                    }
                
                } //Termine aqui um if;
                
                if(args[0].equalsIgnoreCase("guerreiro")) {
                    if(!(Principal.usando.contains(p.getName()))){
                         p.sendMessage("vc pego o kit guerreiro");
                    } else {
                        p.sendMessage("vc ja possui um kit");
                    }
                    
                    return true;
                }
            }
        }
        return false;
    }
}

No segundo if(arg[0].equalsblablabla) voce tem que botar ELSE IF   ( minusculo so pra lembrar )

 

Isso não é "exatamente" necessário.

Link para o comentário
Compartilhar em outros sites

Guest #angradosreis1000grau

 

 

Isso não é "exatamente" necessário.

Comigo pelo menos nunca funcionou sem o else if '-'  , se vc faz macumba pra funcionar assim sla vei kk ; eu acho mais facil adicionar o else do que fazer essas macumbaria

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...