1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Плагин [FUN] oShameBan - Унизь Читера

Тема в разделе "Неподтвержденные плагины", создана пользователем pan3l, 28 авг 2024.

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

    pan3l Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Oz1p
    Унизь читера и раздай всем игрокам его вещи!

    Команды
    /shameban [ник] [время] [причина] - Опозорить игрока

    /shameban reload - Перезагрузить плагин

    Сурс
    Тык

    Скачать
    Тык

    Права
    oshameban.reload - Перезагрузить config.yml
    oshameban.use - Использовать /shameban

    Демо
    [​IMG]
    Кастомизация
    [​IMG]

    Конфиг

    Код:
    prefix: "&x&C&B&2&D&3&Eᴏ&x&D&0&3&0&3&Eꜱ&x&D&4&3&4&3&Dʜ&x&D&9&3&7&3&Dᴀ&x&D&D&3&A&3&Cᴍ&x&E&2&3&D&3&Cᴇ&x&E&6&4&1&3&Bʙ&x&E&B&4&4&3&Bᴀ&x&E&F&4&7&3&Aɴ &8»"
    ban-command: "ban %player% %time% %reason%" # Команда бана
    args: 3 # Сколько аргументов (3 = player, time, reason | 2 = player, reason | 1 = player)
    shame-time: 100 # Время в тиках (20 тиков = 1 сек)
    effect-color: RED # Цвет эффекта
    spirals-amount: 15 # Количество спиралей
    effect-radius: 0.7 # Радиус эффекта
    y-Offset: 2 # Оффсет где будет спавнитсья эффект (2 = голова, 1 = тело, 0 = ноги)
    create-explosion: true # Взорвать игрока (Может убить других игроков)
    play-beacon-sound: true # Проиграть звук маяка
    sound-distance: 32 # За сколько блоков можно будет услышить звук.
    disable-movement: true # Запретить игроку двигаться
    lang:
      usage-1: "&f/oshameban [игрок] [время] [причина] &8- &7Опозорить игрока"
      usage-2: "&f/oshameban reload &8- &7Перезагрузить конфиг"
      no-perms: "&cНету прав!"
      player-offline: "&cИгрок %player% не в сети."
      reloaded: "&3Конфиг перезагружен."
    
    [​IMG]
     
  2. Folzy

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

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    А зачем настройки которые должны быть в самом коде, по типу args [1], args [2], args [3] выносить в config.yml? Или я чего-то не понял?
    shame-time: 100 в тиках, ты мог в коде просто прописать за скобками *1000, по типу - 5 секунд = 100 тиков, 1 тик = 50 миллисекунд, 100 * 50 = 5000, а тут сразу 5 * 1000 и будет 5000, а уже в config.yml прописываешь за место тиков, полноценные секунды. Только не забудь указать в void - long currentTime
     
    Последнее редактирование: 1 сен 2024
  3. Автор темы
    pan3l

    pan3l Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Oz1p
    args [1], args [2], args [3] нужны для того если админ не хочет например банить игрока на время то есть вместо (/ban игрок время причина) он хочет например написать (/ban игрок причина) то это не сработает ибо будет писать что слишком мало аргументов.
     
  4. Folzy

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

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    Тоже странно, можно прописать в коде, если кол-во аргументов после команды = 1, то выполняется это действие, если кол-во аргументов = 2, то выполняется другое действие и тд. Зачем выносить в config.yml и менять там, если можно просто настроить несколько подвидов команды, которая будет в зависимости от введённых кол-во аргументов, выполнять разные действия.

    Пример кода:

    Код:
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if (command.getName().equalsIgnoreCase("pl")) {
                if (args.length < 2) {
                    sender.sendMessage("Ошибка: необходимо указать ник игрока и время или причину.");
                    return true;
                }
    
                String playerName = args[0];
                Player target = Bukkit.getPlayer(playerName);
    
                if (target == null) {
                    sender.sendMessage("Игрок не найден.");
                    return true;
                }
    
                if (args.length == 2) {
                    try {
                        int time = Integer.parseInt(args[1]);
                        sender.sendMessage("Игрок " + playerName + " заблокирован на " + time + " минут.");
                    } catch (NumberFormatException e) {
                        String reason = args[1];
                        sender.sendMessage("Игрок " + playerName + " заблокирован навсегда. Причина: " + reason);
                    }
                } else if (args.length == 3) {
                    try {
                        int time = Integer.parseInt(args[1]);
                        String reason = args[2];
                        sender.sendMessage("Игрок " + playerName + " заблокирован на " + time + " минут. Причина: " + reason);
                    } catch (NumberFormatException e) {
                        sender.sendMessage("Ошибка: неверный формат времени.");
                    }
                }
                return true;
            }
            return false;
        }
    }
    А если суть в том что запретить админу банить навсегда игроков, то просто создай право для бана навсегда и не давай ему его или в принципе забери такое право у него. В чём суть я так и не понял.
     
    Последнее редактирование: 3 сен 2024
  5. koten0k

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

    Баллы:
    46
    Небольшие вопросы по коду:
    1. Для чего в onDisable() ты очищаешь коллекцию и убираешь значения объектов?
    2. Зачем ты применяешь утилиту для Hex цветов, если их не используешь в данных сообщениях?
    3. Для чего currentShamed?
     
  6. BetterLex

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

    Баллы:
    76
    Это уже будет не то. Если количество аргументов, например указано 2, то есть ник и причина, то при недостатке аргументов тебе будет писать: /ban [ник] [причина], если делать всё в коде, то соответственно тебе будет отправлено сообщение сразу со всеми 3 аргументами. Пример: /ban [ник] [время] [причина].
     
  7. koten0k

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

    Баллы:
    46
    Но уменьшается кастомизация и более костыльно и менее лаконично.
     
  8. BetterLex

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

    Баллы:
    76
    Насчёт как это реализовано я не знаю, не смотрел исходники, но по поводу кастомизации, то наоборот её больше с этим.
     
  9. Автор темы
    pan3l

    pan3l Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Oz1p
    1. Привык так делать, хз почему.
    2. Если админ хочет использовать то чтобы была возможность.
    3. currenShamed нужен для того чтобы хранить игроков которые взлетают. Если бы этого списка не было челы бы ливали при виде эффекта и бы не получали бан.
     

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