首页 > 解决方案 > 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()没有成功。但是,当我从标题中删除所有格式代码时,它会起作用。

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

谢谢

标签: formattingtitlebukkitinventory

解决方案


问题:

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

我的世界 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类似的矿石中。


推荐阅读