Vinetos

TP Téléphone

Dec 26th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.14 KB | None | 0 0
  1. package fr.vinetos.phone;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.command.Command;
  5. import org.bukkit.command.CommandSender;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.plugin.java.JavaPlugin;
  8.  
  9. import java.util.HashMap;
  10.  
  11. public class PlugPortable extends JavaPlugin {
  12.  
  13.     private HashMap<Player, Player> appels = new HashMap<Player, Player>();//On stoque les appels en cours
  14.     private HashMap<Player, Player> request = new HashMap<Player, Player>();//On stoque les demandes d'appels
  15.  
  16.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
  17.         /*On vérifie que ce qui envoie la commande est un joueur*/
  18.         if(!(sender instanceof Player)){
  19.             sender.sendMessage("§cVous devez être un joueur !");//On dit qu'il faut être un joueur
  20.             return true;
  21.         }
  22.         Player p = (Player) sender;//On cast le sender en Player
  23.  
  24.         /*Appeler un joueur*/
  25.         if(cmd.getName().equalsIgnoreCase("appeler")){
  26.  
  27.             if(args.length != 1){//On ne présise pas quel joueur ou il y a trop d'arguments
  28.                 p.sendMessage("§cErreur: /appeler <Player>");
  29.                 return true;//On annule la fonction (on la stop)
  30.             }
  31.  
  32.             if(!canCall(p)){//Si le joueur ne peut pas appeler
  33.                 p.sendMessage("§cVous avez déjà un appel en cours !");
  34.                 return true;
  35.             }
  36.  
  37.             if(Bukkit.getPlayerExact(args[0]) ==  null){//Si le joueur présisé n'est pas connecté
  38.                 p.sendMessage("§cCe joueur est introuvable !");
  39.                 return true;
  40.             }
  41.  
  42.             Player target = Bukkit.getPlayerExact(args[0]);
  43.             if(!canCall(target)){/*Le joueur présisé est déjà en appel*/
  44.                 p.sendMessage("§cCe joueur ne peut pas réponde, il est déjà en appel !");
  45.                 return true;
  46.             }
  47.  
  48.  
  49.             p.sendMessage("§aAppel en cours...");//On envoie l'appel
  50.             target.sendMessage("§6"+p.getName()+"§e vous appelle. Tapez §f/decrocher "+p.getName());
  51.             request.put(p, target);//On l'ajoute dans la Liste des demandes
  52.  
  53.         }
  54.  
  55.         /*Répondre à un appel*/
  56.         else if(cmd.getName().equalsIgnoreCase("decrocher")){
  57.             //Si on ne présice pas quel appels répondre
  58.             if(args.length != 1){
  59.                 p.sendMessage("§cErreur: /decrocher <Player>");
  60.                 return true;
  61.             }
  62.  
  63.             if(canCall(p)){//Si le joueur a déjà un appel en ours
  64.                 p.sendMessage("§cVous avez déjà un appel en cours !");
  65.                 return true;
  66.             }
  67.  
  68.             if(Bukkit.getPlayerExact(args[0]) ==  null){//Le joueur n'est pas connecté
  69.                 p.sendMessage("§cCe joueur est introuvable !");
  70.                 return true;
  71.             }
  72.  
  73.             Player caller = Bukkit.getPlayerExact(args[0]);
  74.             if(!request.containsKey(caller)){//Si le joueur présisé n'a pas appelé ce joueur
  75.                 p.sendMessage("§cCe joueur ne vous a pas appelé !");
  76.                 return true;
  77.             }
  78.  
  79.             if(!canCall(caller)){//Si on a déjà un appel en cours
  80.                 p.sendMessage("§cVous ne pouvez pas appeler 2 joueurs en même temps !");
  81.                 return true;
  82.             }
  83.  
  84.             request.remove(caller);//On supprimer la demande d'appel
  85.             appels.put(caller, p);
  86.         }
  87.  
  88.         /*Pour parler*/
  89.         else if(cmd.getName().equalsIgnoreCase("tel")){
  90.  
  91.             if(args.length >= 1){//Il n'y a pas de message
  92.                 p.sendMessage("§cErreur: /tel <Message>");
  93.                 return true;
  94.             }
  95.             if(canCall(p)){//Si on n'a pas d'appel en cours
  96.                 p.sendMessage("§cVous n'êtes dans aucun appel !");
  97.                 return true;
  98.             }
  99.             StringBuilder str = new StringBuilder();//On transforme les arguments en un seul
  100.             str.append("§b"+p.getName()+": §7");
  101.             for(int i = 0; i < args.length; i++){
  102.                 str.append(args[1]);
  103.             }
  104.             if(appels.containsKey(p)){//Si c'est nous qui avons appelé
  105.                 appels.get(p).sendMessage(str.toString());//On récupère l'aure joueur et on lui envoie le message
  106.             }else{//Si ce n'est pas nous qui avons appelé
  107.                 for(Player pls : appels.keySet()){//On récupère tous les joueurs qui ont appelés
  108.                     if(appels.get(pls).getName().equals(p.getName())){//On verifie que le joueur qui a appelé est dans note appel
  109.                         pls.sendMessage(str.toString());//On lui envoie le message
  110.                         break;//On stop la boucle pour évité les lags et parce qu'elle ne sert plus à rien
  111.                     }
  112.                 }
  113.             }
  114.             p.sendMessage(str.toString());//On s'envoie notre message
  115.         }
  116.         return false;
  117.     }
  118.  
  119.     private boolean canCall(Player p){//Si un joueur peux appeler
  120.         if(appels.containsKey(p) || appels.containsValue(p)){//Si on est déjà dans un appel
  121.             return false;
  122.         }
  123.         return true;
  124.     }
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment