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

барс_скорость

Новичок
Пользователь
Баллы
16
Всем здравствуйте. Я хочу сделать плагин, чтобы если ник игрока содержит слово "HungerCat"
плагин его сразу банил. Я написал код, но плагин не работает, хотя в /plugins не красный.
В коде ошибок вроде нет.

Код:
Код:
package hungercat;

import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class main extends JavaPlugin {
    public void onEnable() {
        this.getLogger().info("Your server protected from HungerCat!");
    }
    @SuppressWarnings("deprecation")
    public void onPlayerJoin(PlayerJoinEvent e) {
        if(e.getPlayer().getName().contains("HungerCat")) {
           e.getPlayer().setBanned(true);
        }
    }
}
 
Лишняя нагрузка на сервер. У меня сейчас бесплатный хостинг с 512мб озу. Этот человек сможет положить сервер своими перезаходами.
Твой банлист будет дольше итерироватся, чем работает метод string.contains
 
Вот держи и не забивай свою глупую голову ерундой.
Код:
    @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;
        }
    }
 
Последнее редактирование:
Вариант с конфигом и несколько никами.
Код:
    @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;
            }
        }
    }
 
Последнее редактирование:
Вариант с конфигом и несколько никами.

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;
            }
        }
       
    }
}
 
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;
            }
        }
     
    }
}
Это нормально, не обращай внимание на варнинг. this.plugin твоя ссылка на главный класс.
 
Там же есть getStringList.
Ну можно и так. Если не смущает перегон листа в лист).
Код:
    @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;
    }
 
Последнее редактирование:
Конфиг не работает.
Сделал без конфига, работает только если ник в нижнем регистре, HungerCat не работает

Я всё исправил. Спасибо всем большое.
 
Конфиг не работает.
Сделал без конфига, работает только если ник в нижнем регистре, HungerCat не работает

Я всё исправил. Спасибо всем большое.
Я же тебе давал с конфигом.
Код:
    @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 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;
    }
}
 
Назад
Верх