2015-04-01 97 views
-2

我是bukkit 1.8.3編程的初學者,但是當測試時我正在爲我的服務器製作一個命令包,現在我收到了這個錯誤。讓我說我想操作我自己我輸入命令BOOM這個錯誤出現。讓我們說醫治命令不要這個錯誤。以下是錯誤日誌:無法轉換爲org.bukkit.entity.Player

11:33:56 PM [WARN] Unexpected exception while parsing console command "heal Herobrine112211" 
11:33:56 PM org.bukkit.command.CommandException: Unhandled exception executing command 'heal' in plugin UltimateCommandPack v1.0.5 
11:33:56 PM at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchCommand(CraftServer.java:625) ~[bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchServerCommand(CraftServer.java:611) [bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM at net.minecraft.server.v1_8_R2.DedicatedServer.aN(DedicatedServer.java:372) [bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:337) [bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:626) [bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:534) [bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM at java.lang.Thread.run(Unknown Source) [?:1.7.0_75] 
11:33:56 PM Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_8_R2.command.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player 
11:33:56 PM at me.herobrine112211.ulticmdpack.System.onCommand(System.java:39) ~[?:?] 
11:33:56 PM at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[bukkit.jar:git-Bukkit-61ef214] 
11:33:56 PM ... 8 more 

這裏是代碼:

package me.herobrine112211.ulticmdpack; 

import org.bukkit.Bukkit; 
import org.bukkit.ChatColor; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.event.EventHandler; 
import org.bukkit.event.Listener; 
import org.bukkit.event.player.PlayerJoinEvent; 
import org.bukkit.plugin.java.JavaPlugin; 

public class System extends JavaPlugin implements Listener{ 

    public void onEnable() { 
     getConfig().options().copyDefaults(true); 
     saveConfig(); 
     Bukkit.getServer().getPluginManager().registerEvents(this, this); 
     Bukkit.getServer().getLogger().info("Ultimate Command Pack Plugin has been actived!"); 
    } 

    public void onDisable() { 
     Bukkit.getServer().getLogger().info("Ultimate Command Pack Plugin has been disabled! This will give big problems to server."); 
    } 

    @EventHandler 
    public void onPlayerJoin(PlayerJoinEvent joinevent){ 
     Player getplayer = joinevent.getPlayer(); 
     getplayer.sendMessage(ChatColor.AQUA + "Hey " + getplayer.getName() + "! Welcome to the Ultimate Prison server!"); 
     if(getplayer.getName().equals("Herobrine112211")){ 
      Bukkit.getServer().broadcastMessage(ChatColor.WHITE + "[" + ChatColor.GOLD + "BROADCAST" + ChatColor.WHITE + "] " + ChatColor.GOLD + "Server Creator Herobrine112211 has joined the game!!!!!!!!!!"); 
     } 
    } 

    @SuppressWarnings("deprecation") 
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){ 


     Player player = (Player) sender; 

      if (cmd.getName().equalsIgnoreCase("contactowner")) { 
       if (!sender.hasPermission("contactowner")){ 
        sender.sendMessage(ChatColor.RED + "Access denied."); 
        return true; 
       } 
       if (!(sender instanceof Player)) { 
        sender.sendMessage(ChatColor.RED + "Console will never need owner support."); 
        return true; 
       } 
       player.sendMessage(ChatColor.GOLD + "Owner: Herobrine112211. Live chat skype: gangsteris33."); 
      } 

      if (cmd.getName().equalsIgnoreCase("reloadconfig")){ 
       if (!sender.hasPermission("config.reload")){ 
        sender.sendMessage(ChatColor.RED + "Access denied."); 
        return true; 
       } 
       reloadConfig(); 
       sender.sendMessage(ChatColor.RED + "Server config reloaded successfully."); 
       return true; 
      } 

      if (cmd.getName().equalsIgnoreCase("saveconfig")){ 
       if (!sender.hasPermission("config.save")){ 
        sender.sendMessage(ChatColor.RED + "Access denied."); 
        return true; 
       } 
       reloadConfig(); 
       sender.sendMessage(ChatColor.RED + "Server config saved successfully."); 
       return true; 
      } 

      if (cmd.getName().equalsIgnoreCase("fakeop")) { 
       if (!sender.hasPermission("fake.op")){ 
        sender.sendMessage(ChatColor.RED + "Access denied."); 
        return true; 
       } 
       if (args.length == 0) { 
        sender.sendMessage(ChatColor.RED + "Please specify a player!"); 
        return true; 
       } 
       Player target = Bukkit.getServer().getPlayer(args[0]); 
       if (target == null) { 
        sender.sendMessage(ChatColor.RED + "Player must be online!"); 
        return true; 
       } 
       target.sendMessage(ChatColor.YELLOW + "You are now op!"); 
      } 

      if (cmd.getName().equalsIgnoreCase("fakejoin")) { 
       if (!sender.hasPermission("fake.join")){ 
        sender.sendMessage(ChatColor.RED + "Access denied."); 
        return true; 
       } 
       if (args.length == 0) { 
        sender.sendMessage(ChatColor.RED + "Please specify a name!"); 
        return true; 
       } 
       Bukkit.getServer().broadcastMessage(ChatColor.YELLOW + args[0] + " joined the game."); 
      } 

      if (cmd.getName().equalsIgnoreCase("broadcast")) { 
       if (!sender.hasPermission("broadcast")){ 
        sender.sendMessage(ChatColor.RED + "Access denied."); 
        return true; 
       } 
       if (args.length == 0) { 
        sender.sendMessage(ChatColor.RED + "Please give a message to broadcast!"); 
        return true; 
       } 
       StringBuilder strbl = new StringBuilder(); 
       for(int i = 0; i < args.length; i++){ 
        strbl.append(args[i] + " "); 
       } 
       String broadcastas = strbl.toString(); 
       Bukkit.getServer().broadcastMessage(ChatColor.WHITE + "[" + ChatColor.GOLD + "BROADCAST" + ChatColor.WHITE + "] " + ChatColor.RED + broadcastas); 
      } 

      if (cmd.getName().equalsIgnoreCase("heal")) { 
       if (!sender.hasPermission("heal")){ 
        sender.sendMessage(ChatColor.RED + "Access denied."); 
        return true; 
       } 
        if (args.length == 0) { 
          player.setHealth(20); 
          player.setFireTicks(0); 
          sender.sendMessage(ChatColor.GREEN + "Your health is now full!"); 
          return true; 
        } 
        Player target = Bukkit.getServer().getPlayer(args[0]); 
        if (target == null) { 
         sender.sendMessage(ChatColor.RED + "Player must be online to be healed!"); 
          return true; 
        } 
        target.setHealth(20); 
        target.setFireTicks(0); 
        target.sendMessage(ChatColor.GREEN + sender.getName() + " healed you!"); 
        sender.sendMessage(ChatColor.GREEN + target.getName() + " is healed!"); 
      } 

      if (cmd.getName().equalsIgnoreCase("feed")) { 
       if (!sender.hasPermission("feed")){ 
        sender.sendMessage(ChatColor.RED + "Access denied."); 
        return true; 
       } 
       if (args.length == 0) { 
         player.setFoodLevel(20); 
         sender.sendMessage(ChatColor.GREEN + "Your hunger is now full!"); 
         return true; 
       } 
       Player target = Bukkit.getServer().getPlayer(args[0]); 
       if (target == null) { 
        sender.sendMessage(ChatColor.RED + "Player must be online to be fed!"); 
         return true; 
       } 
       target.setFoodLevel(20); 
       target.sendMessage(ChatColor.GREEN + sender.getName() + " fed you!"); 
       sender.sendMessage(ChatColor.GREEN + target.getName() + " hunger is now full!"); 
     } 
     return true; 
    } 
} 

,我會給你plugin.xml文件太config.yml是還未通行(空):

這就是所有我希望你能告訴我如何解決這一問題?

回答

2

你的問題是,你想投的senderPlayer,然後檢查發件人是否實際上是Player。發件人可以是控制檯。

如果你想解決這個問題,你應該檢查sender是否是Player。如果不是你應該return false

if(!(sender instanceof Player)){ 
    //the sender is not a Player 
    return false; 
} 

Player player = (Player) sender; 
//this can now be run safely, because 
//we know that the sender has to 
//be a Player 

我建議不把這些代碼上面所有的if statements的。相反,您應該將上面的代碼放在您的每條語句中,並且如果sender相應地不是Player

相關問題