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

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

Discussion in 'Неподтвержденные плагины' started by mitya, Jan 26, 2017.

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

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

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

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

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


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

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

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

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

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

    Теперь об гибкости.
    Тот же NoCheatPlus не позволяет такого делать, только одно сообщение для всех запрещённых команд.
    Что лишает возможности сделать например:
    У нас работала команда /donate и по каким-то причинам мы решили данную команду переименовать в /donat.
    Прописываем в файле:​
    Code:
    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
     
    Last edited: Feb 5, 2017
  2. Хостинг MineCraft
    <
  3. jwplaster

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

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

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

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

    Warluson Ньюби

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

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

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

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

    Trophy Points:
    31
    Имя в Minecraft:
    Google_Killer
    Code:
    if(!sender instanceof Player){
      //kod
    }
    
    P.S. Скиньте свой вк)
     
    Last edited: Jan 28, 2017
  8. AtomicInteger

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

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

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

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

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

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

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

    Trophy Points:
    6
    Спасибо
     
  12. xDark

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

    Trophy Points:
    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 Новичок Пользователь

    Trophy Points:
    6
    Новая инфа.
    Code:
    sender.equals(Bukkit.getConsoleSender())
    
    Что за чудо Bukkit.getConsoleSender() ?

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

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

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

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

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

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

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

Share This Page