如何通过bukkit中的配置添加消息?

时间:2014-02-18 01:50:24

标签: java bukkit

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if(sender instanceof Player) {
        Player  player = (Player) sender;
        if(cmd.getName().equalsIgnoreCase("member")) {
            String member = "member " + player.getName();
            Bukkit.dispatchCommand(Bukkit.getConsoleSender(), member);
            player.sendMessage(getConfig().getStringList("MemberText"));

如何制作player.sendMessage(getConfig()。getStringList(“MemberText”));工作?当我尝试发布时会弹出一条错误消息。

错误:CommandSender类型中的方法sendMessage(String)不适用于参数(List)

3 个答案:

答案 0 :(得分:1)

我不是Minecraft Modder,但似乎player.sendMessage()需要一个字符串,但getConfig().getStringList("MemberText")的返回类型是List类型的返回类型。

尝试将结果转换为字符串,或循环浏览,并在列表中的每个项目上sendMessage

答案 1 :(得分:1)

循环浏览列表并发送每一行,或者如果配置中只有一行文字更改为getConfig().getStringList("MemberText")getConfig().getString("MemberText")

More on how to use the config here

答案 2 :(得分:1)

你可以循环抛出MemberText配置中的所有值,然后将这些值或其中一个发送给播放器。例如:

List<String> memberTextMessage = new ArrayList<String>();
memberTextMessage = this.getConfig.getStringList("MemberText");
//we now have all of the strings under "MemberText"

for(int i = 0; i < memberTextMessage.size(); i++){
    //loop threw all the messages
    String s = memberTextMessage.get(i);

    player.sendMessage(s); //send the player the string
    //This will send them all of the messages under "MemberText" in the config
}

只需确保在将memberTextMessage分配给配置中的内容之前进行空检查,只是在配置中MemberText下没有任何内容,否则,您将获得NullPointerException }:

if(this.getConfig.contains("MemberText"){

否则,向玩家发送一条消息,说明MemberText下没有任何内容,或者不发送任何内容。