Bukkit.invetory удаляет ненужное форматирование цвета чата 1.13.2

#formatting #title #bukkit #inventory

#форматирование #Название #bukkit #инвентарь

Вопрос:

Уважаемое сообщество StackOverflow,

Я застрял в этой проблеме уже несколько месяцев, я много искал в Интернете, но я не вижу кого-то, у кого такая же проблема, как у меня.

Таким образом, в основном, когда я создаю инвентарь с Bukkit.createInventory(player, slots, title) помощью, заголовок инвентаря с e.getView().getTitle() помощью (InventoryClickEvent) не совпадает с введенным заголовком при создании инвентаря.

Заголовок, введенный при создании инвентаря, является, например §2§5§r§3§lInventory§n§7§n§4 , и заканчивается §3§lInventory§4 после того, как я получаю заголовок с. e.getView().getTitle() Посмотрите, как удаляются некоторые коды форматирования.

Итак, реальная проблема заключается в том, что заголовок инвентаря не соответствует заголовку, которым он должен быть, похоже, что ненужные коды форматирования удаляются при возврате заголовка из созданного инвентаря. Эта проблема возникает только на серверах minecraft под управлением 1.13.2.

Я уже пытался создать инвентарь plugin.getServer().createInventory(player, slots, title) без каких-либо успехов. Я также пытался получить заголовок с e.getClickedInventory().getTitle() помощью вместо e.getView().getTitle() без успеха. Но когда я удаляю все коды форматирования из заголовка, это работает.

Я надеюсь, что кто-нибудь может мне помочь с этим и может объяснить, почему это происходит.

Спасибо

Ответ №1:

Проблема:

Это потому, что заголовок табло больше не хранится в виде строки…

Minecraft 1.8 использует:

     public String getName() {
        return this.getInventory().getName();
    }
 

и Minecraft 1.13.2 использует:

     public String getName() {
        return CraftChatMessage.fromComponent(this.getInventory().getDisplayName());
    }
 

Заголовок сейчас в основном переформатируется, и, к сожалению, метод, fromComponent(...) похоже, удаляет все ненужные форматирования.

Решение:

Поскольку я действительно не знаю, что именно вы хотите сделать с заголовком, я могу просто предложить вам удалить цветовые коды при сравнении заголовка или для чего вам это нужно.

 String title = ChatColor.stripColor(e.getView().getTitle());
 

Если вам действительно нужны цветовые коды, вы можете сохранить их в HashMap<Player, String> titles руде аналогично.

Комментарии:

1. Спасибо за ваш ответ, мне нужны были цвета чата для сравнения двух инвентарей с InventoryClickEvent. Я решил свою проблему, спасибо!