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

Плагин [ADMN/SEC/INFO] CommandForbidden 1.0v Навигатор по командам, скрытие команд. [1.8.x-1.11.2.R0.1]

Тема в разделе "Неподтвержденные плагины", создана пользователем mitya, 26 янв 2017.

  1. Автор темы
    mitya

    mitya Новичок Пользователь

    Баллы:
    6
    Предыстория:
    Собственно, есть отдельные куски кода, разбросанные по jar файлам, которые собрал в один файл.
    Этот плагин из одного такого куска.
    Функционал этого куска гибок, о чём расскажу ниже, деть то его куда-то нужно!?
    Вот, добавил комментарии к исходникам и решил выложить сюда.

    Если для кого-то будет полезен, подумаю о выкладывании и других кусков кода.

    Так же; если видели плагины с аналогичным функционалом, пишите.
    Теперь собственно об этом плагине.
    Больше конечно он актуален для серверов с донатом, но и для других конечно не лишним может быть.
    Скрыть любую команду даже от игроков с op.
    Для каждой команды можно выводить своё сообщение.
    Поддерживаются альянсы команд.
    Можно запретить всю последовательность той или иной команды так и разрешить только параметры команды.
    При этом, на консоль плагин никак не влияет.
    В консоли как есть, так всё и остаётся.
    Для серверов где раздаётся консоль в донате, плагин не актуален!
    "Да и вообще считаю это перебором, раздавать консоль, видел сервера у которых в донате консоль+, консоль премиум."​


    Теперь по порядку:
    Скрыть любую команду даже от игроков с op:
    Код:
    forbidden:
        /pl: []
    
    Будет показано сообщение по умолчанию, как для этой команды, так и для её альянсов.

    Код:
    forbidden:
        /pl:
            message: "&Разрешение у админа спросил на просмотр списка?"
    
    Будет показано сообщение из строки message:.

    Код:
    forbidden:
        /promote:
            args: true
            message: "&6Чтобы повысить игроку ранг, используй команду: &a/promote <ник игрока>"
    
    Будет показано сообщение из строки message:, для этой команды если отсутствуют параметры команды.
    Соответственно команда /promote vasya отработает!

    Если указанно:
    Код:
        args: false
    
    То параметры команды уже не сработают и будет показано сообщение.
    Соответственно и если параметр args: вообще отсутствует будет аналогичное поведение.

    Для чего так делать!?
    Всё просто, пускай некоторые подумают, что это паранойя, но лишним не будет по причине того, что; например команда: /promote без параметров показывает версию плагина, что упрощает для агрессивно настроенных псевдохакеров, найти эксплоит для того или иного плагина.
    Во многих плагинах выводиться название и версия плагина, если ввести команду без параметров.
    Не знаю для чего так делают плагинисты, псевдопиар такой, или ещё что!?
    Этим самым мы в корне усложняем жизнь таким гостям сервера.
    И одновременно не ограничиваем игроков в функционале команд или минимум ограничиваем.

    Теперь об гибкости.
    Тот же NoCheatPlus не позволяет такого делать, только одно сообщение для всех запрещённых команд.
    Что лишает возможности сделать например:
    У нас работала команда /donate и по каким-то причинам мы решили данную команду переименовать в /donat.
    Прописываем в файле:​
    Код:
    forbidden:
        /donate:
            message: "&6Используй команду: &a/donat &6/donate больше не ипользуется на данном сервере."
    

    Собственно это основное, в остальном в конфиге разобраться не сложно.

    Кто-то может сказать: "так есть же commands.yml!".
    Да, есть, но его ограничения распространяются и на консоль тоже, что в принципе нам не нужно, так как за консолью сидит только один доверенный человек.

    Вообще из данного плагина не плохое начало для написания плагина на чистый и контролируемый донат. Запретить всё и разрешить только то, что мы разрешим явно для той или иной группы. Но это просто идея.

    Плагин принимает единственную команду на перезагрузку конфигурационного файла.
    Чтобы не перезагружать сервер после изменения конфига.
    /cforbidden reload

    Его permissions:
    Использовать перезагрузку конфигурационного файла из чата, сможет только тот у кого прописан permission cforbidden.bypass
    По умолчанию запрещено всем, даже операторам!
    Нужно прописывать явно.

    На консоль этот permission не действует!
    У консоли полные права.

    Так же в исходниках имеются комментарии, что будет полезно для начинающих.
    Принимаются жалобы, критика, пожелания!


    Version 1.0:
    • Собственно релиз.
    Version 1.01:
    • Поправил проверку на то, от кого пришла команда, с консоли или от того у кого явно присутствует permissions
    Version 1.02:
    • Добавлена совместимость с другими плагинами, делающее похожее.
    • Небольшая оптимизация кода
    Скачать:
    jar не в архиве
    SHA-1: CDDE84C3E8D4A384D91AC95FEFA75BE15658480B
    MD5: 7C41A48B00D880305236E37DA9A1AE21​

    jar в архиве
    SHA-1: 79E47A12F8211189ACE5D6336C8DFD4F3C570545
    MD5: 587D2A8B09A8DACA5559D2942F5559D0​

    src
    SHA-1: DDD473BF85FA14A90F2438F4E24FA13BBC0B9178
    MD5: FC62CF1C84FCC1536324F9223DFCEEB4​

    Всё в месте
    SHA-1: 20F64262AB0B1F31A6CCAC46A17833004DF727CC
    MD5: FBA3A7E801965A6A4DC470872A880D95
     
    Последнее редактирование: 5 фев 2017
  2. Хостинг MineCraft
    <
  3. jwplaster

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

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    В help команды по-прежнему отображаются?
     
  4. Автор темы
    mitya

    mitya Новичок Пользователь

    Баллы:
    6
    Не изменят результат выполнения команды.
    Как раз для helpa можно использовать и commands.yml.
    В стандартном выводе хелпа тоже много лишней инфы бывает
     
  5. Warluson

    Warluson Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Warluson
    upload_2017-1-26_17-0-35.png
    Хах, ты знаешь что будет когда я зайду под ником CONSOLE? :)
     
  6. Автор темы
    mitya

    mitya Новичок Пользователь

    Баллы:
    6
    Ничего страшного не будет, самое большое перезагрузить конфиг получится.
    Уже перезалил архивы без этой строчки.
    А вообще, хорошая практика запрещать возможно компрометирующие ники
     
    Последнее редактирование: 27 янв 2017
  7. GoogleKiller

    GoogleKiller Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Google_Killer
    Код:
    if(!sender instanceof Player){
      //kod
    }
    
    P.S. Скиньте свой вк)
     
    Последнее редактирование: 28 янв 2017
  8. AtomicInteger

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

    Баллы:
    46
    Сейчас налетят и скажут что нет такого Plauer :D
     
  9. Автор темы
    mitya

    mitya Новичок Пользователь

    Баллы:
    6
    Что этим хотели сказать?
    Зачем подобная проверка, если консоль не ограничивается никак
     
  10. GoogleKiller

    GoogleKiller Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Google_Killer
    То, что надёжнее проверять не отправлена ли команда из консоли таким методом, нежели через имя.)
     
  11. Автор темы
    mitya

    mitya Новичок Пользователь

    Баллы:
    6
    Спасибо
     
  12. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    sender.equals(Bukkit.getConsoleSender())[DOUBLEPOST=1485787651,1485787488][/DOUBLEPOST]this.getConfig().options().copyDefaults(true);
    Не нужно.
    if (cmd.getName().equalsIgnoreCase("cforbidden"))
    Не нужно x2
    final Set<String> keys =
    config.getKeys(false);
    Мммм ок, dos.
     
  13. Автор темы
    mitya

    mitya Новичок Пользователь

    Баллы:
    6
    Новая инфа.
    Код:
    sender.equals(Bukkit.getConsoleSender())
    
    Что за чудо Bukkit.getConsoleSender() ?

    c
    Код:
    this.getConfig().options().copyDefaults(true);
    
    Понятно, зачем лишнее чтение конфига если и так параметры по ходу выуживает.

    если убрать:
    Код:
    if (cmd.getName().equalsIgnoreCase("cforbidden"))
    
    то при инициализации команды будут 2 проверки срабатывать а не одна, или как?
    да и возможность добавления своих команд пропадает.

    Последнее вообще не понял!
    Или, так - зов сердца просто!?
     
  14. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Если команда одна - то проверка на ее имя не требуется
    Консоль
    equals(object) быстрее работает, чем instanceof
     
  15. CrazyCaopS

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

    Баллы:
    61
    Имя в Minecraft:
    CrazyCaopS
    ТОП ПЛАГИН!
    С помощью него, запретил все команды и приписал свои сообщения! СПАСИБО!
     

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