Войти или зарегистрироваться

Помогите Как получить текст который написал игрок в комманде

Статус
Закрыто для дальнейших ответов.

Lite-craft

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
shiroihana
/timp привет
Хочу получить слово которое игрок написал 'Привет' и отправить это другому игроку как в essentials /msg
 
http://rubukkit.org/posts/1326636
У тебя есть интернет. Почему вместо гугления ты пишешь сюда?
Вот тебе кусочек того кода, что я тебе приводил.
Разумеется, додумать проверки тебе нужно самому.
Java:
StringBuilder sb = new StringBuilder();
//Одной за одной строкой добавляет в StringBuilder
for (int i = 0; i < args.length; i++) {
    sb.append(args[i]).append(" ");
}
String message = sb.toString();
 
Может поможет.Вот

sender :/cmd label
Bohdan /m msg
где cmd=m;label=msg... ;sender=bohdan
Java:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    Player player = (Player)sender;
         if(label.length() > 1)
         {
  player.sendMessage(label);
    }
 
Последнее редактирование:
Делать нечева вот держи должно работать.
Java:
  @Override
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
     if(cmd.getName().equalsIgnoreCase("timp")){
       if(args[0].length() > 1 || label.length() > 1){
         Player p = Bukkit.getPlayer(args[0]);
         p.sendMessage(label);
         return true;
       }
     }
     return true;
  }
Ты сам понимаешь что делает этот код?
 
Мда и что я написал.:confused:
Вот комментарии твоего исправленного кода.
Java:
  @Override //Вау, Оверрайд. +1 балл
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
     if(cmd.getName().equalsIgnoreCase("timp")){ //Проверка на название команды. Тьфу, как не культурно. -1 балл
       if(args[0].length() > 1){ //IndexOutOfBoundsException, -1 балл
         Player p = Bukkit.getPlayer(args[0]); //Deprecated; без альтернатив.
         p.sendMessage(args[1]); //NullPointerException если игрок не найден. -1 балл
         return true;
       }
     }
     return true;
  }

-2 балла.
 
Вот комментарии твоего исправленного кода.
Java:
  @Override //Вау, Оверрайд. +1 балл
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
     if(cmd.getName().equalsIgnoreCase("timp")){ //Проверка на название команды. Тьфу, как не культурно. -1 балл
       if(args[0].length() > 1){ //IndexOutOfBoundsException, -1 балл
         Player p = Bukkit.getPlayer(args[0]); //Deprecated; без альтернатив.
         p.sendMessage(args[1]); //NullPointerException если игрок не найден. -1 балл
         return true;
       }
     }
     return true;
  }

-2 балла.
Ща исправлятса буду.Ща все будет 5 минут нада.
 
А как получить онлайн опов и написать им никнэйм игрока который вышел
e.getPlayer().sendMessage(this.getConfig().getString("NickName")); Вот то что вынимает ник игрока который прописал комманду его записало в конфиги
А теперь мне надо чтобы ник этого игрока вынимался из конфига и рассылался всем опам онлайн на сервере
 
Не смейтесь :oops:.Непроверял + добавил проверки.
Java:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
       if (args.length == 0) {
         sender.sendMessage(ChatColor.GREEN + "/" + label + " [игрок] [сообщение] - Отправить личное [сообщение] игроку [игрок].");
        } else if (args.length == 1) {
          sender.sendMessage(ChatColor.RED + "Введите сообщение.");
          return true;
        } else if (args.length > 1) {
          if (sender.getName().equalsIgnoreCase(args[0])) {
            sender.sendMessage(ChatColor.RED + "Нельзя шептать себе.");
            return true;
        }
        OfflinePlayer pl = Bukkit.getOfflinePlayer(args[0]);
        if (sender instanceof Player) {
               if ((pl.isOnline() && (!((Player) sender).canSee(pl.getPlayer()))) || !pl.isOnline()) {
                 sender.sendMessage(ChatColor.RED + "Игрок не в сети.");
                 return true;
                 }
               }
        }
       String message = "";
       for (int i = 1; i < args.length; i++) {
         message += args[i] + " ";
       }
       Player p = Bukkit.getPlayer(args[0]);
       p.sendMessage(ChatColor.GRAY + "[" + sender.getName() + "->" + Bukkit.getPlayer(args[0]).getName() + "]: " + message);
       return true;
       }
      }
 
А как получить онлайн опов и написать им никнэйм игрока который вышел
e.getPlayer().sendMessage(this.getConfig().getString("NickName")); Вот то что вынимает ник игрока который прописал комманду его записало в конфиги
А теперь мне надо чтобы ник этого игрока вынимался из конфига и рассылался всем опам онлайн на сервере
Ответьте плз мне срочно нужно!
 
Не смейтесь :oops:.Непроверял + добавил проверки.
Java:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
       if (args.length == 0) {
         sender.sendMessage(ChatColor.GREEN + "/" + label + " [игрок] [сообщение] - Отправить личное [сообщение] игроку [игрок].");
        } else if (args.length == 1) {
          sender.sendMessage(ChatColor.RED + "Введите сообщение.");
          return true;
        } else if (args.length > 1) {
          if (sender.getName().equalsIgnoreCase(args[0])) {
            sender.sendMessage(ChatColor.RED + "Нельзя шептать себе.");
            return true;
        }
        OfflinePlayer pl = Bukkit.getOfflinePlayer(args[0]);
        if (sender instanceof Player) {
               if ((pl.isOnline() && (!((Player) sender).canSee(pl.getPlayer()))) || !pl.isOnline()) {
                 sender.sendMessage(ChatColor.RED + "Игрок не в сети.");
                 return true;
                 }
               }
        }
       String message = "";
       for (int i = 1; i < args.length; i++) {
         message += args[i] + " ";
       }
       Player p = Bukkit.getPlayer(args[0]);
       p.sendMessage(ChatColor.GRAY + "[" + sender.getName() + "->" + Bukkit.getPlayer(args[0]).getName() + "]: " + message);
       return true;
       }
      }
Уже лучше. Но лучше оставить Bukkit.getPlayer(String). Если вернёт null, то игрока нет в сети. Это быстрее будет, чем искать в OfflinePlayers.
Собирать сообщение лучше через StringBuilder - вроде бы как это менее ресурсозатратно.
А как получить онлайн опов и написать им никнэйм игрока который вышел
e.getPlayer().sendMessage(this.getConfig().getString("NickName")); Вот то что вынимает ник игрока который прописал комманду его записало в конфиги
А теперь мне надо чтобы ник этого игрока вынимался из конфига и рассылался всем опам онлайн на сервере
Bukkit.broadcast("Ti lal", "bukkit.broadcast.scradmin");
 
Bukkit.broadcast("Ti lal", "bukkit.broadcast.scradmin");
Нет вы меня не поняли...
Bukkit.broadcast("Ti lal", "bukkit.broadcast.scradmin");
Сейчас перефразирую
В конфиге у меня записывается ник игрока прописывающего комманду
Мне нужно чтобы этот ник вынимался из конфига
И присылался каждому опу, но только опам
Или это я не понял :oops:
 
Нет вы меня не поняли...

Сейчас перефразирую
В конфиге у меня записывается ник игрока прописывающего комманду
Мне нужно чтобы этот ник вынимался из конфига
И присылался каждому опу, но только опам
Или это я не понял :oops:
ДА он все верна написал.Если у игрока есть пермишенс bukkit.broadcast.scradmin тогда он увидет сообщения.У опов есть все ванильние права потому и толька им будет сообщения приходить.
Java:
    @EventHandler
    public void quit(PlayerQuitEvent e){
    if(e.getPlayer().getName() == this.getConfig().getString("NickName")){
       Bukkit.broadcast(e.getPlayer().getDisplayName() + "","permisiion");
       e.setQuitMessage("");
    }
    else{e.setQuitMessage("Для простих игроков");}

     }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх