Commande Minecraft Argument Int

Bonjour,

Je souhaiterai crée une commande Minecraft.
La commande est /slow (secondes).
Cependant, je ne sais pas comment crée une commande qui doit contenir uniquement un argument ayant comme valeur un Int.

Je voudrais notamment empêcher le /slow abcde et n'autoriser que des /slow 5, /slow 178...

Voici mon code (Vérification du Int à la ligne 19 qui est incomplète):
https://pastebin.com/vNWUJvr7

ou si vous préférez:

package fr.titisoli;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class Commands implements CommandExecutor {

 @Override
 public boolean onCommand(CommandSender sender, Command cmd, String msg, String[] args) {
  Player p = (Player)sender;
  if(sender instanceof Player){
   if(cmd.getName().equalsIgnoreCase("slow")){
    if(args.length==0){
     p.sendMessage("§4/slow <seconds>");
     return true;
    }else{
     if(args[0]){
      
     }
    }
   }
  }
  return false;
 }

}


Merci de vos réponses.

2 réponses

  1. Modérateur
    Bonjour,

    Tu peux t'en sortir facilement avec de la gestion d'exception.

    Exemple :

    try {
        int seconds = Integer.parseInt(args[0]);
        if (seconds > 0) {
            // ...
        }
    } catch (RuntimeException e) {
        e.printStackTrace();
    }
    1. Merci pour ta réponse.

      Cependant, saurait-tu pourquoi le temps d'attente ne s’exécute pas entre deux messages et si possibles, comment faire patientez le programme sans le Thread.sleep(); ou autre bout de code qui font endormir le serveur ou le plugin au lieu d'attendre ?

      Code:
      package fr.titisoli;

      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.player.PlayerChatEvent;

      @SuppressWarnings("deprecation")
      public class Commands implements CommandExecutor {

      public int secondsWait = 0;
      public String canChat = new String ("OK");

      @Override
      public boolean onCommand(CommandSender sender, Command cmd, String msg, String[] args) {
      Player p = (Player)sender;
      if(sender instanceof Player){
      if(cmd.getName().equalsIgnoreCase("slow")){
      if(args.length==0){
      p.sendMessage("§c/slow <seconds>");
      return true;
      }else{
      try {
      int seconds = Integer.parseInt(args[0]);
      p.sendMessage("§aVous devez maintenez patientez §7"+seconds+" §asecondes avant d'envoyer un message");
      secondsWait = seconds;
      } catch (RuntimeException e) {
      p.sendMessage("§cLe nombre de secondes est à formuler en chiffres");
      }
      }
      }
      }
      return false;
      }

      @EventHandler
      public void onChat(PlayerChatEvent e){
      Player player = e.getPlayer();
      if(player instanceof Player){
      if(canChat.equals("OK")){
      canChat="No";
      try {
      wait(secondsWait*1000);
      canChat="OK";
      } catch (InterruptedException e1) {
      e1.printStackTrace();
      player.sendMessage("§4Une erreur s'est produite");
      }
      }else{
      player.sendMessage("§4Vous êtes en SlowMode !");
      e.setCancelled(true);
      }
      }
      }

      }