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

Помогите Как узнать, содержится ли в команде элемент из списка?

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

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

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

    Баллы:
    61
    Имя в Minecraft:
    SeemsGood
    У меня есть код:
    Код:
                @EventHandler
                public void onCMD(PlayerCommandPreprocessEvent e){
                    if(wn.getString(e.getPlayer().getName().toLowerCase() + ".blockedcmds") != null){
                   ****{
                        e.setCancelled(true);
                        e.getPlayer().sendMessage(m("Эта команда для Вас запрещена из-за предупреждения!"));
                    }
    }
                }
    
    Нужно ввести проверку: если в команде содержится элемент из списка wn.getString(e.getPlayer().getName().toLowerCase() + ".blockedcmds"), то... Как это сделать?
    ___________________________
    **** - это проверка, которая нужна
     
  2. Хостинг MineCraft
    <
  3. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    луп сделай через лист и чекай месседж на ключ
     
  4. Автор темы
    waterwalker

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

    Баллы:
    61
    Имя в Minecraft:
    SeemsGood
    Можно код? XD
     
  5. Derik

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

    Баллы:
    76
    Имя в Minecraft:
    Derik
    Код:
      
    @EventHandler          
    public void onCMD(PlayerCommandPreprocessEvent e){               
    
    if(wn.getString(e.getPlayer().getName().toLowerCase() + ".blockedcmds") != null){
    //узнаем длину  списка
    int z = wn.getString(e.getPlayer().getName().toLowerCase() + ".blockedcmds").size();
    //или
    int z = wn.getString(e.getPlayer().getName().toLowerCase() + ".blockedcmds").length;
    //затем запускаем цикл и сравниваем
    for(int i = 0; i<z; i++){
    String name = wn.getString(e.getPlayer().getName().toLowerCase() + ".blockedcmds")[i] ;           
    
    if(name.equlas("ваш элемент из списка"){//то выполняем код                   
     e.setCancelled(true);                   
     e.getPlayer().sendMessage(m("Эта команда для Вас запрещена из-за предупреждения!"));              
      }}          
     }
     
  6. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Ты потенциальных будущих конкурентов устраняешь, или на самом деле никакого зловещего плана у тебя нет?

    @waterwalker, даже не слушай его советы. Сперва нужно осознать тот факт, что используя getString ты получаешь строку (String), а не список (getStringList).
    Получишь список -- у него уже узнаешь кол-во элементов и проитерируешь по ним.
     
  7. Derik

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

    Баллы:
    76
    Имя в Minecraft:
    Derik
    Да хрень какуюто сморозил. Но замысел понятен. Просто надо не строку а список вернуть.
     
  8. Автор темы
    waterwalker

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

    Баллы:
    61
    Имя в Minecraft:
    SeemsGood
    Не очень понял, что Вы имеете ввиду.. Могу ли я попросить код?
     
  9. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Примерно такая логика, но извини — тестируй сам.
    Код:
    String path = e.getPlayer().getName().toLowerCase() + ".blockedcmds");
    List<String> list = wn.getStringList(path);
    if(list == null || list.isEmpty())
       return; // В конфиге списка для этого ника нет.
    String cmd = e.getMessage().split("\\s+")[0];
    for(String str : list)
       if(cmd.equalsIgnoreCase(str)) {
          e.setCancelled(true);
          e.getPlayer().sendMessage(m("Эта команда для Вас запрещена из-за предупреждения!"));
       }
     
    Последнее редактирование: 4 окт 2016
  10. Автор темы
    waterwalker

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

    Баллы:
    61
    Имя в Minecraft:
    SeemsGood
    Кстати, есть ли возможность преобразовать String,String... в String[] ?
     
  11. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Пример?
     
  12. Автор темы
    waterwalker

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

    Баллы:
    61
    Имя в Minecraft:
    SeemsGood
    Код:
    if(PermissionsEx.getUser(sender.getName()).has("sbu.warn.blockcmd")){
                        try {
                            wn.load(wb);
                        } catch (IOException | InvalidConfigurationException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                        if(wn.getString(args[0].toLowerCase() + " warn 1") == null){
                      
                        wn.set(args[0].toLowerCase() + " warn 1" + ".warner", sender.getName().toLowerCase());
                        wn.set(args[0].toLowerCase() + " warn 1" + ".reason", df);
                        wn.set(args[0].toLowerCase() + ".blockedcmds", ****);
                        try {
                            wn.save(wb);
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        }
    
    Вообщем, вместо **** нужно получить список переменных типа String с учетом того, что они перечислены через запятую... Можно это сделать ? :(
     
  13. Derik

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

    Баллы:
    76
    Имя в Minecraft:
    Derik
    Создай новый List<String> и добовляй в него свои строки String.[DOUBLEPOST=1475590307,1475589998][/DOUBLEPOST]
    Сам List<String> Нам покажи типа List<String> {"1","2","3"}[DOUBLEPOST=1475590774][/DOUBLEPOST]скажем так создали
    List<String> list = new List<String>{"я крутой еблан", "я крутой ламер", "я крутой программер"};

    Теперь прежде чем что то присваивать узнаем длину нашего листа.
    z = list.length;

    теперь присваеваем в цикле наши значения из листа..
    Код:
    for(int i=0: i<z: i++){
    wn.set(args[0].toLowerCase() + ".blockedcmds", list[i]);
    }
     
  14. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Ошибка синтаксиса.
    Ошибка компиляции.
    Чем for-each конструкция плоха?!?
    Ошибка в логике программы.

    ЛИБО ВКЛЮЧИ ГОЛОВУ, ЛИБО ПЕРЕСТАНЬ СБИВАТЬ ЛЮДЕЙ.

    Если сильно нужен String[], то просто String[] x = new String[] { "знач1", str2, "знач3" };
    Но размер будет фиксирован.
    Если кол-во элементов будет определено в рантайме, тогда
    List<String> x = new ArrayList<>();
    x.add("знач1");
    x.add(str2);
    ...
    wn.set(path, x);
     
    Последнее редактирование: 4 окт 2016
  15. Derik

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

    Баллы:
    76
    Имя в Minecraft:
    Derik
    Хрен знает, я java не очень знаю привык на pascal писать.[DOUBLEPOST=1475591694,1475591345][/DOUBLEPOST]
    Сделай так String[] list = {"я крутой еблан", "я крутой ламер", "я крутой программер"};

    Тогда
    Не будет.[DOUBLEPOST=1475591853][/DOUBLEPOST]И ваще он спрашивал не про то как создать массив строк. А как ему эти строки вынуть.[DOUBLEPOST=1475591980][/DOUBLEPOST]Я написал простой пример, это не значит что он должен работать. Он должен донести просто как примерно это работает.
     
  16. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Когда человек, не знающий правильного ответа, просит код, и ты пишешь ему в ответ код, твой код должен работать хоть бы с минимальными ошибками. А то, что постоянно пишешь ты, вообще нужно бесщадно тереть.
    Не знаешь правильный ответ — не отвечай.
     
Статус темы:
Закрыта.

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