我不知道为什么这不起作用。
我尝试执行它,但是当我输入name: SkinStandoff
version: 0.1
main: com.sumeshdesh.skinstandoff.SkinStandoff
commands:
arena:
usage: /build
时,红石块不会被放置。
public class SkinStandoff extends JavaPlugin implements Listener {
public boolean onCommand(Command cmd, CommandSender sender, String label, String args[]) {
if (cmd.getName().equalsIgnoreCase("build") && sender instanceof Player) {
Player player = (Player) sender;
Location start;
Block bEnd;
Location end;
start = player.getLocation();
end = start.add(3, -1, 3);
bEnd = end.getBlock();
getLogger().info(bEnd.toString());
bEnd.setType(Material.REDSTONE_BLOCK);
return true;
}
return false;
}
}
prepare()
答案 0 :(得分:2)
<强> plugin.yml 强>
在不了解您的设置的情况下,我可以告诉您,plugin.yml
设置错误。具体来说,commands
部分。您的plugin.yml
应该看起来像这样:
name: SkinStandoff
version: 0.1
main: com.sumeshdesh.skinstandoff.SkinStandoff
commands:
build:
usage: Type /build to place the block!
之前,行build:
现在在哪里,你有arena:
。这意味着玩家必须输入/arena
,而不是/build
。而且,除非我不正确,否则我认为您希望玩家输入/build
。您可以详细了解如何按checking out the Plugin YAML wiki.
plugin.yml
<强>按需强>
应切换onCommand
方法的前两个参数。这样:
onCommand(Command cmd, CommandSender sender, String label, String args[])
应替换为:
onCommand(CommandSender sender, Command cmd, String label, String[] args)
此外,您没有理由检查是否输入了命令/build
。除非您在plugin.yml
中注册了多个命令,否则您可以确定该玩家已输入/build
,否则您的onCommand
方法将无法被调用。所以,我的建议是替换这一行:
if (cmd.getName().equalsIgnoreCase("build") && sender instanceof Player) {
这一行:
if (sender instanceof Player) {
您可以通过checking out the Plugin Tutorial wiki.了解有关onCommand
方法和Bukkit插件的更多信息