1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Проверка наличия слова в нике и бан

Тема в разделе "Разработка плагинов для новичков", создана пользователем барс_скорость, 25 июл 2019.

  1. alexandrage

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

    Баллы:
    173
    Твой банлист будет дольше итерироватся, чем работает метод string.contains
     
  2. alexandrage

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

    Баллы:
    173
    Вот держи и не забивай свою глупую голову ерундой.
    Код:
        @EventHandler
        public void ban(PlayerLoginEvent e) {
            this.plugin.reloadConfig();
            String name = e.getPlayer().getName().toLowerCase();
            if (name.contains("hungercat")) {
                e.disallow(Result.KICK_BANNED, ChatColor.RED + "Вы забанены!");
                return;
            }
        }
     
    Последнее редактирование: 4 авг 2019
  3. imDaniX

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

    Баллы:
    76
    Имя в Minecraft:
    imDaniX
    Тогда и вместо "HungerCat" - "hungercat"*
     
  4. alexandrage

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

    Баллы:
    173
    Да, точно.
     
  5. alexandrage

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

    Баллы:
    173
    Вариант с конфигом и несколько никами.
    Код:
        @EventHandler
        public void on(PlayerLoginEvent e) {
            this.plugin.reloadConfig();
            String name = e.getPlayer().getName().toLowerCase();
            List<String> banneds = this.plugin.getConfig().getStringList("banned");
            for (String banned : banneds) {
                if (name.contains(banned.toLowerCase())) {
                    e.disallow(Result.KICK_BANNED, ChatColor.RED + "Вы забанены!"");
                    return;
                }
            }
        }
     
    Последнее редактирование: 4 авг 2019
  6. Автор темы
    барс_скорость

    барс_скорость Новичок Пользователь

    Баллы:
    16
    this.plugin у меня не существует, и у мне предлагается поставить @SupressWarnings 'unchecked'

    а предупреждает
    Type safety: Unchecked cast from List<capture#1-of ?> to List<String>

    Код:
    package hungercat;
    
    import java.util.List;
    
    import org.bukkit.BanList;
    import org.bukkit.Bukkit;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerLoginEvent;
    import org.bukkit.event.player.PlayerLoginEvent.Result;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
    public class main extends JavaPlugin implements Listener
    {
        public void onEnable() {
            this.getLogger().info("Your server protected from HungerCat!");
            this.getServer().getPluginManager().registerEvents(this, this);
        }
        @EventHandler
        public void onPlayerJoin(PlayerLoginEvent e) {
            this.reloadConfig();
            String name = e.getPlayer().getName().toLowerCase();
            List<String> ban = (List<String>) this.getConfig().getList("bannednicks");
            for(String bannednicks : ban) {
                if(name.contains(bannednicks.toLowerCase())) {
                    e.disallow(Result.KICK_WHITELIST, "You are not whitelisted on this server");
                    return;
                }
            }
           
        }
    }
    
     
  7. alexandrage

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

    Баллы:
    173
    Это нормально, не обращай внимание на варнинг. this.plugin твоя ссылка на главный класс.
     
  8. imDaniX

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

    Баллы:
    76
    Имя в Minecraft:
    imDaniX
    Там же есть getStringList.
     
  9. alexandrage

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

    Баллы:
    173
    Ну можно и так. Если не смущает перегон листа в лист).
    Код:
        @Override
        @NotNull
        public List<String> getStringList(@NotNull String path) {
            List<?> list = getList(path);
    
            if (list == null) {
                return new ArrayList<String>(0);
            }
    
            List<String> result = new ArrayList<String>();
    
            for (Object object : list) {
                if ((object instanceof String) || (isPrimitiveWrapper(object))) {
                    result.add(String.valueOf(object));
                }
            }
    
            return result;
        }
     
    Последнее редактирование: 4 авг 2019
  10. Автор темы
    барс_скорость

    барс_скорость Новичок Пользователь

    Баллы:
    16
    я поставил плагин в таком виде, но ничего не работает, конфиг не появляется
     
  11. alexandrage

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

    Баллы:
    173
    И не должен. Ты же не проявил телодвижения на его создание.
    Код:
        @Override
        public void onEnable() {;
            this.saveDefaultConfig();
            this.reloadConfig();
     
  12. Автор темы
    барс_скорость

    барс_скорость Новичок Пользователь

    Баллы:
    16
    точно, спасибо
     
  13. Автор темы
    барс_скорость

    барс_скорость Новичок Пользователь

    Баллы:
    16
    Конфиг не работает.
    Сделал без конфига, работает только если ник в нижнем регистре, HungerCat не работает

    Я всё исправил. Спасибо всем большое.
     
  14. alexandrage

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

    Баллы:
    173
    Я же тебе давал с конфигом.
    Код:
        @EventHandler
        public void on(PlayerLoginEvent e) {
            String name = e.getPlayer().getName().toLowerCase();
            List<String> banneds = this.plugin.getConfig().getStringList("banned");
            for (String banned : banneds) {
                if (name.contains(banned.toLowerCase())) {
                    e.disallow(Result.KICK_BANNED, ChatColor.translateAlternateColorCodes('&',
                            this.plugin.getConfig().getString("bannedMessage")));
                    return;
                }
            }
        }
     
  15. alexandrage

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

    Баллы:
    173
    Вот целиком плагин.
    Код:
    package containsban;
    
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin {
    
        @Override
        public void onEnable() {
            this.saveDefaultConfig();
            this.reloadConfig();
            this.getServer().getPluginManager().registerEvents(new CbanListener(this), this);
            this.getCommand("cban").setExecutor(new CbanCommands(this));
        }
    }
    Код:
    package containsban;
    
    import java.util.List;
    
    import org.bukkit.ChatColor;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerLoginEvent;
    import org.bukkit.event.player.PlayerLoginEvent.Result;
    import org.bukkit.plugin.Plugin;
    
    public class CbanListener implements Listener {
        private Plugin plugin;
    
        public CbanListener(Plugin plugin) {
            this.plugin = plugin;
        }
    
        @EventHandler
        public void on(PlayerLoginEvent e) {
            String name = e.getPlayer().getName().toLowerCase();
            List<String> banneds = this.plugin.getConfig().getStringList("banned");
            for (String banned : banneds) {
                if (name.contains(banned.toLowerCase())) {
                    e.disallow(Result.KICK_BANNED, ChatColor.translateAlternateColorCodes('&',
                            this.plugin.getConfig().getString("bannedMessage")));
                    return;
                }
            }
        }
    }
    Код:
    package containsban;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.command.TabCompleter;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.Plugin;
    
    public class CbanCommands implements CommandExecutor, TabCompleter {
        Plugin plugin;
    
        public CbanCommands(Plugin plugin) {
            this.plugin = plugin;
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (sender.hasPermission("containsban.manage") && args.length == 2) {
                if (args[0].equalsIgnoreCase("add")) {
                    List<String> cban = this.plugin.getConfig().getStringList("banned");
                    cban.add(args[1]);
                    this.plugin.getConfig().set("banned", cban);
                    this.plugin.saveConfig();
                    for (Player player : Bukkit.getOnlinePlayers()) {
                        if (player.getName().toLowerCase().contains(args[1].toLowerCase())) {
                            player.kickPlayer(ChatColor.translateAlternateColorCodes('&',
                                    this.plugin.getConfig().getString("bannedMessage")));
                        }
                    }
                }
                if (args[0].equalsIgnoreCase("remove")) {
                    List<String> cban = this.plugin.getConfig().getStringList("banned");
                    cban.remove(args[1]);
                    this.plugin.getConfig().set("banned", cban);
                    this.plugin.saveConfig();
                }
            }
            return true;
        }
    
        public List<String> onTabComplete(CommandSender sender, Command cmd, String commandLabel, String[] args) {
            List<String> cmds = new ArrayList<String>();
            cmds.add("add");
            cmds.add("remove");
            if (args.length > 1) {
                return null;
            }
            return cmds;
        }
    }
     
  16. Автор темы
    барс_скорость

    барс_скорость Новичок Пользователь

    Баллы:
    16
    зачем мне конфиг?
     
  17. imDaniX

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

    Баллы:
    76
    Имя в Minecraft:
    imDaniX
    Сменит твой хакермен одну букву в нике, и станет твой плагин просто кирпичом.
     
  18. alexandrage

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

    Баллы:
    173
    +1 А там у меня еще и команда, херак и опять в бане все ники с общей строкой.
     
  19. Автор темы
    барс_скорость

    барс_скорость Новичок Пользователь

    Баллы:
    16
    мне кажется он не поймёт
     
  20. Dymeth

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

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    Можно думать, что не поймёт, а можно перестраховаться изменением одной строки )
     

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