Помогите Не заменяется & на цвета и не только

Статус
Закрыто для дальнейших ответов.

_MasterCapeXD_

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
_MasterCapeXD_
Проблема в том, что в моем коде все вроде верно, но не заменяет & на цвета.Кроме того %playername% тоже не заменяется.Просто все не заменяется.Не могу понять, в чем проблема.В другом классе этот код работает, а в этом нет.
КОД:
JavaScript:
        Player p = e.getPlayer();
  
        //PermissionsEx
        PermissionUser user = PermissionsEx.getUser(p);
  
        String msg = plugin.getConfig().getString("options.joinmessage");
  
        msg.replaceAll("%playername%" , e.getPlayer().getName());
        msg.replaceAll("%pexprefix%", user.getPrefix());
        msg.replaceAll("%pexsuffix%", user.getSuffix());
        msg.replaceAll("&", "\u00a7");
  
        plugin.getConfig().set("options.joinmessage", msg);
        plugin.saveConfig();

Пробовал и msg.replace и msg.replaceAll.

Ну и да, хотел бы спросить, каким макаром можно проверить, указана ли локация в конфиге.Так как при заходе игрока его надо туда телепортировать, а секция пустая, пока он не установит через команду точку.И выводит ошибку, если локация в конфиге не установлена. Этот код не работает:
JavaScript:
        if((plugin.getConfig().getString("options.LobbyLocation.world").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.x").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.y").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.z").isEmpty())) return;
       
        Location tploc = plugin.ConfigToLocation();
        p.teleport(tploc);
 
Проблема в том, что в моем коде все вроде верно, но не заменяет & на цвета.Кроме того %playername% тоже не заменяется.Просто все не заменяется.Не могу понять, в чем проблема.В другом классе этот код работает, а в этом нет.
КОД:
JavaScript:
        Player p = e.getPlayer();

        //PermissionsEx
        PermissionUser user = PermissionsEx.getUser(p);

        String msg = plugin.getConfig().getString("options.joinmessage");

        msg.replaceAll("%playername%" , e.getPlayer().getName());
        msg.replaceAll("%pexprefix%", user.getPrefix());
        msg.replaceAll("%pexsuffix%", user.getSuffix());
        msg.replaceAll("&", "\u00a7");

        plugin.getConfig().set("options.joinmessage", msg);
        plugin.saveConfig();

Пробовал и msg.replace и msg.replaceAll.

Ну и да, хотел бы спросить, каким макаром можно проверить, указана ли локация в конфиге.Так как при заходе игрока его надо туда телепортировать, а секция пустая, пока он не установит через команду точку.И выводит ошибку, если локация в конфиге не установлена. Этот код не работает:
JavaScript:
        if((plugin.getConfig().getString("options.LobbyLocation.world").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.x").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.y").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.z").isEmpty())) return;

        Location tploc = plugin.ConfigToLocation();
        p.teleport(tploc);
некая начальная локация Location loc = e.getPlayer().getWorld().getSpawnLocation();
записываем ее если нет, или получаем из конфига если есть this.plugin.getConfig().getString("options.LobbyLocation.world",тут формат твоей локации);
Что по первому, вообще не понял зачем и почему. Сотри строчки
plugin.getConfig().set("options.joinmessage", msg);
plugin.saveConfig();
 
Последнее редактирование:
некая начальная локация Location loc = e.getPlayer().getWorld().getSpawnLocation();
записываем ее если нет, или получаем из конфига если есть this.plugin.getConfig().getString("options.LobbyLocation.world",тут формат твоей локации);
Был, как вариант, но я бы не хотел вообще телепортировать, если в конфиге в координатах пусто. Только что идея появилась, может получить локацию игрока, и если пусто, то телепортировать на ту же локацию где он и есть.Но тогда, через getString().isEmpty() сработает как проверка на пустоту в конфиге?
Что по первому, вообще не понял зачем и почему. Сотри строчки
plugin.getConfig().set("options.joinmessage", msg);
plugin.saveConfig();
Ну, можно попробовать, но в другом классе такой код спокойно работает и не машает замене цвета:
JavaScript:
        Player p = (Player) sender;
 
        if(sender instanceof Player)
        {
            if(cmd.getName().equalsIgnoreCase("setlobby"))
            {
                if(p.hasPermission("clobby.setlobby"))
                {
             
                    LocationToConfig(p.getLocation());
             
                    String set = getConfig().getString("options.LobbyLocation.lobbySet");
                    set = set.replace("&", "\u00a7");
                    getConfig().set("options.leavemessage", set);
                    saveConfig();
             
                    p.sendMessage(set);
             
                }
            }
        }
 
Последнее редактирование:
msg = msg.replace(...), ибо строки -- иммутабельны.
Ааааай, какой я слепой...Точно, спасибо!
Посоветуйте пожалуйста, как корректно сделать проверку на отсутствие локации в конфиге. Данный код не прокатывает.Мне нужно, чтобы игрока телепортировало, только если строка в конфиге не пуста:
JavaScript:
        if((plugin.getConfig().getString("options.LobbyLocation.world").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.x").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.y").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.z").isEmpty())) return;
      
        Location tploc = plugin.ConfigToLocation();
        p.teleport(tploc);
Часть конфига, отвечающего за сохранение координат:

Код:
options:
  LobbyLocation:
    world:
    x:
    y:
    z:
    lobbySet: '&aLobby location set!'
 
Java:
if (plugin.getConfig().getConfigurationSection("options.LobbyLocation").isSet("world")){
//  todo
}
+ твоя проверка на пустоту

должно работать
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх