0
當我運行某個命令時,我需要我正在查看的標誌來改變。用命令改變標誌說什麼
這裏是我當前的代碼:
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()
s工作正常,但標誌沒有改變。
@ user4758973沒問題。另外,你可能想通過使用'if(p.getTargetBlock(null,10)instanceof Sign)'來檢查玩家的方塊前面是否是一個符號,然後將它投射到一個符號上。如果你不這樣做,你可能會得到['ClassCastException'](http://docs.oracle.com/javase/7/docs/api/java/lang/ClassCastException.html) – Jojodmo
我補充說,在今天之後,我實現。謝謝! – user4758973