Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.vinetos.phone;
- import org.bukkit.Bukkit;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.util.HashMap;
- public class PlugPortable extends JavaPlugin {
- private HashMap<Player, Player> appels = new HashMap<Player, Player>();//On stoque les appels en cours
- private HashMap<Player, Player> request = new HashMap<Player, Player>();//On stoque les demandes d'appels
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
- /*On vérifie que ce qui envoie la commande est un joueur*/
- if(!(sender instanceof Player)){
- sender.sendMessage("§cVous devez être un joueur !");//On dit qu'il faut être un joueur
- return true;
- }
- Player p = (Player) sender;//On cast le sender en Player
- /*Appeler un joueur*/
- if(cmd.getName().equalsIgnoreCase("appeler")){
- if(args.length != 1){//On ne présise pas quel joueur ou il y a trop d'arguments
- p.sendMessage("§cErreur: /appeler <Player>");
- return true;//On annule la fonction (on la stop)
- }
- if(!canCall(p)){//Si le joueur ne peut pas appeler
- p.sendMessage("§cVous avez déjà un appel en cours !");
- return true;
- }
- if(Bukkit.getPlayerExact(args[0]) == null){//Si le joueur présisé n'est pas connecté
- p.sendMessage("§cCe joueur est introuvable !");
- return true;
- }
- Player target = Bukkit.getPlayerExact(args[0]);
- if(!canCall(target)){/*Le joueur présisé est déjà en appel*/
- p.sendMessage("§cCe joueur ne peut pas réponde, il est déjà en appel !");
- return true;
- }
- p.sendMessage("§aAppel en cours...");//On envoie l'appel
- target.sendMessage("§6"+p.getName()+"§e vous appelle. Tapez §f/decrocher "+p.getName());
- request.put(p, target);//On l'ajoute dans la Liste des demandes
- }
- /*Répondre à un appel*/
- else if(cmd.getName().equalsIgnoreCase("decrocher")){
- //Si on ne présice pas quel appels répondre
- if(args.length != 1){
- p.sendMessage("§cErreur: /decrocher <Player>");
- return true;
- }
- if(canCall(p)){//Si le joueur a déjà un appel en ours
- p.sendMessage("§cVous avez déjà un appel en cours !");
- return true;
- }
- if(Bukkit.getPlayerExact(args[0]) == null){//Le joueur n'est pas connecté
- p.sendMessage("§cCe joueur est introuvable !");
- return true;
- }
- Player caller = Bukkit.getPlayerExact(args[0]);
- if(!request.containsKey(caller)){//Si le joueur présisé n'a pas appelé ce joueur
- p.sendMessage("§cCe joueur ne vous a pas appelé !");
- return true;
- }
- if(!canCall(caller)){//Si on a déjà un appel en cours
- p.sendMessage("§cVous ne pouvez pas appeler 2 joueurs en même temps !");
- return true;
- }
- request.remove(caller);//On supprimer la demande d'appel
- appels.put(caller, p);
- }
- /*Pour parler*/
- else if(cmd.getName().equalsIgnoreCase("tel")){
- if(args.length >= 1){//Il n'y a pas de message
- p.sendMessage("§cErreur: /tel <Message>");
- return true;
- }
- if(canCall(p)){//Si on n'a pas d'appel en cours
- p.sendMessage("§cVous n'êtes dans aucun appel !");
- return true;
- }
- StringBuilder str = new StringBuilder();//On transforme les arguments en un seul
- str.append("§b"+p.getName()+": §7");
- for(int i = 0; i < args.length; i++){
- str.append(args[1]);
- }
- if(appels.containsKey(p)){//Si c'est nous qui avons appelé
- appels.get(p).sendMessage(str.toString());//On récupère l'aure joueur et on lui envoie le message
- }else{//Si ce n'est pas nous qui avons appelé
- for(Player pls : appels.keySet()){//On récupère tous les joueurs qui ont appelés
- if(appels.get(pls).getName().equals(p.getName())){//On verifie que le joueur qui a appelé est dans note appel
- pls.sendMessage(str.toString());//On lui envoie le message
- break;//On stop la boucle pour évité les lags et parce qu'elle ne sert plus à rien
- }
- }
- }
- p.sendMessage(str.toString());//On s'envoie notre message
- }
- return false;
- }
- private boolean canCall(Player p){//Si un joueur peux appeler
- if(appels.containsKey(p) || appels.containsValue(p)){//Si on est déjà dans un appel
- return false;
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment