Помогите Независимость конфигов от регистра

  • Автор темы Автор темы ToBlEzZ
  • Дата начала Дата начала

ToBlEzZ

Активный участник
Пользователь
Баллы
76
Всем привет!
Хочу дополнить плагин способностью игнорировать регистры при поиске чего-то в конфиге. При этом не хочу, чтобы в конфиги записывалось всё в нижнем регистре.
Пример:
Игрок - /warp TesT
В конфиге - Test
Игрока телепортирует на варп Test, при этом в сообщении пишется название варпа из конфига "Вы телепортировались на варп Test"

Просто сейчас метод проверки на существование варпа скажет "такого варпа не существует"

Как это сделать?
 
toLowerCase or equalsIgnoreCase
Я знаю про это. Уже использовал, чтобы хранить все названия и ники "прописными буквами" в конфиге. Во первых не красиво, во вторых легко запутаться.
Но если вы имели ввиду другое применение, то напишите его
 
Код:
protected void tpInMyHouse(Player p){
        Location home = Main.getHome(p.getName());
        p.teleport(home);
        p.sendMessage(Main.chat(DONE_COLOR) + this.plugin.getConfig().getString("teleport-message"));
    }
Код:
public static Location getHome(String name){
        Location loc = new Location(Bukkit.getWorld(homes.getString(name + ".world")),
                homes.getDouble(name + ".X"), Homes().getDouble(name + ".Y"), homes.getDouble(name + ".Z"), homes.getInt(name + ".Yaw"), homes.getInt(name + ".Pitch"));
        return loc;
    }//Да, я ещё не сделал сериализацию/десериализацию
Где дописать equalsIgnoreCase и что написать в его параметре?
 
Код:
protected void tpInMyHouse(Player p){
        Location home = Main.getHome(p.getName());
        p.teleport(home);
        p.sendMessage(Main.chat(DONE_COLOR) + this.plugin.getConfig().getString("teleport-message"));
    }
Код:
public static Location getHome(String name){
        Location loc = new Location(Bukkit.getWorld(homes.getString(name + ".world")),
                homes.getDouble(name + ".X"), Homes().getDouble(name + ".Y"), homes.getDouble(name + ".Z"), homes.getInt(name + ".Yaw"), homes.getInt(name + ".Pitch"));
        return loc;
    }//Да, я ещё не сделал сериализацию/десериализацию
Где дописать equalsIgnoreCase и что написать в его параметре?
Ну тут как минимум Location может вернуть null
 
Ну вот так например.
Код:
    public Entry<String, Location> get(Map<String, Location> map, String cmd) {
        for (Entry<String, Location> entry : map.entrySet()) {
            if (entry.getKey().equalsIgnoreCase(cmd)) {
                return entry;
            }
        }
        return null;
    }
 
Ну вот так например.
Код:
    public Entry<String, Location> get(Map<String, Location> map, String cmd) {
        for (Entry<String, Location> entry : map.entrySet()) {
            if (entry.getKey().equalsIgnoreCase(cmd)) {
                return entry;
            }
        }
        return null;
    }
Т.е. вы сделали (не силен в Map) "список", в который запихнули весь конфиг, а дальше построчно сравниваете "строку-название" с переданным аргументом вне зависимости от регистров?
 
Ну тут как минимум Location может вернуть null
Ну я не понимаю как такое может произойти. Если в конфиг записывается и перезаписывается Location, то null тут не вернётся. Тем более я проверяю на наличие соответствующей секции перед вызовом getHome.
Хотя intelli тоже говорит, что location может вернуть null
 
Назад
Верх