Ir para conteúdo
  • 0

[Resolvido] Como colocar DELAY em um comando?


Hemptt

Pergunta

Como coloco um delay de 3 segundos no meu plugin de /report?


Se puderem explicar agradeço <3



package Comandos;
 
 
import java.util.ArrayList;
 
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class Report implements CommandExecutor{
 
String under = "§7Under§bMC §7» ";
 
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (!(sender instanceof Player)){
sender.sendMessage(under + "§cVoce so pode executar o comando no servidor!");
return true;
}
Player p = (Player)sender;
if (cmd.getName().equalsIgnoreCase("report")){
if (args.length == 0){
p.sendMessage(under + "Use: §e/report <nick> <motivo>");
return true;
}
Player t = Bukkit.getPlayer(args[0]);
if (t == null){
p.sendMessage(under + "Esse player nao existe ou esta offline!");
} else {
String msg = "";
for (int i = 1; i < args.length; i++){
if (i == args.length - 1){
msg = msg + args[i];
} else {
msg = msg + args[i] + " ";
}
 
for (Player s : Bukkit.getOnlinePlayers()){
if (s.hasPermission("use.report")){
s.playSound(p.getLocation(), Sound.EXPLODE, 150F, 150F);
s.sendMessage("§c------------------------");
s.sendMessage(under + "§cReport:");
s.sendMessage("");
s.sendMessage("§aReportado: §7" + t.getName());
s.sendMessage("§aMotivo: §7" + msg);
s.sendMessage("§aVitima: §7" + p.getName());
s.sendMessage("");
s.sendMessage("§c------------------------");
p.sendMessage(under + "Você reportou §b" + t.getName() + ". §7Motivo: §b" + msg);
p.playSound(p.getLocation(), Sound.EXPLODE, 150F, 150F);
}
}
}
}
}
return false;
 
}
}
 

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

7 respostass a esta questão

Posts Recomendados

Crie uma arrayList tipo player.

public static ArrayList<Player> delay = new ArrayList<Player>();

Depois quando o player digitar o comando, verifica se ele está na arrayList.

Se tiver, para o comando ali mesmo e se quiser pode enviar uma msg também.

if (delay.contains(e.getPlayer())){
     p.sendMessage ........ blablalbla
     return;
    }

Caso o player não esteja em delay, continua o comando, mas tem que adicionar o player na arryList.

 

Add o player na arrayList

delay.add(p);

Sheduler para retirar o player do delay, após 3 segundos.

                    Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                        public void run() {
                            delay.remove(p);
                        }
                    }
                    , 3 * 20L);
Editado por DigitalZero
Link para o comentário
Compartilhar em outros sites

Área errada, dúvidas relacionadas a Bukkit API / Java é em Java > Dúvidas.

 

Respondendo a dúvida:

Existem outras formas de se fazer, mas a mas fácil de se fazer que eu acho é:

 

- Crie uma ArrayList do tipo String ou de UUID tanto faz e lá você armazena o nick dele e quando ele der o comando "/report" verifica se ele já está na ArrayList se ele estiver retorna e envia uma mensagem, a você ainda tem que esperar e blablabla, caso ele não esteja na ArrayList adicione ele, depois crie uma task e após o tempo que você configurar lá na task, bote para remove-lo da ArrayList.

 

Use o vídeo do trow que o cara enviou ai em cima, da pra você entender +/-

Link para o comentário
Compartilhar em outros sites

Área errada, dúvidas relacionadas a Bukkit API / Java é em Java > Dúvidas.

 

Respondendo a dúvida:

Existem outras formas de se fazer, mas a mas fácil de se fazer que eu acho é:

 

- Crie uma ArrayList do tipo String ou de UUID tanto faz e lá você armazena o nick dele e quando ele der o comando "/report" verifica se ele já está na ArrayList se ele estiver retorna e envia uma mensagem, a você ainda tem que esperar e blablabla, caso ele não esteja na ArrayList adicione ele, depois crie uma task e após o tempo que você configurar lá na task, bote para remove-lo da ArrayList.

 

Use o vídeo do trow que o cara enviou ai em cima, da pra você entender +/-

Ok, próximas dúvidas crio o tópico na area de Java, cara tu fala achando que eu sei fazer tudo, mais não é bem assim...

Link para o comentário
Compartilhar em outros sites

Ok, próximas dúvidas crio o tópico na area de Java, cara tu fala achando que eu sei fazer tudo, mais não é bem assim...

Bom isso é bem básico, se não sabe oque é uma ArrayList recomendo aprender Java antes de Bukkit.

Não gosto de dar códigos prontos.

 

É oque o falou, porem não precisa ser uma ArrayList do tipo Player, se for do tipo Player vai armazenar muita coisa desnecessária como Location, Health, Hunger e etc...

Recomendo usa do tipo String.

 

 

Crie uma arrayList tipo player.

public static ArrayList<Player> delay = new ArrayList<Player>();

Depois quando o player digitar o comando, verifica se ele está na arrayList.

Se tiver, para o comando ali mesmo e se quiser pode enviar uma msg também.

if (delay.contains(e.getPlayer())){
     p.sendMessage ........ blablalbla
     return;
    }

Caso o player não esteja em delay, continua o comando, mas tem que adicionar o player na arryList.

 

Add o player na arrayList

delay.add(p);

Sheduler para retirar o player do delay, após 3 segundos.

                    Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                        public void run() {
                            delay.remove(p);
                        }
                    }
                    , 3 * 20L);

Recomendo usar do tipo String, armazena menos informações que você não vai usar e laga menos.

Link para o comentário
Compartilhar em outros sites

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