Ir para conteúdo

BUKKIT| Problema com arrayList


Nevidomyy

Posts Recomendados

Olá, eu sou bem novato na programação  e estou tentando fazer um plugin pro minecraft, estou tendo alguns problemas como este que estou pedindo ajuda a vocês ._.

seguinte, eu criei uma ArrayList do tipo String para salvar o nick de players que utilizassem determinado comando, e dps eu verificaria se um player que clicou no ar com uma flecha estava dentro da arraylist, se estivessem enviaria uma mensagem pro player, se nao nada acontecia. porém nada acontece nos 2 casos. aqui está o codigo se alguem puder me dar uma luz eu agradeceria ?

o comando está funcionando perfeitamente porém oque nao funciona é a parte em que clico com a flecha.

 

package Classes;


import java.util.ArrayList;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

public class Arqueiro implements Listener, CommandExecutor{
    
    
    ArrayList<String> arquer = new ArrayList<String>();
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] arg3) {
        
        Player p = (Player)sender;
        
        if (cmd.getName().equalsIgnoreCase("arqueiro")) {
            if (!(sender instanceof Player)) {
                return true;
            } else {
                p.sendMessage("§f§l[§c§l!§f§l]§a§lVoce escolheu a classe ARQUEIRO!");
                arquer.add(sender.getName());
            }
        }
        return false;
    }

    @EventHandler
    public void Skill1 (PlayerInteractEvent e) {
        Player p = e.getPlayer();
        if (p.getItemInHand().getType() == Material.ARROW) {
            if (e.getAction() == Action.LEFT_CLICK_AIR) {
                if (!(arquer.contains(p.getName()))) {
                    return;
                } else {
                    p.sendMessage("aaaa");
                }
            }
        }
    }
}

Link para o comentário
Compartilhar em outros sites

package Classes;


import java.util.ArrayList;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

public class Arqueiro implements Listener, CommandExecutor{
    
    
    ArrayList<String> arquer = new ArrayList<String>();
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] arg3) {
        if(!(sender instanceof Player))return true;


        Player p = (Player)sender;
        
        if (cmd.getName().equalsIgnoreCase("arqueiro")) {
                p.sendMessage("§f§l[§c§l!§f§l]§a§lVoce escolheu a classe ARQUEIRO!");
                arquer.add(sender.getName());
        }
        return false;
    }

    @EventHandler
    public void Skill1 (PlayerInteractEvent e) {
        Player p = e.getPlayer();
        if (p.getItemInHand().getType() == Material.ARROW) {
            if (e.getAction() == Action.LEFT_CLICK_AIR) {
                if (arquer.contains(p.getName())) {
                    p.sendMessage("aaaa");
                }
            }
        }
    }
}

eu refiz  algumas coisas pra diminuir as linhas de código, mas testa agora, qualquer problema me avise que estarei ajudando.

Link para o comentário
Compartilhar em outros sites

2 horas atrás, FortniteProperty disse:

package Classes;


import java.util.ArrayList;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

public class Arqueiro implements Listener, CommandExecutor{
    
    
    ArrayList<String> arquer = new ArrayList<String>();
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] arg3) {
        if(!(sender instanceof Player))return true;


        Player p = (Player)sender;
        
        if (cmd.getName().equalsIgnoreCase("arqueiro")) {
                p.sendMessage("§f§l[§c§l!§f§l]§a§lVoce escolheu a classe ARQUEIRO!");
                arquer.add(sender.getName());
        }
        return false;
    }

    @EventHandler
    public void Skill1 (PlayerInteractEvent e) {
        Player p = e.getPlayer();
        if (p.getItemInHand().getType() == Material.ARROW) {
            if (e.getAction() == Action.LEFT_CLICK_AIR) {
                if (arquer.contains(p.getName())) {
                    p.sendMessage("aaaa");
                }
            }
        }
    }
}

eu refiz  algumas coisas pra diminuir as linhas de código, mas testa agora, qualquer problema me avise que estarei ajudando.

Ok, não funcionou porém eu fiz uma modificação pra quando o player nao estiver na ArrayList mandar outra mensagem, então fui testar e antes de  eu dar o comando pra ser adicionado na ArrayList eu recebo a msg que programei, porém quando eu dou o comando pra entrar na ArrayList também recebo a mensagem que era pra ser recebida quando não estivesse na arrayList, acho que eu fiz algo errado no codigo pra entrar na arraylist e não sei oq é ._.

Link para o comentário
Compartilhar em outros sites

Agora, Trow_Games disse:

Muda isso:
 


  ArrayList<String> arquer = new ArrayList<String>();

Para:
 


public static ArrayList<String> arquer = new ArrayList<String>();

Dps me diz se funcionou ^^

Sim funcionou eu provavelmente vou precisar de ajuda futuramente, porém eu nao acredito que so faltava isso ._. me sinto triste e frustado kkk

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, Nevidomyy disse:

Sim funcionou eu provavelmente vou precisar de ajuda futuramente, porém eu nao acredito que so faltava isso ._. me sinto triste e frustado kkk

Opa, que bom que funcionou!!

Sim, faltava só isso kkk Relaxa, quem tá aprendendo é assim mesmo... Tô desenvolvendo um e-book para ensinar meus clientes/interessados a como desenvolver seus próprios plugins ou então melhorar os que já tem. Foi bom ver sua dúvida hehe 1 ponto a mais pra eu recordar ^^

E, sentir-se frustrado e triste, é MEGA normal. Só não deixa isso tirar de você o desejo de aprender e a vontade de fazer. ? Feliz 2019, que tu tenha muito sucesso.

Link para o comentário
Compartilhar em outros sites

14 horas atrás, FortniteProperty disse:

package Classes;


import java.util.ArrayList;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

public class Arqueiro implements Listener, CommandExecutor{
    
    
    ArrayList<String> arquer = new ArrayList<String>();
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] arg3) {
        if(!(sender instanceof Player))return true;


        Player p = (Player)sender;
        
        if (cmd.getName().equalsIgnoreCase("arqueiro")) {
                p.sendMessage("§f§l[§c§l!§f§l]§a§lVoce escolheu a classe ARQUEIRO!");
                arquer.add(sender.getName());
        }
        return false;
    }

    @EventHandler
    public void Skill1 (PlayerInteractEvent e) {
        Player p = e.getPlayer();
        if (p.getItemInHand().getType() == Material.ARROW) {
            if (e.getAction() == Action.LEFT_CLICK_AIR) {
                if (arquer.contains(p.getName())) {
                    p.sendMessage("aaaa");
                }
            }
        }
    }
}

eu refiz  algumas coisas pra diminuir as linhas de código, mas testa agora, qualquer problema me avise que estarei ajudando.

putz esqueci, se tu for criar arraylist sem "public", ela tem que ficar dentro do codigo

Link para o comentário
Compartilhar em outros sites

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