Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Проблемы с символами

Discussion in 'Разработка плагинов для новичков' started by Jampire, Apr 11, 2013.

  1. Автор темы
    Jampire

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

    Trophy Points:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Изменяю формат сообщения и если сообщение на момент отправки содержит символы % \ и подобные - плагин выдаёт ошибку и формат чата спадает на стандартный.

    В чем может быть проблема?

    Code:
    Caused by: java.util.UnknownFormatConversionException: Conversion = '4'
     
  2. Хостинг MineCraft
    <
  3. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Trophy Points:
    173
    Число 4 ?
     
  4. Serrrgio

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

    Trophy Points:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    Вроде не первый день на форуме...

    Мы должны угадать или догадаться о том какой плагин чата установлен, какая версия и билд сервера, что ты все-таки написал в конфиг плагина чата?
     
  5. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Переписать по документации bukkit - ?
     
  6. Автор темы
    Jampire

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

    Trophy Points:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Раздел - Разработка плагинов, а не использование.

    сочетание %4

    ее и использовал. При попадании в формат чата знаков % или \ формат ломается... (event.setFormat())
     
  7. Автор темы
    Jampire

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

    Trophy Points:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Code:
    String format = user.getOption("ServerBundle.chat.format");
    format = format.replaceAll("%player%", event.getPlayer().getDisplayName());
    format = format.replaceAll("&", "§");
    format = format.replaceAll("%message%", Fix.fixUseTable(event.getMessage()).replaceAll("§", "&"));
    event.setFormat(format); // <=== при попадании сюда % или / слетает
     
    slavik123123123 likes this.
  8. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А ошибки пишет?
     
    Jampire likes this.
  9. Автор темы
    Jampire

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

    Trophy Points:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Code:
    Caused by: java.util.UnknownFormatConversionException: Conversion = '4'
    всегда ошибка подобного типа
     
  10. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Скинь метод fixUseTable() и опцию ServerBundle.chat.format
     
  11. Автор темы
    Jampire

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

    Trophy Points:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    ServerBundle.chat.format имеет значение [&fP&r] &f%player%&r: %message%
    fixUseTable() - метод, взятый напрямую из ruFix
    Code:
        public static String fixUseTable(String msg) {
            for (int n = 0; n < msg.length(); n++) {
                char t = msg.charAt(n);
                int idx = Arrays.binarySearch(new String("¸ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ").toCharArray(), t);
                if (idx > -1) {
                    msg = msg.replace(t, new String("ёАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя").toCharArray()[idx]);
                }
            }
            return msg;
        }
     
  12. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    @Jampire,
    Code:
            String format = "[&fP&r] &f%player%&r: %message%";
            format = format.replace("%player%", "%1$s");
            format = format.replace("&", "§");
            format = format.replace("%message%", "%2$s");
            e.setFormat(format);
            e.setMessage(fixUseTable(e.getMessage()).replace("§", "&"));
    Вот так работает
     
    Jampire likes this.
  13. Автор темы
    Jampire

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

    Trophy Points:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Интересное решение, благодарю за помощь. Почему-то не додумался в таком порядке все делать ))
     
    Den_Abr likes this.

Share This Page