Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bukkit-EventHandler方法出错_Java_Bukkit_Eventhandler - Fatal编程技术网

Java Bukkit-EventHandler方法出错

Java Bukkit-EventHandler方法出错,java,bukkit,eventhandler,Java,Bukkit,Eventhandler,由于某种原因,我在使用@EventHandler注释执行某些操作时收到了一个错误。我用的是Bukkit 1.7.9。以下是我的代码部分: @EventHandler public void onSignChange(SignChangeEvent event, CommandSender sender, Command cmd, String commandLabel){ Player player = event.getPlayer(); if(player.hasPermis

由于某种原因,我在使用
@EventHandler
注释执行某些操作时收到了一个错误。我用的是Bukkit 1.7.9。以下是我的代码部分:

@EventHandler
public void onSignChange(SignChangeEvent event, CommandSender sender, Command cmd, String commandLabel){
    Player player = event.getPlayer();
    if(player.hasPermission("CustomJoinSigns.Create")) {
        if(event.getLine(0).equalsIgnoreCase("Minigame")) {
            player.sendMessage(ChatColor.BLUE + "Please type in the minigame name:");
            player.sendMessage(ChatColor.GOLD + "1)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs setminigame [Minigame]");
            player.sendMessage(ChatColor.GOLD + "2)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs cancel");
            if(commandLabel.equalsIgnoreCase("cjs setminigame" + minvar));
            player.sendMessage("Test Successful");
        }
    }
}
这是我的错误日志:

ERROR CustomJoinSigns v1 attempted to register an invalid EventHandler method signature 
"public void me.pvpcraftnetwork.customjoinsigns.Main.onSignChange(org.bukkit.event.block.SignChangeEvent,org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String)"
in class me.pvpcraftnetwork.customjoinsigns.Main

关于我做错了什么有什么建议吗?

您的
侦听器
方法中只能有一个参数。应该是这样的:

@EventHandler
public void onSignChange(SignChangeEvent event){
  Player player = event.getPlayer();
  if(player.hasPermission("CustomJoinSigns.Create")) {
    if(event.getLine(0).equalsIgnoreCase("Minigame")) {
        player.sendMessage(ChatColor.BLUE + "Please type in the minigame name:");
        player.sendMessage(ChatColor.GOLD + "1)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs setminigame [Minigame]");
        player.sendMessage(ChatColor.GOLD + "2)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs cancel");
        if(commandLabel.equalsIgnoreCase("cjs setminigame" + minvar));
        player.sendMessage("Test Successful");
    }
  }
}
参数
CommandSender、Command cmd、String commandLabel
用于命令中。。。所以你可能认为注册事件就像监听玩家运行命令一样

同样,所有
@EventHandler
方法只能有一个参数,即您正在侦听的事件。因此,如果您正在收听
PlayerJoinEvent
,您将使用:

@EventHandler
public void playerJoin(PlayerJoinEvent event){
  //code here
}

侦听器
方法中只能有一个参数。应该是这样的:

@EventHandler
public void onSignChange(SignChangeEvent event){
  Player player = event.getPlayer();
  if(player.hasPermission("CustomJoinSigns.Create")) {
    if(event.getLine(0).equalsIgnoreCase("Minigame")) {
        player.sendMessage(ChatColor.BLUE + "Please type in the minigame name:");
        player.sendMessage(ChatColor.GOLD + "1)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs setminigame [Minigame]");
        player.sendMessage(ChatColor.GOLD + "2)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs cancel");
        if(commandLabel.equalsIgnoreCase("cjs setminigame" + minvar));
        player.sendMessage("Test Successful");
    }
  }
}
参数
CommandSender、Command cmd、String commandLabel
用于命令中。。。所以你可能认为注册事件就像监听玩家运行命令一样

同样,所有
@EventHandler
方法只能有一个参数,即您正在侦听的事件。因此,如果您正在收听
PlayerJoinEvent
,您将使用:

@EventHandler
public void playerJoin(PlayerJoinEvent event){
  //code here
}

侦听器
方法中只能有一个参数。应该是这样的:

@EventHandler
public void onSignChange(SignChangeEvent event){
  Player player = event.getPlayer();
  if(player.hasPermission("CustomJoinSigns.Create")) {
    if(event.getLine(0).equalsIgnoreCase("Minigame")) {
        player.sendMessage(ChatColor.BLUE + "Please type in the minigame name:");
        player.sendMessage(ChatColor.GOLD + "1)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs setminigame [Minigame]");
        player.sendMessage(ChatColor.GOLD + "2)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs cancel");
        if(commandLabel.equalsIgnoreCase("cjs setminigame" + minvar));
        player.sendMessage("Test Successful");
    }
  }
}
参数
CommandSender、Command cmd、String commandLabel
用于命令中。。。所以你可能认为注册事件就像监听玩家运行命令一样

同样,所有
@EventHandler
方法只能有一个参数,即您正在侦听的事件。因此,如果您正在收听
PlayerJoinEvent
,您将使用:

@EventHandler
public void playerJoin(PlayerJoinEvent event){
  //code here
}

侦听器
方法中只能有一个参数。应该是这样的:

@EventHandler
public void onSignChange(SignChangeEvent event){
  Player player = event.getPlayer();
  if(player.hasPermission("CustomJoinSigns.Create")) {
    if(event.getLine(0).equalsIgnoreCase("Minigame")) {
        player.sendMessage(ChatColor.BLUE + "Please type in the minigame name:");
        player.sendMessage(ChatColor.GOLD + "1)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs setminigame [Minigame]");
        player.sendMessage(ChatColor.GOLD + "2)" + ChatColor.RED + "Do " + ChatColor.YELLOW + "/cjs cancel");
        if(commandLabel.equalsIgnoreCase("cjs setminigame" + minvar));
        player.sendMessage("Test Successful");
    }
  }
}
参数
CommandSender、Command cmd、String commandLabel
用于命令中。。。所以你可能认为注册事件就像监听玩家运行命令一样

同样,所有
@EventHandler
方法只能有一个参数,即您正在侦听的事件。因此,如果您正在收听
PlayerJoinEvent
,您将使用:

@EventHandler
public void playerJoin(PlayerJoinEvent event){
  //code here
}

谢谢你的帮助,但我决定通过命令来实现。这对我来说要容易10倍。谢谢你的帮助,但我决定通过命令来实现。这对我来说要容易10倍。谢谢你的帮助,但我决定通过命令来实现。这对我来说要容易10倍。谢谢你的帮助,但我决定通过命令来实现。这对我来说要容易10倍。