首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PlaceHolderAPI不工作

PlaceHolderAPI不工作
EN

Stack Overflow用户
提问于 2016-08-16 22:41:55
回答 2查看 742关注 0票数 0

作为我插件的一部分,我有一个清晰的聊天命令,在空白消息的末尾有一个显示文本的选项。我的问题是PlaceHolderAPI不能正常工作。

命令代码:

代码语言:javascript
运行
复制
if (label.equalsIgnoreCase("clearchat") || label.equalsIgnoreCase("mcc")) {
    if (p.hasPermission("mystic.chat.admin.clearchat")) {
        for (int i = 0; i < getConfig().getInt("clearChat.blankLines"); i++) {
            Bukkit.broadcastMessage(" ");
        }
        for (String s : getConfig().getStringList("clearChat.endMessage")) {
            s = PlaceholderAPI.setPlaceholders(p, s);
            // This is here to check if the PlaceHolderAPI even knows there is place holders in it
            p.sendMessage(String.valueOf(PlaceholderAPI.containsPlaceholders(s)));
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', s));

        }
        return true;
    } else {
        p.sendMessage(ChatColor.RED + "You are lacking the required permission node!");
        return true;
    }
}

配置文件部分:

代码语言:javascript
运行
复制
clearChat:
  blankLines: 256
  endMessage:
  - '&bChat was cleared by %player_name%'

当我运行"/mcc“或"/clearchat”命令时,它总是显示false (表示无法识别任何占位符),并且没有任何占位符被替换。

除了不转换占位符之外,我在构建路径中确实有正确的API,并且命令字完美无误。

我觉得我犯了一个愚蠢的错误,或者我做这件事的方式是完全错误的…

EN

回答 2

Stack Overflow用户

发布于 2016-08-19 10:59:32

您不需要使用另一个api使用p.getName(),然后使用String.replace替换%name%

票数 0
EN

Stack Overflow用户

发布于 2016-08-25 22:38:33

您错误地使用了API,您这样做了

代码语言:javascript
运行
复制
s = PlaceholderAPI.setPlaceholders(p, s);

如果API会抛出错误(如果没有占位符),只需用try{} catch (Exception e)将该行括起来,然后将其发送给播放器。

代码语言:javascript
运行
复制
p.sendMessage(s);

不需要String.valueOf(s),因为API期望返回一个字符串,无论如何,设置String s = PlaceholderAPI.setPlaceholders(p, s);都会将那里的任何对象转换为字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38977887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档