Ir para conteúdo

BUKKIT|Uma ajudinha com cooldowns?


Nevidomyy

Posts Recomendados

Olá novamente, kk, então eu estou tentando colocar um cooldown em um código que fiz, todos os tutoriais que eu encontrei faziam com scheduler então fui tentar  fazer igual, porém quando escrevi os códigos deu um erro na parte scheduleSyncDelayedTask, quando passei o mouse em cima tinha 3 opções para resolver o erro, implementar Plugin, quando implementei deu outro erro que so deu pra resolver criando varias coisas na classe, então descartei essa poção, outra forma de resolver foi colocando (Plugin) antes de this, deste jeito Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin) this,new Runnable() {, porém quando faço isso o cooldown n funciona, se alguém souber uma forma de me ajudar, to precisando muito por que já re-fiz varias vezes esse código e sempre da o mesmo erro.

Citar

    public static ArrayList<String> cold = new ArrayList<String>();
    
   @EventHandler
   public void Habilidade2 (PlayerInteractEvent e) {
        Player p = e.getPlayer();
        if (p.getItemInHand().getType() == Material.BOW) {
            if (p.getInventory().contains(Material.FIREWORK_CHARGE)) {
                if (e.getAction() == Action.LEFT_CLICK_AIR) {
                    if (p.isSneaking()) {
                        if (arquer.contains(p.getName())) {
                            if (!(cold.contains(p.getName()))) {
                            p.setVelocity(p.getLocation().getDirection().multiply(+1));
                            p.playSound(p.getLocation(), Sound.BLOCK_STONE_HIT, 10, 1);
                            p.playEffect(p.getLocation().add(+1, 0, 0), Effect.CLOUD, 20);
                            p.playEffect(p.getLocation().add(-1, 0, 0), Effect.CLOUD, 20);
                            p.playEffect(p.getLocation().add(0, 0, +1), Effect.CLOUD, 20);
                            p.playEffect(p.getLocation().add(0, 0, -1), Effect.CLOUD, 20);
                            p.getInventory().removeItem(new ItemStack(Material.FIREWORK_CHARGE));
                            cold.add(p.getName());
                            Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin) this,new Runnable() {
                                public void run() {
                                    cold.remove(p.getName());
                                    p.sendMessage("§aVocê pode usar o Salto Foguete agora!");
                                }
                            }, 5 * 20);
                            
                            } else {
                                p.sendMessage("§cVocê esta cansado para usar essa habilidade!");
                            }
                        }
                    }
                }
            }
        }

 

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

Creio que o erro está acontecendo por que esse "this" tem que ser a main do seu plugin, e você está declarando this para sua classe atual.

Tenta criar uma extensão da sua main(não sei se é uma extensão necessariamente.) mas tipo faz coloca isso na sua main:

public static Main plugin;

Depois vc coloca dentro do onenable isso:

plugin = this;

declarando o plugin para a classe atual, no caso a main.

Então em Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin) this,new Runnable() {

vc coloca 'Main.plugin' no lugar de '(Plugin) this'.

(Lembrando que o nome main no 'public static Main plugin;' tem que o nome da sua classe. Se sua classe for Principalteria que ser 'public static Principal plugin;'

Se não entendeu chama ai ?

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

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