formatting - Bukkit.invetory 删除了不必要的聊天颜色格式 1.13.2
问题描述
亲爱的 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()
。观察一些格式化代码是如何被删除的。
所以真正的问题是库存标题不等于它应该是的标题,似乎在从创建的库存返回标题时删除了不必要的格式代码。这个问题只发生在运行 1.13.2 的 minecraft 服务器上。
我已经尝试创建库存plugin.getServer().createInventory(player, slots, title)
但没有成功。我也试图获得标题e.getClickedInventory().getTitle()
而不是e.getView().getTitle()
没有成功。但是,当我从标题中删除所有格式代码时,它会起作用。
我希望任何人都可以帮助我并解释为什么会发生这种情况。
谢谢
解决方案
问题:
这是因为记分牌标题不再存储为字符串......
我的世界 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
类似的矿石中。
推荐阅读
- json - 如何将嵌套的 JSON 转换为对象
- amazon-web-services - AWS Java SDK - 等待来自池的连接超时
- python - 通用对象计数 Python OpenCV
- c - 仅在 C 中执行一次代码的更简洁的方式?
- javascript - 如何将数据库值传递给动态添加的下拉字段
- java - 如何使用 jasper 报告在 java bean 中生成具有 3 个嵌套列表的表?
- batch-file - 通过批处理脚本从 .CSV 中删除行
- javascript - 如何定位 dropEffect 光标以进行样式设置
- spring-boot - Spring Boot 2.1.4 版应用程序在启动后很快终止
- sql - 在 sql 空间数据中使用变量