用命令改变标志所说的内容

时间:2015-04-07 13:18:27

标签: java bukkit

当我运行某个命令时,我需要一个我正在寻找改变的标志。

这是我目前的代码:

if (cmd.getName().equalsIgnoreCase("ft")) {
        if (!(p.hasPermission("ft.use"))) {
            p.sendMessage(ChatColor.RED + "You do not have permission.");
            return true;
        } else {
            Sign sign = (Sign) p.getTargetBlock(null, 10).getState();
            if (args.length == 0) {
                p.sendMessage(ChatColor.RED + "Usage: /ft <name> <1/2/3/4>");
                return true;
            } else if (args.length == 2) {
                String name = args[0];
                String id = args[1];
                if (args[1].equalsIgnoreCase("1")) {
                    if (getConfig().get("FastTravel." + name + "." + 1) != null) {
                        p.sendMessage(ChatColor.RED + args[0] + " 1 already exists please use another ID.");
                        return true;        
                    }else {
                        if(getConfig().get("FastTravel.Price") != null){
                        sign.setLine(0, "[FastTravel]");
                        sign.setLine(1, name + " 1");
                        sign.setLine(3, (String) getConfig().get("FastTravel.Price"));
                        p.sendMessage(ChatColor.GREEN + "You set the FastTravel sign '" + name + " 1'.");
                        getConfig().set("FastTravel." + args[0] +"."+ 1, p.getLocation());
                        saveConfig();
                        return true;
                        }else {
                            p.sendMessage(ChatColor.RED + "The price for FastTravel has not been set.");
                            p.sendMessage(ChatColor.RED + "Please set the price by using /setprice <price>");
                            return true;
                        }
                    }
                }
            }
        }

因此,如果有人要输入命令/ft Test 1,他们所看到的标志将如下所示:

  

第1行:[FastTravel]
  第2行:测试1
  第3行:(空白)
  第4行:价格

所有p.sendMessage()都运行正常,但标志并未改变。

1 个答案:

答案 0 :(得分:2)

如果您要更新签名文字,则必须在设置其行后致电sign.update(true)

//set the sign's text
sign.setLine(0, "[FastTravel]");
sign.setLine(1, name + " 1");
sign.setLine(3, (String) getConfig().get("FastTravel.Price"));

//update the sign
sign.update(true);