Ir para conteúdo
  • 0

[Resolvido] Duvida java


MilkBR

Pergunta

Olá, estou fazendo um plugin de fly, e gostaria de saber como fazer que o console possa executar o comado, ex: "fly MilkBR" se estiver com o fly ativado ele vai desativar, e quando estiver desativado ele vai ativar, mas o console que fara isso.

 

Print:

post-2072-0-11977100-1445195461_thumb.jpg 

Link para o comentário
Compartilhar em outros sites

28 respostass a esta questão

Posts Recomendados

Assim:

@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		if (sender instanceof Player) {//Ve se o sender e player
			Player p = (Player)sender;
			if (label.equalsIgnoreCase("fly")) {
				if (p.hasPermission("vua")) {
					if (p.isFlying()) {
						p.setFlying(false);
						p.sendMessage("§cFly desativado!");
					} else {
						p.setFlying(true);
						p.sendMessage("§cFly ativado!");
					}
				} else {
					p.sendMessage("§cSem permissão!");
					return true;
				}
			}
		}
		return false;
	}
Link para o comentário
Compartilhar em outros sites

private static boolean fly = false;
 
// ....
 
@Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (sender instanceof Player) { 
            Player p = (Player)sender;
             if(this.fly) {
                    p.setAllowFlight()
                    p.setFlying();
             }
            if (label.equalsIgnoreCase("fly")) {
                    this.fly = !this.fly;
            }
        }
        return false;
    }

editei do kra acima

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

 

Assim:

@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		if (sender instanceof Player) {//Ve se o sender e player
			Player p = (Player)sender;
			if (label.equalsIgnoreCase("fly")) {
				if (p.hasPermission("vua")) {
					if (p.isFlying()) {
						p.setFlying(false);
						p.sendMessage("§cFly desativado!");
					} else {
						p.setFlying(true);
						p.sendMessage("§cFly ativado!");
					}
				} else {
					p.sendMessage("§cSem permissão!");
					return true;
				}
			}
		}
		return false;
	}

Da um erro no console

post-2072-0-70438900-1445197217_thumb.jpg

 

e quando eu dou o comando

post-2072-0-73979200-1445197284_thumb.jpg

Link para o comentário
Compartilhar em outros sites

le o meu codigo, n vai dar erro

 

o erro era porque você seta o jogador para voar, sem ter a permissão de voar (AllowFlight)

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

Guest LukasDev_
Player p = (Player)sender;
if(cmd.getName().equalsIgnoreCase("fly"));
   p.sendMessage("FLY OFF!")
   p.setFlying(false);
   } else {
   
   p.sendMessage("Fly ON!")
   p.setFlying(true);

Se não colocou as msg da config naquele erro, sugiro você colocar as mensagens pelo eclipse mesmo!

Link para o comentário
Compartilhar em outros sites

Só taca isso onde ta pra desligar o fly

 p.setAllowFlight(false);

 

e pra ligar

 

 p.setAllowFlight(true);

 

Tenta usar a que eu te passei então. 

 

o

private static boolean fly = false;

você coloca no inicio do codigo

Isso seria para todos, se um ativar vai ativar pra todos...

NO MEU CODE LÁ

Link para o comentário
Compartilhar em outros sites

Só taca isso onde ta pra desligar o fly

 p.setAllowFlight(false);

 

e pra ligar

 

 p.setAllowFlight(true);

 

Isso seria para todos, se um ativar vai ativar pra todos...

NO MEU CODE LÁ

Passa no pastebin, ajuda muito na minha vida

Link para o comentário
Compartilhar em outros sites

Só taca isso onde ta pra desligar o fly

 p.setAllowFlight(false);

 

e pra ligar

 

 p.setAllowFlight(true);

 

 

Isso seria para todos, se um ativar vai ativar pra todos...

NO MEU CODE LÁ

O caceta, ai eu te pergunto, o console e player? Pq diaxo tu passa o cod pra ele pega player p, e ele quer fazer executar pelo console, tira esse instanceof, quando chegar em casa de nao tiver resolvido, eu faço o cor, to pelo celular.

 

 

@Edit

if(command.getName().equalsIgnoreCase("fly")){
			boolean isPlayer = false;
			Player p = null;
			if(sender instanceof Player){
				isPlayer = true;
				p = (Player)sender;
			}
			if(args.length == 0 ){
				if(!isPlayer){
					sender.sendMessage("§cUtilize §f/fly {Player}");
					return true;
				}
				if(p.isFlying()){
					p.setFlying(false);
					sender.sendMessage("§aFly Desativado");
				}else{
					p.setFlying(true);
					sender.sendMessage("§aFly Ativado");
				}
				return true;
			}
			if(args.length == 1){
				if(isPlayer){
					if(!sender.hasPermission("fly.outros")){
						sender.sendMessage("§cVoce nao possui permissao");
						return true;
					}
				}
				Player alvo = Bukkit.getPlayer(args[0]);
				if(alvo == null){
					sender.sendMessage("§c" + args[0] + " esta offline");
					return true;
				}
				if(!alvo.isOnline()){
					sender.sendMessage("§c" + args[0] + " esta offline");
					return true;
				}
				if(alvo.isFlying()){
					alvo.setFlying(false);
					sender.sendMessage("§aVoce desativou o fly de " + args[0]);
				}else{
					alvo.setFlying(true);
					sender.sendMessage("§aVoce ativou  o fly de " + args[0]);
				}
				return true;
			}
		}

Tecnicamente é para funcionar no console :c

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

O caceta, ai eu te pergunto, o console e player? Pq diaxo tu passa o cod pra ele pega player p, e ele quer fazer executar pelo console, tira esse instanceof, quando chegar em casa de nao tiver resolvido, eu faço o cor, to pelo celular.

 

 

@Edit

if(command.getName().equalsIgnoreCase("fly")){
			boolean isPlayer = false;
			Player p = null;
			if(sender instanceof Player){
				isPlayer = true;
				p = (Player)sender;
			}
			if(args.length == 0 ){
				if(!isPlayer){
					sender.sendMessage("§cUtilize §f/fly {Player}");
					return true;
				}
				if(p.isFlying()){
					p.setFlying(false);
					sender.sendMessage("§aFly Desativado");
				}else{
					p.setFlying(true);
					sender.sendMessage("§aFly Ativado");
				}
				return true;
			}
			if(args.length == 1){
				if(isPlayer){
					if(!sender.hasPermission("fly.outros")){
						sender.sendMessage("§cVoce nao possui permissao");
						return true;
					}
				}
				Player alvo = Bukkit.getPlayer(args[0]);
				if(alvo == null){
					sender.sendMessage("§c" + args[0] + " esta offline");
					return true;
				}
				if(!alvo.isOnline()){
					sender.sendMessage("§c" + args[0] + " esta offline");
					return true;
				}
				if(alvo.isFlying()){
					alvo.setFlying(false);
					sender.sendMessage("§aVoce desativou o fly de " + args[0]);
				}else{
					alvo.setFlying(true);
					sender.sendMessage("§aVoce ativou  o fly de " + args[0]);
				}
				return true;
			}
		}

Tecnicamente é para funcionar no console :c

O cod esta desse jeito, http://pastebin.com/FJ1umyRv

Tem como você me passa no pastebin, fica mais facil para mim...

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

O cod esta desse jeito, http://pastebin.com/FJ1umyRv

Tem como você me passa no pastebin, fica mais facil para mim...

eu te passei o código já, só saber onde colocar, se é um comando, pq você não está definindo o comando? Não irei passar o projeto pronto não, eu já fiz foi muito passando o código, geralmente dou o caminho, e você que encontra, só saber onde colocar agora.

Link para o comentário
Compartilhar em outros sites

Isso seria para todos, se um ativar vai ativar pra todos...

NO MEU CODE LÁ

 

temos um "desenvolvedor" tao lixo nesse forum

 

ok vamos la no meu codigo novamente:

private static boolean fly = false;
 
// ....
 
@Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (sender instanceof Player) { 
            Player p = (Player)sender;
             if(this.fly) {
                    p.setAllowFlight()
                    p.setFlying();
             }
            if (label.equalsIgnoreCase("fly")) {
                    this.fly = !this.fly;
            }
        }
        return false;
    }

Se p = o jogador que mandou o comando, como que o fly ativaria pra todos os players? vc tem demencia?

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

 

temos um "desenvolvedor" tao lixo nesse forum

 

ok vamos la no meu codigo novamente:

private static boolean fly = false;
 
// ....
 
@Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (sender instanceof Player) { 
            Player p = (Player)sender;
             if(this.fly) {
                    p.setAllowFlight()
                    p.setFlying();
             }
            if (label.equalsIgnoreCase("fly")) {
                    this.fly = !this.fly;
            }
        }
        return false;
    }

Se p = o jogador que mandou o comando, como que o fly ativaria pra todos os players? vc tem demencia?

Essa boolean esta pra todos, agr so tem 1 player no sv?

 

¬¬

Lixão

 

HashMap<Player, Boolean> d = new HashMap<>();

d.put(p, true);

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

Cara, só acho que você não setou o comando..

 

Após setar o comando na plugin.yml da seguinte forma:

 

commands:

(2 espaços)  fly:

                      (mais 2 espaços)  description: descrição

 

 

Seta na Main.

 

getCommand("fly").setExecutor(new NomeDaClassDoComando());

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

wtf??????????w

 

le isso:

Player p = (Player)sender;

SENDER É O COMMAND SENDER, OU SEJA, SO VAI DAR FLY PRA ELE

Só pra informar, estes boolean está estático que é inútil, e fora que ele está para QUALQUER 1 QUE EXECUTAR O COMANDO, não vem com essa de "olha, é só o commandsender" pra mim, leia seu código, não venha querendo chegar desmerecendo um usuário, para que a boolean funcione somente para o player do modo que está usando, utilize pelo menos boolean isFlying = p.isFlying() onde retornará a boolean, que no caso foi o que fiz, e coloque dentro do comando, não fora e ainda mais estático. E não sei se você sabe ler, ele pediu para o console executar o comando, neste caso, não tem que colocar para executar o comando somente para Players (sender instanceof Player ), pois se o console executar o comando, não irá funcionar nada.

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

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