我不知道为什么这不管用。我试着执行它,但是当我输入/build时,redstone块不会放置。
plugin.yml
name: SkinStandoff
version: 0.1
main: com.sumeshdesh.skinstandoff.SkinStandoff
commands:
arena:
usage: /buildMain.java
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;
}
}发布于 2016-09-04 19:29:08
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。您可以阅读更多关于通过plugin.yml设置查看插件YAML wiki。的信息。
onCommand
应该切换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) {您可以通过查看插件教程wiki。阅读更多关于查看插件教程wiki。方法和Bukkit插件的信息。
https://stackoverflow.com/questions/39204943
复制相似问题