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

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

waterwalker

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
TheSeems
У меня есть код:
Код:
            @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"), то... Как это сделать?
___________________________
**** - это проверка, которая нужна
 
У меня есть код:
Код:
            @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"), то... Как это сделать?
___________________________
**** - это проверка, которая нужна
луп сделай через лист и чекай месседж на ключ
 
Код:
@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("Эта команда для Вас запрещена из-за предупреждения!"));              
  }}          
 }
 
Ты потенциальных будущих конкурентов устраняешь, или на самом деле никакого зловещего плана у тебя нет?

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

@waterwalker, даже не слушай его советы. Сперва нужно осознать тот факт, что используя getString ты получаешь строку (String), а не список (getStringList).
Получишь список -- у него уже узнаешь кол-во элементов и проитерируешь по ним.
Не очень понял, что Вы имеете ввиду.. Могу ли я попросить код?
 
Примерно такая логика, но извини — тестируй сам.
Java:
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("Эта команда для Вас запрещена из-за предупреждения!"));
   }
 
Последнее редактирование:
Примерно такая логика, но извини — тестируй сам.
Java:
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("Эта команда для Вас запрещена из-за предупреждения!"));
   }
Кстати, есть ли возможность преобразовать String,String... в String[] ?
 
Код:
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 с учетом того, что они перечислены через запятую... Можно это сделать ? :(
 
Кстати, есть ли возможность преобразовать String,String... в String[] ?
Создай новый List<String> и добовляй в него свои строки String.
Вообщем, вместо **** нужно получить список переменных типа String с учетом того, что они перечислены через запятую... Можно это сделать ? :(
Сам List<String> Нам покажи типа List<String> {"1","2","3"}
скажем так создали
List<String> list = new List<String>{"я крутой еблан", "я крутой ламер", "я крутой программер"};

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

теперь присваеваем в цикле наши значения из листа..
Java:
for(int i=0: i<z: i++){
wn.set(args[0].toLowerCase() + ".blockedcmds", list[i]);
}
 
List<String> list = new List<String>{"я крутой еблан", "я крутой ламер", "я крутой программер"};
Ошибка синтаксиса.
Ошибка компиляции.
Чем for-each конструкция плоха?!?
wn.set(args[0].toLowerCase() + ".blockedcmds", list);
Ошибка в логике программы.

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

Если сильно нужен String[], то просто String[] x = new String[] { "знач1", str2, "знач3" };
Но размер будет фиксирован.
Если кол-во элементов будет определено в рантайме, тогда
List<String> x = new ArrayList<>();
x.add("знач1");
x.add(str2);
...
wn.set(path, x);
 
Последнее редактирование:
Чем for-each конструкция плоха?!?
Хрен знает, я java не очень знаю привык на pascal писать.
List<String> list = new List<String>{"я крутой еблан", "я крутой ламер", "я крутой программер"};
Ошибка синтаксиса.

Сделай так String[] list = {"я крутой еблан", "я крутой ламер", "я крутой программер"};

Тогда
z = list.length;

Ошибка компиляции.
Не будет.
И ваще он спрашивал не про то как создать массив строк. А как ему эти строки вынуть.
Я написал простой пример, это не значит что он должен работать. Он должен донести просто как примерно это работает.
 
это не значит что он должен работать
Когда человек, не знающий правильного ответа, просит код, и ты пишешь ему в ответ код, твой код должен работать хоть бы с минимальными ошибками. А то, что постоянно пишешь ты, вообще нужно бесщадно тереть.
Не знаешь правильный ответ — не отвечай.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх