Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lite-craft, 22 мар 2016.

Статус темы:
Закрыта.
  1. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    /timp привет
    Хочу получить слово которое игрок написал 'Привет' и отправить это другому игроку как в essentials /msg
     
  2. Хостинг MineCraft
    <
  3. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Args[1] Вот тебе.
     
  4. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Ам...[DOUBLEPOST=1458652258,1458651526][/DOUBLEPOST]
    А по подробнее
     
  5. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    http://rubukkit.org/posts/1326636
    У тебя есть интернет. Почему вместо гугления ты пишешь сюда?
    Вот тебе кусочек того кода, что я тебе приводил.
    Разумеется, додумать проверки тебе нужно самому.
    Код:
    StringBuilder sb = new StringBuilder();
    //Одной за одной строкой добавляет в StringBuilder
    for (int i = 0; i < args.length; i++) {
        sb.append(args[i]).append(" ");
    }
    String message = sb.toString();
     
  6. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Может поможет.Вот

    sender :/cmd label
    Bohdan /m msg
    где cmd=m;label=msg... ;sender=bohdan
    Код:
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        Player player = (Player)sender;
             if(label.length() > 1)
             {
      player.sendMessage(label);
        }
    
     
    Последнее редактирование: 22 мар 2016
  7. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Не нужно.
     
  8. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Ну да:eek:
     
  9. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Есть, сдесь понятнее.
     
  10. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ты сам понимаешь что делает этот код?
     
  11. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Мда и что я написал.:confused:
     
  12. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Вот комментарии твоего исправленного кода.
    Код:
      @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 балла.
     
  13. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Ща исправлятса буду.Ща все будет 5 минут нада.
     
  14. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    А как получить онлайн опов и написать им никнэйм игрока который вышел
    e.getPlayer().sendMessage(this.getConfig().getString("NickName")); Вот то что вынимает ник игрока который прописал комманду его записало в конфиги
    А теперь мне надо чтобы ник этого игрока вынимался из конфига и рассылался всем опам онлайн на сервере
     
  15. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Не смейтесь :oops:.Непроверял + добавил проверки.
    Код:
        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;
           }
          }
                
    
    
     
  16. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Ответьте плз мне срочно нужно!
     
  17. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Ой нето.
    Код:
        @EventHandler
         public void quit(PlayerQuitEvent e){
           if(e.getPlayer().isOp()){
            e.setQuitMessage(e.getPlayer() + "disconnect");
           }
           else{
             e.setQuitMessage("");
           }
         }
    
     
  18. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Уже лучше. Но лучше оставить Bukkit.getPlayer(String). Если вернёт null, то игрока нет в сети. Это быстрее будет, чем искать в OfflinePlayers.
    Собирать сообщение лучше через StringBuilder - вроде бы как это менее ресурсозатратно.
    Bukkit.broadcast("Ti lal", "bukkit.broadcast.scradmin");
     
  19. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Нет вы меня не поняли...[DOUBLEPOST=1458660605,1458660528][/DOUBLEPOST]
    Сейчас перефразирую
    В конфиге у меня записывается ник игрока прописывающего комманду
    Мне нужно чтобы этот ник вынимался из конфига
    И присылался каждому опу, но только опам[DOUBLEPOST=1458660827][/DOUBLEPOST]Или это я не понял :oops:
     
  20. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    ДА он все верна написал.Если у игрока есть пермишенс bukkit.broadcast.scradmin тогда он увидет сообщения.У опов есть все ванильние права потому и толька им будет сообщения приходить.
    Код:
        @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("Для простих игроков");}
    
         }
    
     
Статус темы:
Закрыта.

Поделиться этой страницей