2012-11-02 45 views
2

我正在嘗試爲minecraft bukkit服務器創建一個插件。目標是讀取html頁面第一行的字符串。如果結果爲True,它將執行一個命令。從Bukkit Plugin的網頁獲取HTML字符串

下面是代碼,我現在所擁有的:

import java.net.URLConnection; 
import java.util.Scanner; 
import java.util.logging.Logger; 

import org.bukkit.ChatColor; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.plugin.java.JavaPlugin; 

public class main extends JavaPlugin{ 
public final Logger logger = Logger.getLogger("Minecraft"); 

public void onEnable(){ 
    logger.info("[First] Has Been Enabled."); 
} 

public void onDisable(){ 
    logger.info("[First] Has Been Disabled."); 
} 

public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) { 
    Player player = (Player) sender; 
    if(commandLabel.equalsIgnoreCase("hello")){ 
     player.sendMessage(ChatColor.GOLD + "Hello"); 
    } 
    else if(commandLabel.equalsIgnoreCase("world")){ 
     player.sendMessage(ChatColor.GOLD + "World"); 
    } 
    else if(commandLabel.equalsIgnoreCase("coolman")){ 
     player.setPlayerListName("coolman"); 
    } 
    else if(commandLabel.equalsIgnoreCase("vote")){ 
     String sourceLine = null; 

     // The URL address of the page to open. 
     URL address = new URL("http://www.koolflashgames.com/test.php"); 

     // Open the address and create a BufferedReader with the source code. 
     InputStreamReader pageInput = new InputStreamReader(address.openStream()); 
     BufferedReader source = new BufferedReader(pageInput); 

     // Append each new HTML line into one string. Add a tab character. 
     try { 
      sourceLine = source.readLine(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     if(sourceLine == "False"){ 
      player.sendMessage("Thanks for voting!"); 
     } 

    } 
    return false; 

} 

}

創建日誌中出現以下錯誤:

2012-11-02 16:18:30 [SEVERE] null 
org.bukkit.command.CommandException: Unhandled exception executing command 'vote' in  plugin first v1.0 
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) 
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) 
at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:502) 
at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:915) 
at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:828) 
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:810) 
at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44) 
at net.minecraft.server.NetworkManager.b(NetworkManager.java:282) 
at net.minecraft.server.NetServerHandler.d(NetServerHandler.java:111) 
at net.minecraft.server.ServerConnection.b(SourceFile:35) 
at net.minecraft.server.DedicatedServerConnection.b(SourceFile:30) 
at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:561) 
at net.minecraft.server.DedicatedServer.q(DedicatedServer.java:213) 
at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:474) 
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:406) 
at net.minecraft.server.ThreadServerApplication.run(SourceFile:539) 
Caused by: java.lang.NullPointerException 
at java.io.Reader.<init>(Unknown Source) 
at java.io.InputStreamReader.<init>(Unknown Source) 
at me.storminmormon30.first.main.onCommand(main.java:43) 
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) 
... 15 more 
+0

看樣子你要麼改變了代碼,因爲這個錯誤,或者你沒有上傳整個文件,因爲第43行是一條評論.... – TheJavaCoder16

回答

2

貌似錯誤是在別處: 未處理的異常執行命令'投票'
我沒有看到該命令的片斷,你給

+0

我已經發布了更多的代碼。 – arennaker

0

你應該每個命令拆分到它自己的類,並在plugin.yml註冊代碼,我會做什麼,是在onEnable()方法,設置是這樣的:

getCommand("command").setExecutor(new CommandExecutor());

這將分離出來的所有命令到自己的類,這將更好地工作,我會建議它。

與您的代碼的問題看起來像一個NPE在main類上線43(其在onEnable()法)