Помогите Количество символов в сообщении

  • Автор темы Автор темы Sergeo
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Sergeo

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Solomka
Как мне получить количество символов из ивента AsyncPlayerChatEvent -> StringBuilder


Код:
    @EventHandler
    public void ruChat(AsyncPlayerChatEvent e) throws IOException {
        Player p = e.getPlayer();
        UUID id = p.getUniqueId();

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < e.getMessage().chars(); i++) sb.append(e.getMessage().charAt(i)).append(' ');

        if(ru.contains(id)) {
            for(Player pl : Bukkit.getOnlinePlayers()) {
                if(e.getMessage() == null) {
                    send(p, translateAlternateColorCodes('&', ConfigManager.getString("NullMessage")));
                    continue;
                }
                pl.sendMessage(translate("en", "ru", sb.toString()));
            }
        }
    }

Подчеркивает e.getMessage().chars(); (Operator '<' cannot be applied to 'int', 'java.util.stream.IntStream')

Как это решить?
 
e.getMessage().length()
А ещё, e.getMessage() не может вернут null - проверка не нужна.
 
e.getMessage().length()
А ещё, e.getMessage() не может вернут null - проверка не нужна.
После отправки сообщения выкидывает с сервера и выдает в консоль

[18:06:31 ERROR]: io.netty.handler.codec.EncoderException: String too big (was 145751 bytes encoded, max 32767)

P.S Сообщение состоит из 3-х символов ;/

Методы
Код:
    @EventHandler
    public void ruChat(AsyncPlayerChatEvent e) throws IOException {
        Player p = e.getPlayer();
        UUID id = p.getUniqueId();

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < e.getMessage().length(); i++) sb.append(e.getMessage().chars()).append(' ');

        if(ru.contains(id)) {
            for(Player pl : Bukkit.getOnlinePlayers()) {
                pl.sendMessage(translate("en", "ru", sb.toString()));
            }
        }
    }

    @EventHandler
    public void enChat(AsyncPlayerChatEvent e) throws IOException {
        Player p = e.getPlayer();
        UUID id = p.getUniqueId();

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < e.getMessage().length(); i++) sb.append(e.getMessage().chars()).append(' ');

        if(en.contains(id)) {
            for(Player pl : Bukkit.getOnlinePlayers()) {
                pl.sendMessage(translateAlternateColorCodes('&', translate("en", "ru", "&6[TRANSLATOR] &9" + p.getName() + "&f: " + sb.toString())));
            }
        }
    }
 
Зачем ты вообще собираешь билдером сообщение заново, ещё и без изменений? У тебя же есть готовая строка, ничего менять не нужно. Алсо, ты в цикле перепутал p и pl.
После отправки сообщения выкидывает с сервера и выдает в консоль

[18:06:31 ERROR]: io.netty.handler.codec.EncoderException: String too big (was 145751 bytes encoded, max 32767)

P.S Сообщение состоит из 3-х символов ;/
Проверь, что хранится в этой строке вообще - отправь её в консоль, а не посылай игроку.
 
Зачем ты вообще собираешь билдером сообщение заново, ещё и без изменений? У тебя же есть готовая строка, ничего менять не нужно. Алсо, ты в цикле перепутал p и pl.

Проверь, что хранится в этой строке вообще - отправь её в консоль, а не посылай игроку.
Мне нужно строку всему серверу отсылать(Переведенную на другой язык)
 
Мне нужно строку всему серверу отсылать(Переведенную на другой язык)
Я и говорю - сначала проверь, что у тебя за строка - отправь её в консоль. Мне кажется, ты что-то напутал в методе перевода, либо сервис возвращает что-то не то.
Комментарий по поводу собирания сообщения заново всё ещё в силе.
 
Я и говорю - сначала проверь, что у тебя за строка - отправь её в консоль. Мне кажется, ты что-то напутал в методе перевода, либо сервис возвращает что-то не то.
Комментарий по поводу собирания сообщения заново всё ещё в силе.
Выводит - [18:29:23 INFO]: [TranslatorOnline] sdadas, но ошибка такая же

Метод перевода
Код:
    public static String translate(String langFrom, String langTo, String text) throws IOException {
        String urlStr = " https://script.google.com/macros/s/AKfycbzhi3gpfD8b5PZ2pWS0pGCFOU0jF9vxJL2d-G9HQBTrZSfT9u4/exec" +
                "?q=" + encode(text, StandardCharsets.UTF_8.toString()) + "&target=" + langTo + "&source=" + langFrom;
        URL url = new URL(urlStr);
        StringBuilder response = new StringBuilder();
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("User-Agent", "Mozilla/5.0");
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        return response.toString();
    }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх