Commande Minecraft Argument Int

titisoli Messages postés 21 Statut Membre -  
titisoli Messages postés 21 Statut Membre -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  2. titisoli Messages postés 21 Statut Membre
     
    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);
    }
    }
    }

    }
    0