Bukkit.invetory 删除了不必要的聊天颜色格式 1.13.2
Bukkit.invetory removes unnecessary chatcolor formatiing 1.13.2
亲爱的 Whosebug 社区,
我被这个问题困扰了几个月了,我在互联网上搜索了很多,但我找不到和我有同样问题的人。
所以基本上当我使用 Bukkit.createInventory(player, slots, title)
创建库存时,带有 e.getView().getTitle()
的库存标题 (InventoryClickEvent) 与我创建库存时输入的标题不同。
创建库存时输入的标题例如§2§5§r§3§lInventory§n§7§n§4
,在我用e.getView().getTitle()
获得标题后最终为§3§lInventory§4
。观察一些格式化代码是如何被删除的。
所以真正的问题是库存标题不等于它应该的标题,似乎在从创建的库存返回标题时删除了不必要的格式代码。这个问题只发生在 minecraft 服务器 运行 1.13.2.
我已经尝试使用 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
类似的矿石中。
亲爱的 Whosebug 社区,
我被这个问题困扰了几个月了,我在互联网上搜索了很多,但我找不到和我有同样问题的人。
所以基本上当我使用 Bukkit.createInventory(player, slots, title)
创建库存时,带有 e.getView().getTitle()
的库存标题 (InventoryClickEvent) 与我创建库存时输入的标题不同。
创建库存时输入的标题例如§2§5§r§3§lInventory§n§7§n§4
,在我用e.getView().getTitle()
获得标题后最终为§3§lInventory§4
。观察一些格式化代码是如何被删除的。
所以真正的问题是库存标题不等于它应该的标题,似乎在从创建的库存返回标题时删除了不必要的格式代码。这个问题只发生在 minecraft 服务器 运行 1.13.2.
我已经尝试使用 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
类似的矿石中。