Spigot / Bukkit帮助:阻止操纵

时间:2016-08-29 11:16:13

标签: java bukkit

我不知道为什么这不起作用。 我尝试执行它,但是当我输入name: SkinStandoff version: 0.1 main: com.sumeshdesh.skinstandoff.SkinStandoff commands: arena: usage: /build 时,红石块不会被放置。

plugin.yml

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;
 }
 }

Main.java

prepare()

1 个答案:

答案 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插件的更多信息