Вопрос Не видит \n в конфиге

Версия Minecraft
1.20.X

klayeryt

Пользователь
Сообщения
1
При попытке сделать снос строки через \n не видит этот символ в player.kickplayer выводит только первую строку(обрезает).
Замена
Java:
    public static String replaceTagList(List<String> text,String name, String reason, String dataexception, String by, String uid) {
        int index = 0;
        String out = new String();
        for(String a : text) {
            a = a.replace("{by}", by);
            a = a.replace("{uid}", uid);
            a = a.replace("{name}", name);
            a = a.replace("{reason}", reason);
            a = a.replace("{time}", dataexception);
            a = a.replace("{GREEN}", ChatColor.GREEN.toString());
            a = a.replace("{BLACK}", ChatColor.BLACK.toString());
            a = a.replace("{DARK_GREEN}", ChatColor.DARK_GREEN.toString());
            a = a.replace("{DARK_RED}", ChatColor.DARK_RED.toString());
            a = a.replace("{GOLD}", ChatColor.GOLD.toString());
            a = a.replace("{DARK_GRAY}", ChatColor.DARK_GRAY.toString());
            a = a.replace("{RED}", ChatColor.RED.toString());
            a = a.replace("{YELLOW}", ChatColor.YELLOW.toString());
            a = a.replace("{DARK_BLUE}", ChatColor.DARK_BLUE.toString());
            a = a.replace("{DARK_AQUA}", ChatColor.DARK_AQUA.toString());
            a = a.replace("{DARK_PURPLE}", ChatColor.DARK_PURPLE.toString());
            a = a.replace("{GRAY}", ChatColor.GRAY.toString());
            a = a.replace("{BLUE}", ChatColor.BLUE.toString());
            a = a.replace("{AQUA}", ChatColor.AQUA.toString());
            a = a.replace("{LIGHT_PURPLE}", ChatColor.LIGHT_PURPLE.toString());
            a = a.replace("{WHITE}", ChatColor.WHITE.toString());
            a = a.replace("{BOLD}", ChatColor.BOLD.toString());
            a = a.replace("{ITALIC}", ChatColor.ITALIC.toString());
            a = a.replace("{MAGIC}", ChatColor.MAGIC.toString());
            a = a.replace("{UNDERLINE}", ChatColor.UNDERLINE.toString());
            a = a.replace("{RESET}", ChatColor.RESET.toString());
            a = a.replace("\\n","\n");
            text.set(index,a);
            out += text.get(index);
            index++;
        }
        return out;
    }
Хранение
Java:
    public static String DisplayBanMessage(String name, String reason, String dataxception, String by, String uid, int index) {
        /*
            String[0] - On Player
            String[1] - On Chat all
            String[2] - Unban on Chat
         */
        String[] message = new String[4];
        List<String> mes = UidBans.configMessage.getFile().getStringList("Ubans.message_perm_ban");
        message[1] = replaceTag(UidBans.configMessage.getFile().getString("Ubans.message_timeban_ban"),name,reason,dataxception,by, uid);
        message[2] = replaceTag(UidBans.configMessage.getFile().getString("Ubans.message_unban"),name,reason,dataxception,by, uid);
        message[0] = replaceTagList(mes,name,reason,dataxception,by, uid);
        message[3] = replaceTagList(UidBans.configMessage.getFile().getStringList("Ubans.message_kick"),name,reason,dataxception,by, uid);
        return message[index];
    }
Использование в kickplayer
Java:
banuser.kickPlayer(DisplayBanMessage(data, reason, now, by, uid, 0)); // Все аргументы правильные и работают, проверял когда пытался написать свою функцию сноса строки

Конфиг:
Код:
  message_perm_ban:
    - "{DARK_RED}---------------------------------\n"
    - "\n"
    - "Вы были заблокированы!\n"
    - "по причине: {reason}\n"
    - "Заблокировал: {by}\n"
    - "Дата разбана: {time}\n"
    - "\n"
    - "---------------------------------"
  message_kick:
    - "{DARK_RED}---------------------\n"
    - "\n"
    - "Вы были кикнуты!\n"
    - "  по причине: {reason}\n"
    - "\n"
    - "---------------------\n"
 
Последнее редактирование:
Очень странное решение у тебя однако. Я бы советовал использовать все же StringBuilder или StreamAPI для такого.
Условно говоря ты бы мог сделать так:
out = text.stream().map(s -> (заполняешь плейсхолдеры).collect(Collectors.joining(“\n”));
Ну и использовать \n в списке такое себе, у тебя каждый элемент как новая строка идет, так что в этом смысла нет.
 
При попытке сделать снос строки через \n не видит этот символ в player.kickplayer выводит только первую строку(обрезает).
Замена
Java:
    public static String replaceTagList(List<String> text,String name, String reason, String dataexception, String by, String uid) {
        int index = 0;
        String out = new String();
        for(String a : text) {
            a = a.replace("{by}", by);
            a = a.replace("{uid}", uid);
            a = a.replace("{name}", name);
            a = a.replace("{reason}", reason);
            a = a.replace("{time}", dataexception);
            a = a.replace("{GREEN}", ChatColor.GREEN.toString());
            a = a.replace("{BLACK}", ChatColor.BLACK.toString());
            a = a.replace("{DARK_GREEN}", ChatColor.DARK_GREEN.toString());
            a = a.replace("{DARK_RED}", ChatColor.DARK_RED.toString());
            a = a.replace("{GOLD}", ChatColor.GOLD.toString());
            a = a.replace("{DARK_GRAY}", ChatColor.DARK_GRAY.toString());
            a = a.replace("{RED}", ChatColor.RED.toString());
            a = a.replace("{YELLOW}", ChatColor.YELLOW.toString());
            a = a.replace("{DARK_BLUE}", ChatColor.DARK_BLUE.toString());
            a = a.replace("{DARK_AQUA}", ChatColor.DARK_AQUA.toString());
            a = a.replace("{DARK_PURPLE}", ChatColor.DARK_PURPLE.toString());
            a = a.replace("{GRAY}", ChatColor.GRAY.toString());
            a = a.replace("{BLUE}", ChatColor.BLUE.toString());
            a = a.replace("{AQUA}", ChatColor.AQUA.toString());
            a = a.replace("{LIGHT_PURPLE}", ChatColor.LIGHT_PURPLE.toString());
            a = a.replace("{WHITE}", ChatColor.WHITE.toString());
            a = a.replace("{BOLD}", ChatColor.BOLD.toString());
            a = a.replace("{ITALIC}", ChatColor.ITALIC.toString());
            a = a.replace("{MAGIC}", ChatColor.MAGIC.toString());
            a = a.replace("{UNDERLINE}", ChatColor.UNDERLINE.toString());
            a = a.replace("{RESET}", ChatColor.RESET.toString());
            a = a.replace("\\n","\n");
            text.set(index,a);
            out += text.get(index);
            index++;
        }
        return out;
    }
Хранение
Java:
    public static String DisplayBanMessage(String name, String reason, String dataxception, String by, String uid, int index) {
        /*
            String[0] - On Player
            String[1] - On Chat all
            String[2] - Unban on Chat
         */
        String[] message = new String[4];
        List<String> mes = UidBans.configMessage.getFile().getStringList("Ubans.message_perm_ban");
        message[1] = replaceTag(UidBans.configMessage.getFile().getString("Ubans.message_timeban_ban"),name,reason,dataxception,by, uid);
        message[2] = replaceTag(UidBans.configMessage.getFile().getString("Ubans.message_unban"),name,reason,dataxception,by, uid);
        message[0] = replaceTagList(mes,name,reason,dataxception,by, uid);
        message[3] = replaceTagList(UidBans.configMessage.getFile().getStringList("Ubans.message_kick"),name,reason,dataxception,by, uid);
        return message[index];
    }
Использование в kickplayer
Java:
banuser.kickPlayer(DisplayBanMessage(data, reason, now, by, uid, 0)); // Все аргументы правильные и работают, проверял когда пытался написать свою функцию сноса строки

Конфиг:
Код:
  message_perm_ban:
    - "{DARK_RED}---------------------------------\n"
    - "\n"
    - "Вы были заблокированы!\n"
    - "по причине: {reason}\n"
    - "Заблокировал: {by}\n"
    - "Дата разбана: {time}\n"
    - "\n"
    - "---------------------------------"
  message_kick:
    - "{DARK_RED}---------------------\n"
    - "\n"
    - "Вы были кикнуты!\n"
    - "  по причине: {reason}\n"
    - "\n"
    - "---------------------\n"
Используй нормальные шаблонизаторы.
Можешь попробовать мой, который работает по-более чем в 5_0000 раз быстрее чем написано у тебя
С поддержкой произвольных моделей данных и силы рефлектора и кодогенерации от TsonConfigurations из коробки

 
message_perm_ban: - "{DARK_RED}---------------------------------\n" - "\n" - "Вы были заблокированы!\n" - "по причине: {reason}\n" - "Заблокировал: {by}\n" - "Дата разбана: {time}\n" - "\n" - "---------------------------------" message_kick: - "{DARK_RED}---------------------\n" - "\n" - "Вы были кикнуты!\n" - " по причине: {reason}\n" - "\n" - "---------------------\n"
YAML:
key:
 - ""

Это по факту и есть новая строка, зачем там \n????
 
Назад
Сверху Снизу