Formatting Bukkit.invetory删除了不必要的chatcolor格式1.13.2

Formatting Bukkit.invetory删除了不必要的chatcolor格式1.13.2,formatting,title,bukkit,inventory,Formatting,Title,Bukkit,Inventory,亲爱的社区: 我陷入这个问题已经有几个月了,我在网上搜索了很多,但是我没有看到有人和我有同样的问题 因此,基本上,当我使用Bukkit.createInventory(播放器、插槽、标题)创建目录时,使用e.getView().getTitle()(InventoryClickEvent)创建目录的标题与创建目录时输入的标题不同 例如,创建清单时输入的标题是§2§5§r§3§lInventory§n§7§n§4,在我使用e.getView().getTitle()获取标题后,最终成为§3§lIn

亲爱的社区:

我陷入这个问题已经有几个月了,我在网上搜索了很多,但是我没有看到有人和我有同样的问题

因此,基本上,当我使用
Bukkit.createInventory(播放器、插槽、标题)
创建目录时,使用
e.getView().getTitle()
(InventoryClickEvent)创建目录的标题与创建目录时输入的标题不同

例如,创建清单时输入的标题是
§2§5§r§3§lInventory§n§7§n§4
,在我使用
e.getView().getTitle()获取标题后,最终成为
§3§lInventory§4
。观察一些格式化代码是如何被删除的

所以真正的问题是库存标题不等于它应该是的标题,从创建的库存返回标题时,似乎不必要的格式代码被删除了。此问题仅在运行1.13.2的minecraft服务器中出现

我已经尝试使用
plugin.getServer().createInventory(播放器、插槽、标题)
创建目录,但没有成功。我还尝试使用
e.getClickedInventory().getTitle()
而不是
e.getView().getTitle()
获取标题,但也没有成功。但是,当我从标题中删除所有格式代码时,它就起作用了

我希望任何人都能帮助我,并解释为什么会发生这种情况


谢谢

问题:

这是因为记分牌标题不再存储为字符串

Minecraft 1.8使用:

公共字符串getName(){
返回此.getInventory().getName();
}
和Minecraft 1.13.2使用:

公共字符串getName(){
返回CraftChatMessage.fromComponent(this.getInventory().getDisplayName());
}
标题现在基本上正在重新格式化,而且方法
fromComponent(…)
似乎正在删除所有不必要的格式

解决方案:

因为我真的不知道你到底想对标题做什么,我可以建议你在比较标题或任何你需要的东西时删除颜色代码

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

如果您确实需要颜色代码,您可以将它们存储在
HashMap titles
或类似文件中。

谢谢您的回答,我需要聊天颜色来比较两个清单与InventoryClickEvent。我已经解决了我的问题,谢谢!