Commende qui en exécute une autre

TheRealShixy

Bucheron
4 Janvier 2022
12
0
11
23
Bonjour, j'aimerais bien créer une commande /vanish qui, si on est pas invisible, nous met invisibility II infini sans particules, et si on refais /vanish, on redevient normal.
Ca serait donc pour exécuter une commende qui en exécute une autre (/vanish ==> /effect give <Joueur/Mob><Effet de potion>[Durée][Niveau][Masquer les particules]).
Eta,t débutant en java, je ne sais pas comment coder ça... Pourriez-vous m'aider ?
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Bonsoir,

Tu pourrais effectivement passer par une commande mais le mieux serait de passer directement par la fonction que /effect utilise, ce qui sera plus rapide.
Java:
public class VanishCommand implements CommandExecutor {
   @Override
   public boolean onKommand(CommandSender sender, Command command, String label, String[] args) {
      if(!(sender instanceof LivingEntity)) {
         sender.sendMessage(ChatColor.RED + "Vous devez être un être vivant pour faire cela.");
         return true;
      }
      
      final LivingEntity livingSender = (LivingEntity) sender;
      final PotionEffect active = livingSender.getPotionEffect(PotionEffectType.INVISIBILITY);
      
      if(active == null) {
         livingSender.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 2, false, false, false));
      }
      else {
         livingSender.removePotionEffect(PotionEffectType.INVISIBILITY);
      }
      
      return true;
   }
}

Cf. la documentation pour PotionEffect, à noter que ce site bloque certains mots-clefs et que donc j'ai écrit onKommand pour le nom de fonction alors qu'il s'agit d'un « C » pour éviter qu'il me bloque ce message.

Cordialement,
ShE3py
 

TheRealShixy

Bucheron
4 Janvier 2022
12
0
11
23
Merci beaucoup, cela va beaucoup m'aider. Désolé pour les fautes d'orthographes mon ancien clavier avait un problème. Maintenant tout est réglé j'en ai un autre.
 
Dernière édition: