Commande Minecraft Argument Int

Fermé
titisoli Messages postés 18 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 1 mars 2019 - Modifié le 31 oct. 2017 à 14:38
titisoli Messages postés 18 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 1 mars 2019 - 2 nov. 2017 à 12:40
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.
A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
31 oct. 2017 à 14:44
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
titisoli Messages postés 18 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 1 mars 2019
2 nov. 2017 à 12:40
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